On 8/17/2023 10:34 AM, Tim Hardisty wrote:
I have concluded that CDC/ACM will NOT play alongside SYSLOG - most likely on the SAMA5D2 device, or possibly just on my board for some reason.

Whatever I choose as the SYSLOG output (/dev/ttyS0, ttyS1, ttyFC0 and ttyFC1 all of which are working fine, or even /dev/null) it just ends up garbling received data from the USB.

I have left CONFIG_CDCACM_NRDREQ=1, disabled SYSLOG and can move forward as this is only needed for the board test jig, so I don't need a TTL->USB converter cable to see output.

Can return to it if anyone has any ideas but, if not, will log both as issues for someone to pick up at some point in the future, maybe.

On 17/08/2023 16:06, Tim Hardisty wrote:
OK...progress.

CDC/ACM console behaves like this if CONFIG_CDCACM_NRDREQS is left at the default 4. It needs a given keyboard key to be pressed 4 times to work, and/or garbles the text sent. I also found that usbserial example app misbehaves in the same way - I thought it was working since random characters were being pressed by me to test it...and received as garbled random characters and I didn't notice.

If set to 1 it works. I do not know why this is.

If this is a bug not some configuration error/mismatch I've not spotted then I will raise it as an issue.

But it doesn't play nicely with syslog...I'm investigating that now.

Certainly you cannot use the console device for syslog because it there is no console device when you use USB for the console output.  Non-console TTYs are not available at power up.  Only the console serial device (if there is one) is initialized in that case.  They do become available later, but after syslog is already been initialized.  So there may be some initialization issue in the way you use it.

I think there is an option to force late syslog initialization, but I can't remember now (and this has probably been redesigned since I wrote it anyway).

When I use a USB console, I normally output syslog to a circular buffer (I forget all of the Kconfig options, but they should not be to hard to find).  Then I enable the  NSH dmesg command.  That will dump the output of the syslog data from the circular buffer to the USB console, clearing the buffer.  Since buffering is available immediately after power up, no boot-up data is lost. You just have to remember to enter the dmesg NSH command periodically.  You can do that with an NSH script running in the background.


Reply via email to