Shell/UART (Jlink CDC ADM) RX Issue

Hi All,

I have a project which uses the zephyr shell, but I can reproduce the issue with zephyr/samples/subsys/shell/shell_module or any other sample making use of the UART input functionality sample. The sample appears to run correctly but when I input a character into the serial port (using minicom) it does not register it until the next one is input at which point it will echo the first character. This is only happening on 1 out of my 2 dev kits (nrf52840dk) despite flashing the exact same image. 

This seems to have happened after upgrading the project to Zephyr 2.7.0 which had some USB changes, I had to fumble a bit with the settings (switching between UART & USB CDC) to get it building and running again.  But even when I downgrade to a previous version of nRF Connect SDK ( with Zephyr 2.6.99 which worked) it does not recover.

I have tried multiple PCs, and cables but I am unable to track down the configuration option but it seems like there is something persistent on one of the devices (perhaps in the Jlink driver?). I have tried to do `nrfjprog -e` on the affected device, even flashed the RSSI FW before switching back but still unable to fix this. I've gone into the SEGGER J-flash interface and erased everything also. Does any one have advice on what I can do to remedy this issue?

Parents
  • I checked with a logic analyzer, using an FTDI -> uart1 it works perfectly fine. The jlink ACM (uart0), however, fails to send the first character correctly. Seems the issue is with Jlink? I am sending the data using the exact same command to both interfaces python -c "import serial; s = serial.Serial('/dev/ttyACM0', baudrate=115200); s.write(b'help\r')"

    FTDI -> uart1

    Jlink ACM -> uart0

Reply
  • I checked with a logic analyzer, using an FTDI -> uart1 it works perfectly fine. The jlink ACM (uart0), however, fails to send the first character correctly. Seems the issue is with Jlink? I am sending the data using the exact same command to both interfaces python -c "import serial; s = serial.Serial('/dev/ttyACM0', baudrate=115200); s.write(b'help\r')"

    FTDI -> uart1

    Jlink ACM -> uart0

Children
No Data
Related