ftdi_sio input hang with FT230X at high baud rate, binary data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm developing firmware for an embedded device which uses an FT230X.
It sends somewhat bursty raw binary data to the host at 3000000 bps.
Presently I'm not sending any data from the host back to the device,
though I'll start doing that shortly.  I'm finding that the input side
of the ftdi_sio driver seems to get stuck after some seemingly random
amount of data has been read.  I'm putting the device in raw mode with
just about everything disabled, and verifying that with stty:

$ stty -a </dev/ttyUSB0
speed 3000000 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>;
eol = <undef>; eol2 = <undef>; swtch = <undef>; start = <undef>; stop = <undef>;
susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>;
flush = <undef>; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0
bs0 vt0 ff0
-isig -icanon -iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

When the input gets stuck, killing the program reading the input and
starting it again resumes the data flow.  This happens whether the
program is cat, od, or my own program.

At first I thought this was some data dependency, and that some
received byte value was being treated as a special character, but I
changed my firmware to just continuously send a 00 through ff
sequence, and it usually manages tor read that entire sequence many
times before the input gets stuck. Also, it doesn't get stuck at a
consistent place in that sequence.

When my firmware does send out 00 through ff at maximum rate, it
usually takes longer for the input to get stuck than if I send the
real application data, which is bursty.

I've tried reducing the data rate to 1500000 or 1000000 bps, but the
same thing happens.

I'm reasonably convinced that the firmware on my embedded device isn't
doing anything wrong, as its TxD line is still transmitting when the
input gets stuck, and it has no feedback whatsoever indicating that
the program on the host has been killed then restarted.  It also seems
to work fine on a Windows host for as long as I let it run.

I'm running Fedora 20 64-bit with kernel 3.15.4-200.

I don't expect anyone to debug this for me, but could use some advice
on how I might go about debugging the problem if it is in the ftdi_sio
driver.  I've worked on other Linux device drivers, but not serial or
USB drivers.

Thanks!
Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux