All Forums
 Microsoft Windows CE
 CE Drivers
 USB drivers for BitsyX (Processor separate work)
 Forum Locked
 Send Topic to a Friend
 Printer Friendly
Author Topic  

Arcnet

23 Posts

Posted - 08 Jul 2003 :  11:33:49  Show Profile  Email Poster
Hello everybody.

We use BitsyX with two processors: XScale and StrongArm ( WinCE 4.1).
We have USB-slave device and want to write driver for it.
In documentation it's written that StrongArm controls USB-host.
Our question is - how we can separate tasks between two processors
that StrongArm will only get stream from USB device, and XScale will process the arrived data ?
Is it possible to do it programmatically ?

Thanks in advance.

akidder

1519 Posts

Posted - 08 Jul 2003 :  15:02:02  Show Profile  Email Poster
Thanks for your post. I believe the "StrongARM" you are referring to is the SA-1111 companion chip, which lies next to the XScale PXA255 on the BitsyX. The SA-1111 does indeed control the USB host port. However, the ADS CE image includes the low-level drivers that handle communication between the XScale and the SA-1111.

Using the Windows CE Device Driver Development Kit (DDK) from Platform Builder, you should be able to write a USB driver that communicates with your device through the USB host port. Contact us if you have questions about how to do this.

(p.s. I've updated the topic title to reflect the USB content of your question.)
Go to Top of Page

Arcnet

23 Posts

Posted - 09 Jul 2003 :  07:09:32  Show Profile  Email Poster
Thank you for reply.
You are rigth - the "StrongArm", I mentioned in my previos post
is SA-1111.
We already wrote driver ( dll ) for our USB device and it works.
To write it we used standard functions for USB transfer, described in
Windows CE Device Driver Development Kit (DDK) from Platform Builder.
Our question is: How to do so that SA-1111 will only execute function calls, get data from USB and store it in some shared memory. And XScale will get this data from the shared memory and process it. In other words how to separete tasks between two processors ???

Thank you.
Go to Top of Page

akidder

1519 Posts

Posted - 09 Jul 2003 :  16:37:02  Show Profile  Email Poster
Thanks for the clarification. I think our drivers already do what you're suggesting. That is, the SA-1111 USB host controller has DMA (direct memory access). The driver moves data directly to and from RAM without intervention from the CPU. The CPU can send blocks of data and can work with blocks of data that have been received.

If you've got performance questions, or you need us to change the drivers to meet specific needs of your application, please feel free to contact us with details about what you need. We're always glad to partner with you to get your product into production!
Go to Top of Page

Arcnet

23 Posts

Posted - 10 Jul 2003 :  12:06:22  Show Profile  Email Poster
Thank you for reply.

Our device use isochronous transfer, and we use the
"IssueIsochTransfer" function to get data stream from it. We use USB analizer from "CATC" to see what flows in the bus.

We also have tested our driver ( the same code ) on "Cassiopeia E-200" ( WinCE 3.0, SA-1110, 206 MHz)

We have some questions about "BitsyX" USB implementation:

1). Parameter 6 in the "IssueIsochTransfer" function is how many USB
frames we get per one function call. "BitsyX" allows up to 13
USB frames ( on "Cassiopeia" up to 11 ).

Is it possible to increase count USB frames per transfer ( one
function call ) ?

2). When we call the "IssueIsochTransfer" function more then once,
we get 6 empty USB frames on "BitsyX" ( 3 on "Cassiopeia" ).

Is it possible to decrease the count of USB empty frames
between frames with data ?

3). Intake and processing data execute in 2 separate processes, so
we thought, that computer with 2 processors will work faster,
but we have the same processing time - in other words when
XScale processes the data taken from shared memory, SA-1111
waits and does not get anything from USB.

Is it possible to organize processors work how, that they will
not wait one another ?

4). It's written in "BitsyX" manual, that XScale can work in 4
modes. How can we run it in the "turbo", the most fast mode ?

"BitsyX" is something completely new for us. Please help us to use it in the most efficient mode.

