mborgerson
Well-known member
I've made enough progress in my USB Test and Measurement Class (USBTMC) host and device drivers to start the initial hardware testing with one T4.1 host connected to one T4.1 device. My initial tests will skip the implementation of the USBTMC protocol and just transfer packets of variable size at variable rates to establish the USB link bandwidth constraints.
Sometime in the future, I hope to expand the host driver to connect to multiple T4.1 devices connected to a powered hub. A recent post on X by @PaulStroffgen indicates that this should be possible.
USBHost to 3 devices
I have some questions about the multiple device setup:
1. How do the devices enumerate?
2. What is the syntax for defining the multiple devices?
3. Are the connected devices limited by the six available host endpoints (2..7), or does each device get its own set of endpoints?
4. If the three devices are all sending data to the host, how does the host figure out which data comes from which device?
(My first guess is that the host can look at the incoming transfer->Pipe->Device field to figure it out).
5. Can the USB host handle dynamic connection and disconnection of devices?
Multiple devices sending lots of data to the host at once means the host will need separate circular queue buffers for each device to handle potential delays while waiting up to 150-200mSec for SDC writes to complete. I'd like to relieve the user of the buffer management chores by putting buffer management in each device instantiation. That way, there will be less demand on host memory, and the host will just stop reading from the devices while waiting for the SD card. That means that the device code has to handle buffering---but just for itself. That allows each device to use as much DTCM and DMAMEM as needed. Using EXTMEM for device buffers complicates things in that the USB controller can't send data directly from EXTMEM. EXTMEM apparently can't keep up with the DMA requirements for USB transfers.
I'd appreciate any answers you might have to the quesions above.
Sometime in the future, I hope to expand the host driver to connect to multiple T4.1 devices connected to a powered hub. A recent post on X by @PaulStroffgen indicates that this should be possible.
USBHost to 3 devices
I have some questions about the multiple device setup:
1. How do the devices enumerate?
2. What is the syntax for defining the multiple devices?
3. Are the connected devices limited by the six available host endpoints (2..7), or does each device get its own set of endpoints?
4. If the three devices are all sending data to the host, how does the host figure out which data comes from which device?
(My first guess is that the host can look at the incoming transfer->Pipe->Device field to figure it out).
5. Can the USB host handle dynamic connection and disconnection of devices?
Multiple devices sending lots of data to the host at once means the host will need separate circular queue buffers for each device to handle potential delays while waiting up to 150-200mSec for SDC writes to complete. I'd like to relieve the user of the buffer management chores by putting buffer management in each device instantiation. That way, there will be less demand on host memory, and the host will just stop reading from the devices while waiting for the SD card. That means that the device code has to handle buffering---but just for itself. That allows each device to use as much DTCM and DMAMEM as needed. Using EXTMEM for device buffers complicates things in that the USB controller can't send data directly from EXTMEM. EXTMEM apparently can't keep up with the DMA requirements for USB transfers.
I'd appreciate any answers you might have to the quesions above.