Part Number: PROCESSOR-SDK-AM335X
Other Parts Discussed in Thread: CC2531
Tool/software: Linux
Hi,
I am experiencing the following issue on a AM335X based machine. Uname -a reports am335x-evm 4.1.18-gbbe8cfc.
Occasionally the system stops writing to ACMx serial devices successfully, although the handle appearas to be fine as reads complete successfully. The error when the write fails is "resource not available".
Debug code was added before the attempt to call :write(). A call to select() was added, which can be used to indicate if a serial port write will complete successfully. As expected, the system would get into a state where the select would timeout, indicating an attempt to write on the port would fail.
Finally I discovered the TIOCOUTQ ioctl call, which returns the number of bytes in the OS serial write buffer. The application was updated to display the number of bytes in the buffer just before the call to select. Normally the value reported is zero, and everything works fine. Occasionally I would see the following.
> TIOCOUTQ IOCTL Reports 0 bytes in the OS buffer
> Application writes 13 bytes
> TIOCOUTQ IOCTL Reports 1280 (0x500) bytes in the OS buffer.
When the ioctl call returns 1280 the call to select fails.
This value never changed over time, and using tcflush(mPortHndl, TCOFLUSH) does not clear the buffer.
Examining the release notes, i have found a reference to a known issue that may shed some light on this problem, but I am unable to find any detail other than the title.
"LCPD-8636 Serial corruption being seen in kernel".
- Any thoughts?
- Does this behavior sound familiar to anyone?
- How can I access the details of LCPD-8636?
- Any questions for me?
Thanks for your time,
Brandon