Thank you in advance.
Go to Top of Page

jbaik

22 Posts

Posted - 10 Jul 2003 :  15:16:41  Show Profile  Email Poster
Q:
1). Parameter 6 in the "IssueIsochTransfer" function is how many USB
frames we get per one function call. "BitsyX" allows up to 13
USB frames ( on "Cassiopeia" up to 11 ).

Is it possible to increase count USB frames per transfer ( one
function call ) ?
A:
IssueIsochTransfer does not limit the number of USB Frames unless memory is unavailable.


Q:
2). When we call the "IssueIsochTransfer" function more then once,
we get 6 empty USB frames on "BitsyX" ( 3 on "Cassiopeia" ).

Is it possible to decrease the count of USB empty frames
between frames with data ?

A:
You can specify the number of frames with sixth argument in the following function:

USB_TRANSFER IssueIsochTransfer(
USB_PIPE hPipe,
LPTRANSFER_NOTIFY_ROUTINE lpStartAddress,
LPVOID lpvNotifyParameter,
DWORD dwFlags,
DWORD dwStartingFrame,
DWORD dwFrames,
LPCDWORD lpdwLengths,
LPVOID lpvBuffer,
ULONG uBufferPhysicalAddress
);


Q:
3). Intake and processing data execute in 2 separate processes, so
we thought, that computer with 2 processors will work faster,
but we have the same processing time - in other words when
XScale processes the data taken from shared memory, SA-1111
waits and does not get anything from USB.

Is it possible to organize processors work how, that they will
not wait one another ?

A:
Don't be confused by the SA1111, which is not processor but a companion chip. All the code you wrote is running on Xscale/StrongARM Processor.

When USB(or any) Data needs to transfer through DMA on the SA1111,
the SA1111 will be the bus master for tansferring data to the device.


Q:
4). It's written in "BitsyX" manual, that XScale can work in 4
modes. How can we run it in the "turbo", the most fast mode ?

A:
To change between "turbo" and "run" modes use the "Turbomode.exe" and "runmode.exe" applications in the device's \Windows Folder.

Go to Top of Page

Arcnet

23 Posts

Posted - 13 Jul 2003 :  03:56:42  Show Profile  Email Poster
Thank you very much for reply.

In "turbo" mode BitsyX works much more faster,

but some things are not completly clear for us.


1). You wrote: "IssueIsochTransfer does not limit the
number of USB Frames unless memory is unavailable."

Please explain, what memory do you mean ?

If you mean the memory of buffer for incoming data
( parameter 8 in "IssueIsochTransfer" function ),
we get with simple "malloc" and it does not return
NULL.

lpvBuffer=(BYTE*) malloc ( dwFrames*wMaxPacketSize );

So we guess we have enough memory for incoming
frames, but if dwFrames >= 14, USB isochronous
transfer does not occur ( we get only empty frames ).


2). About question of empty frames:

When we call the function "IssueIsochTransfer"
sequentially some times: one after another,
we get some USB frames with data ( result from one
function call ), then 5 empty USB frames and again
some USB frames with data ( result of the next
function call ).

Our question is: why between two batches of USB
frames with data we get one batch of empty USB
frames ? On "Cassiopeia E-200" we got 3 empty frames.
Is it possible to decrease the count of empty USB
frames.


3). Now the operating system treats the chips ( XScale
and SA-1111 ) as one processor.

Is it possible to write the driver that will allow
to operating system to treat them as two
processors ?

Thank you in advance.
Go to Top of Page

Arcnet

23 Posts

Posted - 04 Aug 2003 :  02:30:51  Show Profile  Email Poster
hi evrybody
we would like to connect a modem to the BitsyX
please help us
arcnet
Go to Top of Page
  Topic  
 Forum Locked
 Send Topic to a Friend
 Printer Friendly
Jump To:
Eurotech Support Forums © Eurotech Inc. Go To Top Of Page
This page was generated in 0.05 seconds. Snitz Forums 2000