Interfacing FT245BM With Ucom
Bernd Walter
ticso at cicely12.cicely.de
Fri Aug 26 09:37:12 GMT 2005
On Fri, Aug 19, 2005 at 08:44:53PM -0700, User Tomdean wrote:
> I am running FreeBSD 5.4, GENERIC.
>
> I have a UMP2 module based on the FTDI FT8U245BM chip, a USB to
> parallel chip. The module in intended to interface processors like
> the AVR or 68HC1x to the USB. I am using the FTDI ATmega16, clocked
> at 16 mHz.
>
> My project will have 3 or 3 bytes put into the USB every 6.0 to 7.8
> uSec or every 11.2 to 12.8 uSec, depending on the degradation of
> precision due to over-clocking the ATMega16 ADC.
>
> Most of the data flow is into FreeBSD. So, I need about 0.75 mBytes
> thruput. Maybe a few bytes per second out of FreeBSD.
>
> The UMP2 is recognized as a ucom device,
>
> vendor 0x0403
> product 0x6001
> release 0x0200
>
> If I 'kldload uftdi', I get uftdi.ko and ucom.ko loaded. Then,
> powering up the UMP2 results in the device being connected. From
> dmesg:
>
> ucom0: FTDI USB HS Serial Converter, rev 1.10/2.00, addr 2
>
> I can connect to the device with tip. But, I cannot disconnect! '~.'
> displays [EOT] but tip does not exit. I can disconnect as root! The
> device is
>
> crw-rw---- 1 uucp dialer 232, 128 Aug 18 04:43 ucom0
>
> When tip is hung,
> # ps
> ...
> 1001 17030 553 0 6 0 1272 728 ttywai IE+ p1 0:00.00 /usr/bin/tip ucom
> 1001 17031 17030 0 -84 0 0 0 - Z+ p1 0:00.00 <defunct>
> ...
There shouldn't be any differences about which user opens the device,
but you may want to retest with 6.0.
PHK did a massivly update on tty-layer, lots of ucom shortcomings have
been identified.
> I have to cycle power on the UMP2 to get tip to exit! And, cycle
> power on the UMP2 to get it recognized again!. Sometimes, it takes
> several minutes before one of the drivers gets in sync with the
> hardware.
>
> BTW, the behavior of tip has changed from a UNIX-style 0x0a to a
> WINDOZE style 0x0d,0x0a to get UNIX display behavior!
>
> I plan to try tip with ucom0 with an echo process in the AVR to just
> return any char received by the UMP2.
>
> Can I get the 0.75 mByte thruput with uftdi driver, accessed thru
> ucom?
Yes - as long a nothing else is using the same USB channel you can
expect rates of up to 1MByte/s.
But you shouldn't expect transmission of injected bytes in less than a
few msec, as tranporting bytes mean starting a new request, which then
get scheduled on the next USB frame - a USB frame is started every 1ms.
In case of the FTDI-chip it is buffered by default for full 10ms unless
the receive buffer of the FTDI gets full.
I asume it is the AVR sending just a few bytes, otherwise you may see
reduced bandwidth because of this.
Ideally you should inject a few hundret bytes at once for transmission
from userland to the USB hardware - don't know how good the tty-code
can cache this problem by buffering.
Your userland application should also read with large requests whenever
possible.
--
B.Walter BWCT http://www.bwct.de
bernd at bwct.de info at bwct.de
More information about the freebsd-usb
mailing list