This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3354: UART1/2 insert 0 randomly

Part Number: AM3354


Tool/software:

Linux SDK7.03.00.005. 

/cfs-file/__key/communityserver-discussions-components-files/791/am335x_2D00_evmsk_2D00_cm.dts

On customer's system used 6 UARTs from 0-5, UART0 as console, UART2 at 460800bps, all other UART at 115200bps.

Test method:

#1. Connect UART1 with UART3, UART4 with UART5 at 115200bps.  UART2 TX to RX at 460800bps. 

#2. UART2 at 460800bps, other UART at 115200bps,  all short TX to RX on itself. 

test about 10s, on UART1 and UART2 have extra 0 data, the test code will stop when detect error data.

#1. Same hardware, same test method, no such issue on SDK2.1 with Kernel 4.1 and SDK 1.0.0.3 with Kernel 3.2 

#2. The error relate to UART port count:

  • If only test with 4 UART1-4, test 30s with 10 round, no issue.
  • Test with 5 UART1-5, test 30s, test 10 round, 6 round have extra 0.
  • only test UART2 at 460800, test 10 round, no issue.

UART 1 and UART 2 configured DMA in SDK default am33xx-l4.dtsi.

  • Hi Tony,

    Thanks for the detailed report.

    Is kernel UART driver 8250_omap.c is used instead of omap-serial.c?

    Did the customer run serialstats command on these UART ports to see if there is any error?

    What is the data/pattern transmitted on the UART? I'd like to see if I can reproduce the issue.

  • Is kernel UART driver 8250_omap.c is used instead of omap-serial.c?

    Yes,my config is:
    #CONFIG_SERIAL_OMAP is not set
    CONFIG_SERIAL_8250_OMAP=y

    Did the customer run serialstats command on these UART ports to see if there is any error?

    Don't see serialstats in filesystem, but run command "cat/proc/tty/driver/serial" after error occurred, can see the value of OE (overrun error) increase.

    What is the data/pattern transmitted on the UART? I'd like to see if I can reproduce the issue

    the data transmitted consist of two packet types, with size of 15 and 14 bytes, the format is 8n1, attach the test code, it is easy to reproduce on Kernel V5.4.
    /cfs-file/__key/communityserver-discussions-components-files/791/5381.uart_5F00_test.zip

  • Don't see serialstats in filesystem, but run command "cat/proc/tty/driver/serial" after error occurred, can see the value of OE (overrun error) increase.

    Which UART port has the OE error, The TX port or the RX port?

    UART 1 and UART 2 configured DMA in SDK default am33xx-l4.dtsi.

    Has the customer tried to remove the DMA config to see if the issue still happens?

  • Hi Bin Liu,

    Which UART port has the OE error, The TX port or the RX port?

    I cannot determine whether the error occurred on TX or RX,"cat/proc/tty/driver/serial"  log likes:
    1: uart:8250 mmio:0x48024000 irq:35 tx:2450000 rx:2450000 oe:43  RTS|CTS|DTR|DSR

    Has the customer tried to remove the DMA config to see if the issue still happens?

    After removing DMA config,I tested five times without any errors. On the sixth test, The Linux system encountered an error, but there was no log output and both the serial port and telnet became unresponsive

  • Hi Xing,

    After removing DMA config,I tested five times without any errors.

    It seems like disabling DMA is the way to go.

    On the sixth test, The Linux system encountered an error, but there was no log output and both the serial port and telnet became unresponsive

    Does the board has JTAG so that you can connect CCS to see what is happening?

    Can you please try with the SDK9.1 kernel without UART DMA to see if it has any issue?

    Test with 5 UART0-4, test 30s, test 10 round, 6 round have extra 0.

    In this test, do you do anything on UART0? It is the Linux console, I assume you don't do the loopback test on this port, right?

  • Hi Bin,

    After removing DMA config and test more iterations, find the system is easy to hang during test, no error log, no response in console, no log upon Ethernet cable disconnect and connect . Do you have a uarts test report for the SDK7.03.00.005 release? 

    Does the board has JTAG so that you can connect CCS to see what is happening?

    I need some time to set up the environment.

    Can you please try with the SDK9.1 kernel without UART DMA to see if it has any issue?

    Ok,I will have a try

    In this test, do you do anything on UART0? It is the Linux console, I assume you don't do the loopback test on this port, right?

    Yes,Actually, the serial ports are uart1~uart5 in my uart test without uart0(debug Console, Tony corrected the UART port number on the first post),you can see my test code /cfs-file/__key/communityserver-discussions-components-files/791/5381.uart_5F00_test.zip

  • Hi Xing,

    After removing DMA config and test more iterations, find the system is easy to hang during test, no error log, no response in console, no log upon Ethernet cable disconnect and connect .

    It seems like the UART console hangs, but I am not sure why.

    Instead of your uart test program, can you please try to use "serialcheck" program provided in the SDK rootfs to see if the problem still happens?

    Do you have a uarts test report for the SDK7.03.00.005 release? 

    The SDK doesn't have a test report for multiple UARTs running at the same time.

    Ok,I will have a try

    Looking forward to the test report.

  • Hi Bin,

    Instead of your uart test program, can you please try to use "serialcheck" program provided in the SDK rootfs to see if the problem still happens?

    SDK7.03.00.005 (V5.4)

    1.Without uart dma:

    Each serial port has issues by using serialcheck, log:

    root@am335x-evm:~# dd if=/dev/urandom of=uart1 count=1 bs=350000
    root@am335x-evm:~# dd if=/dev/urandom of=uart2 count=1 bs=350000
    root@am335x-evm:~# dd if=/dev/urandom of=uart3 count=1 bs=350000
    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS1 -f ./uart1 -l 5 -m r -k
    
    timeout, RX/TX: 0/0
    Needed 0 reads 0 writes Oh oh, inconsistency at pos 0 (0x0).
    
    Original sample:
    00000000: a4 6c 15 09 77 20 8b 64  a5 f5 a9 b1 98 b0 02 f8   .l..w .d........
    00000010: 83 09 d4 18 66 54 4a 18  be ee 03 86 05 3d 56 b1   ....fTJ......=V.
    00000020: 0a 49 c1 e9 8e 8a ca c7  ce 37 63 83 f0 4b e9 91   .I.......7c..K..
    
    Received sample:
    00000000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
    00000010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
    00000020: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
    loops 1 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 0 tx: 0 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    
    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS1 -f ./uart1 -l 5 -m d -k
    
    timeout, RX/TX: 339978/350000
    Needed 90 reads 1 writes Oh oh, inconsistency at pos 4017 (0xfb1).
    
    Original sample:
    00000f80: cb 75 5e 10 b4 ed 5d ed  fd 97 02 19 68 23 2d f0   .u^...].....h#-.
    00000f90: a0 ee ae b4 f6 fd d6 75  36 57 77 24 5b 3c 57 58   .......u6Ww$[<WX
    00000fa0: 77 a2 2a 09 13 74 c1 ba  9f a3 b1 83 a5 d9 d0 ab   w.*..t..........
    00000fb0: 48 92 7f 8d c1 3e bb a4  77 04 53 28 b0 4b d3 2d   H....>..w.S(.K.-
    00000fc0: 7e 38 aa 48 a8 30 4a a7  8f 8c 09 63 0c bf 11 47   ~8.H.0J....c...G
    00000fd0: cf 0f 79 86 69 c8 50 3f  6d 17 bd 6a 78 d3 bf af   ..y.i.P?m..jx...
    
    Received sample:
    00000f80: cb 75 5e 10 b4 ed 5d ed  fd 97 02 19 68 23 2d f0   .u^...].....h#-.
    00000f90: a0 ee ae b4 f6 fd d6 75  36 57 77 24 5b 3c 57 58   .......u6Ww$[<WX
    00000fa0: 77 a2 2a 09 13 74 c1 ba  9f a3 b1 83 a5 d9 d0 ab   w.*..t..........
    00000fb0: 48 00 92 7f 8d c1 3e bb  a4 77 04 53 28 b0 4b d3   H.....>..w.S(.K.
    00000fc0: 2d 7e 38 aa 48 a8 30 4a  a7 8f 8c 09 63 0c bf 11   -~8.H.0J....c...
    00000fd0: 47 cf 0f 79 86 69 c8 50  3f 6d 17 bd 6a 78 d3 bf   G..y.i.P?m..jx..
    loops 1 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 344722 tx: 350000 frame 0 ovr 5278 par: 0 brk: 0 buf_ovrr: 10022
    
    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS2 -f ./uart2 -l 5 -m d -k
    
    timeout, RX/TX: 339920/350000
    Needed 89 reads 1 writes Oh oh, inconsistency at pos 4017 (0xfb1).
    
    Original sample:
    00000f80: 2e ec 0c c7 b9 a7 3a de  95 95 c7 87 9b c9 c6 3b   ......:........;
    00000f90: 90 f5 ae 7f 2d fa f3 06  d8 50 fd c0 b6 b1 c7 8a   ....-....P......
    00000fa0: b9 87 41 ab 7a d6 07 f0  2e ac a4 3e 35 f3 e7 53   ..A.z......>5..S
    00000fb0: d5 c8 ff 2b aa 1f bd 24  cf 7f 37 0b af 4a 63 d8   ...+...$..7..Jc.
    00000fc0: 5e 30 a2 ea fb e8 17 d3  d7 7b 9d 5b 10 ff 4a 3f   ^0.......{.[..J?
    00000fd0: db 3a 9b 64 94 00 18 0e  84 e4 46 19 86 2a eb 7f   .:.d......F..*..
    
    Received sample:
    00000f80: 2e ec 0c c7 b9 a7 3a de  95 95 c7 87 9b c9 c6 3b   ......:........;
    00000f90: 90 f5 ae 7f 2d fa f3 06  d8 50 fd c0 b6 b1 c7 8a   ....-....P......
    00000fa0: b9 87 41 ab 7a d6 07 f0  2e ac a4 3e 35 f3 e7 53   ..A.z......>5..S
    00000fb0: d5 00 c8 ff 2b aa 1f bd  24 cf 7f 37 0b af 4a 63   ....+...$..7..Jc
    00000fc0: d8 5e 30 a2 ea fb e8 17  d3 d7 7b 9d 5b 10 ff 4a   .^0.......{.[..J
    00000fd0: 3f db 3a 9b 64 94 00 18  0e 84 e4 46 19 86 2a eb   ?.:.d......F..*.
    loops 1 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 344722 tx: 350000 frame 0 ovr 5278 par: 0 brk: 0 buf_ovrr: 10080
    
    

    2.Uart dma:

    uart1\2 pass ,but uart3~5 failed,log:

    root@am335x-evm:/run/media/mmcblk0p3# serialcheck -b 115200 -d /dev/ttyS1 -f ./uart1 -l 5 -m d -k
    Needed 106 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    root@am335x-evm:/run/media/mmcblk0p3# serialcheck -b 460800 -d /dev/ttyS2 -f ./uart1 -l 5 -m d -k
    Needed 100 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    root@am335x-evm:/run/media/mmcblk0p3# serialcheck -b 115200 -d /dev/ttyS3 -f ./uart1 -l 5 -m d -k
    
    timeout, RX/TX: 339921/350000
    Needed 90 reads 1 writes Oh oh, inconsistency at pos 4017 (0xfb1).
    
    Original sample:
    00000f80: cb 75 5e 10 b4 ed 5d ed  fd 97 02 19 68 23 2d f0   .u^...].....h#-.
    00000f90: a0 ee ae b4 f6 fd d6 75  36 57 77 24 5b 3c 57 58   .......u6Ww$[<WX
    00000fa0: 77 a2 2a 09 13 74 c1 ba  9f a3 b1 83 a5 d9 d0 ab   w.*..t..........
    00000fb0: 48 92 7f 8d c1 3e bb a4  77 04 53 28 b0 4b d3 2d   H....>..w.S(.K.-
    00000fc0: 7e 38 aa 48 a8 30 4a a7  8f 8c 09 63 0c bf 11 47   ~8.H.0J....c...G
    00000fd0: cf 0f 79 86 69 c8 50 3f  6d 17 bd 6a 78 d3 bf af   ..y.i.P?m..jx...
    
    Received sample:
    00000f80: cb 75 5e 10 b4 ed 5d ed  fd 97 02 19 68 23 2d f0   .u^...].....h#-.
    00000f90: a0 ee ae b4 f6 fd d6 75  36 57 77 24 5b 3c 57 58   .......u6Ww$[<WX
    00000fa0: 77 a2 2a 09 13 74 c1 ba  9f a3 b1 83 a5 d9 d0 ab   w.*..t..........
    00000fb0: 48 00 92 7f 8d c1 3e bb  a4 77 04 53 28 b0 4b d3   H.....>..w.S(.K.
    00000fc0: 2d 7e 38 aa 48 a8 30 4a  a7 8f 8c 09 63 0c bf 11   -~8.H.0J....c...
    00000fd0: 47 cf 0f 79 86 69 c8 50  3f 6d 17 bd 6a 78 d3 bf   G..y.i.P?m..jx..
    loops 1 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 344722 tx: 350000 frame 0 ovr 5278 par: 0 brk: 0 buf_ovrr: 10079
    root@am335x-evm:/run/media/mmcblk0p3# serialcheck -b 115200 -d /dev/ttyS4 -f ./uart1 -l 5 -m d -k
    
    timeout, RX/TX: 339920/350000
    Needed 89 reads 1 writes Oh oh, inconsistency at pos 4017 (0xfb1).
    
    Original sample:
    00000f80: cb 75 5e 10 b4 ed 5d ed  fd 97 02 19 68 23 2d f0   .u^...].....h#-.
    00000f90: a0 ee ae b4 f6 fd d6 75  36 57 77 24 5b 3c 57 58   .......u6Ww$[<WX
    00000fa0: 77 a2 2a 09 13 74 c1 ba  9f a3 b1 83 a5 d9 d0 ab   w.*..t..........
    00000fb0: 48 92 7f 8d c1 3e bb a4  77 04 53 28 b0 4b d3 2d   H....>..w.S(.K.-
    00000fc0: 7e 38 aa 48 a8 30 4a a7  8f 8c 09 63 0c bf 11 47   ~8.H.0J....c...G
    00000fd0: cf 0f 79 86 69 c8 50 3f  6d 17 bd 6a 78 d3 bf af   ..y.i.P?m..jx...
    
    Received sample:
    00000f80: cb 75 5e 10 b4 ed 5d ed  fd 97 02 19 68 23 2d f0   .u^...].....h#-.
    00000f90: a0 ee ae b4 f6 fd d6 75  36 57 77 24 5b 3c 57 58   .......u6Ww$[<WX
    00000fa0: 77 a2 2a 09 13 74 c1 ba  9f a3 b1 83 a5 d9 d0 ab   w.*..t..........
    00000fb0: 48 00 92 7f 8d c1 3e bb  a4 77 04 53 28 b0 4b d3   H.....>..w.S(.K.
    00000fc0: 2d 7e 38 aa 48 a8 30 4a  a7 8f 8c 09 63 0c bf 11   -~8.H.0J....c...
    00000fd0: 47 cf 0f 79 86 69 c8 50  3f 6d 17 bd 6a 78 d3 bf   G..y.i.P?m..jx..
    loops 1 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 344721 tx: 350000 frame 0 ovr 5279 par: 0 brk: 0 buf_ovrr: 10080
    root@am335x-evm:/run/media/mmcblk0p3# serialcheck -b 115200 -d /dev/ttyS5 -f ./uart1 -l 5 -m d -k
    timeout, RX/TX: 339917/350000
    Needed 90 reads 1 writes Oh oh, inconsistency at pos 4017 (0xfb1).
    
    Original sample:
    00000f80: cb 75 5e 10 b4 ed 5d ed  fd 97 02 19 68 23 2d f0   .u^...].....h#-.
    00000f90: a0 ee ae b4 f6 fd d6 75  36 57 77 24 5b 3c 57 58   .......u6Ww$[<WX
    00000fa0: 77 a2 2a 09 13 74 c1 ba  9f a3 b1 83 a5 d9 d0 ab   w.*..t..........
    00000fb0: 48 92 7f 8d c1 3e bb a4  77 04 53 28 b0 4b d3 2d   H....>..w.S(.K.-
    00000fc0: 7e 38 aa 48 a8 30 4a a7  8f 8c 09 63 0c bf 11 47   ~8.H.0J....c...G
    00000fd0: cf 0f 79 86 69 c8 50 3f  6d 17 bd 6a 78 d3 bf af   ..y.i.P?m..jx...
    
    Received sample:
    00000f80: cb 75 5e 10 b4 ed 5d ed  fd 97 02 19 68 23 2d f0   .u^...].....h#-.
    00000f90: a0 ee ae b4 f6 fd d6 75  36 57 77 24 5b 3c 57 58   .......u6Ww$[<WX
    00000fa0: 77 a2 2a 09 13 74 c1 ba  9f a3 b1 83 a5 d9 d0 ab   w.*..t..........
    00000fb0: 48 00 92 7f 8d c1 3e bb  a4 77 04 53 28 b0 4b d3   H.....>..w.S(.K.
    00000fc0: 2d 7e 38 aa 48 a8 30 4a  a7 8f 8c 09 63 0c bf 11   -~8.H.0J....c...
    00000fd0: 47 cf 0f 79 86 69 c8 50  3f 6d 17 bd 6a 78 d3 bf   G..y.i.P?m..jx..
    loops 1 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 344721 tx: 350000 frame 0 ovr 5279 par: 0 brk: 0 buf_ovrr: 10083

  • Hi Xing,

    Please don't use '-k' with serialcheck. It enables UART internal loopback, which is not for your test. I never used the internal lookback and am not sure why it generates the tx/rx errors in your tests though.

  • Hi Bin,

    I'm sorry for the delayed response.

    Please don't use '-k' with serialcheck. It enables UART internal loopback, which is not for your test. I never used the internal lookback and am not sure why it generates the tx/rx errors in your tests though.

    Without '-k',the serialcheck will quickly produce an error.

    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS1 -f ./uart1 -l 5 -m r
    
    timeout, RX/TX: 0/0
    Needed 0 reads 0 writes Oh oh, inconsistency at pos 0 (0x0).
    
    Original sample:
    00000000: a4 6c 15 09 77 20 8b 64  a5 f5 a9 b1 98 b0 02 f8   .l..w .d........
    00000010: 83 09 d4 18 66 54 4a 18  be ee 03 86 05 3d 56 b1   ....fTJ......=V.
    00000020: 0a 49 c1 e9 8e 8a ca c7  ce 37 63 83 f0 4b e9 91   .I.......7c..K..
    
    Received sample:
    00000000: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
    00000010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
    00000020: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
    loops 1 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 0 tx: 0 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0

    Below is my uart connection

    Looking forward to the test report.

    I've encountered a few boot issues on the 5.10 and 6.1 kernels, and resolving them will require some time.If you have some spare time, maybe you could assist me.
    e2e.ti.com/.../am3354-unhandled-fault-external-abort-on-non-linefetch-0x1028-at-0xf9e3e074

  • Hi Xing,

    Without '-k',the serialcheck will quickly produce an error.

    We will look into this if it also happens with SDK6.1 kernel.

    I've encountered a few boot issues on the 5.10 and 6.1 kernels, and resolving them will require some time.If you have some spare time, maybe you could assist me.
    e2e.ti.com/.../am3354-unhandled-fault-external-abort-on-non-linefetch-0x1028-at-0xf9e3e074

    I have posted a kernel patch in the thread to disable RTC. Please let me know if you can boot into Linux with this patch and run your UART test with 6.1 kernel.

  • Hi Bin,

    I encountered issues related to eMMC and networking while upgrading the kernel from version 5.4 to 6.1, so requested a public board from Tony Tang to  verify this issue,and reproduced the same uart issue on the public board(kernel V6.1).

    #1 Use serialcheck  to test every uart,it is fine.

    root@am335x-evm:~# serialcheck -b 460800 -d /dev/ttyS2 -f ./uart1 -l 5 -m d
    Needed 93 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    root@am335x-evm:~# serialcheck -b 460800 -d /dev/ttyS3 -f ./uart1 -l 5 -m d
    Needed 86 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    root@am335x-evm:~# serialcheck -b 460800 -d /dev/ttyS4 -f ./uart1 -l 5 -m d
    Needed 86 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0

    #2 Use serialcheck to test three uarts at the same time,it is failed

    root@am335x-evm:~# serialcheck -b 460800 -d /dev/ttyS2 -f ./uart1 -l 5 -m d&
    [1] 638
    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS3 -f ./uart1 -l 5 -m d&
    [2] 639
    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS4 -f ./uart1 -l 5 -m d&
    [3] 640
    root@am335x-evm:~# Needed 90 reads 1 writes loops 1 / 5
    Needed 90 reads 1 writes loops 3 / 5
    
    timeout, RX/TX: 349998/350000
    Needed 93 reads 1 writes Oh oh, inconsistency at pos 255016 (0x3e428).
    
    Original sample:
    0003e3f0: a6 98 2f 79 09 d5 8e ee  5a bc 0b d1 ea 7c d7 0c   ../y....Z....|..
    0003e400: 75 90 b5 0d af 5a b7 68  6b 08 32 ed a1 e1 4b a0   u....Z.hk.2...K.
    0003e410: ed 92 58 49 5f d3 8f 91  ab 52 b5 60 66 4b 7d 3f   ..XI_....R.`fK}?
    0003e420: c6 7f 6d f5 32 8c 8d 0d  0a 70 39 87 49 81 fb 62   ..m.2....p9.I..b
    0003e430: 02 31 2a 30 d3 e9 d9 0f  52 a7 ef 34 66 08 e3 72   .1*0....R..4f..r
    0003e440: 4e 18 09 f5 24 f2 14 f3  5a e3 25 05 b6 ea 96 df   N...$...Z.%.....
    
    Received sample:
    0003e3f0: a6 98 2f 79 09 d5 8e ee  5a bc 0b d1 ea 7c d7 0c   ../y....Z....|..
    0003e400: 75 90 b5 0d af 5a b7 68  6b 08 32 ed a1 e1 4b a0   u....Z.hk.2...K.
    0003e410: ed 92 58 49 5f d3 8f 91  ab 52 b5 60 66 4b 7d 3f   ..XI_....R.`fK}?
    0003e420: c6 7f 6d f5 32 8c 8d 0d  00 0a 70 39 87 49 81 fb   ..m.2.....p9.I..
    0003e430: 62 02 31 2a 30 d3 e9 d9  0f 52 a7 ef 34 66 08 e3   b.1*0....R..4f..
    0003e440: 72 4e 18 09 f5 24 f2 14  f3 5a e3 25 05 b6 ea 96   rN...$...Z.%....
    loops 1 / 5
    
    Needed 91 reads 1 writes loops 5 / 5
    Needed 91 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 

    #3 Use my uart test program,it is failed too

    root@am335x-evm:~# ./serial_test 
    set baudrate 4100 460800 done!
    /dev/ttyS2 0
    set baudrate 4098 115200 done!
    /dev/ttyS3 1
    set baudrate 4098 115200 done!
    /dev/ttyS4 2
    [ 1164.601213] omap_intc_handle_irq: spurious irq!
    0 read error timestamp 946687458 recv_cnt 19489 rx_buffer[0]=0x00 Packet[1] is 0x4
    0 send end time 946687465 pack 25000 error times 716 spend 7 s
    2 send end time 946687488 pack 25000 error times 2934 spend 30 s
    1 send end time 946687488 pack 25000 error times 2933 spend 30 s
    2 rec end time 946687488 receive 350000
    1 rec end time 946687488 receive 350000

    In fact, I configured four serial ports, but ttyS1 failed to initialize,so I only use three uarts to test, it is my dts

    // SPDX-License-Identifier: GPL-2.0-only
    /*
     * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /*
     * AM335x Starter Kit
     * http://www.ti.com/tool/tmdssk3358
     */
    
    /dts-v1/;
    
    #include "am33xx.dtsi"
    #include <dt-bindings/pwm/pwm.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
        model = "TI AM335x EVM-SK";
    	compatible = "ti,am335x-evmsk", "ti,am33xx";
    
    	cpus {
    		cpu@0 {
    			cpu0-supply = <&vdd1_reg>;
    		};
    	};
    
    	memory@80000000 {
    		device_type = "memory";
    		reg = <0x80000000 0x10000000>; /* 256 MB */
    	};
    
    	aliases {
    		serial0 = &uart0;
    		serial1 = &pruss_uart;
    	};
    
    	chosen {
    		stdout-path = &uart0;
    	};
    
    	vbat: fixedregulator0 {
    		compatible = "regulator-fixed";
    		regulator-name = "vbat";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		regulator-boot-on;
    	};
    
    	lis3_reg: fixedregulator1 {
    		compatible = "regulator-fixed";
    		regulator-name = "lis3_reg";
    		regulator-boot-on;
    	};
    	
    	wl12xx_vmmc: fixedregulator2 {
    		pinctrl-names = "default";
    		pinctrl-0 = <&wl12xx_gpio>;
    		compatible = "regulator-fixed";
    		regulator-name = "vwl1271";
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    		gpio = <&gpio1 29 0>;
    		startup-delay-us = <70000>;
    		enable-active-high;
    	};
    
    	vtt_fixed: fixedregulator3 {
    		compatible = "regulator-fixed";
    		regulator-name = "vtt";
    		regulator-min-microvolt = <1500000>;
    		regulator-max-microvolt = <1500000>;
    		gpio = <&gpio0 7 GPIO_ACTIVE_HIGH>;
    		regulator-always-on;
    		regulator-boot-on;
    		enable-active-high;
    	};
    	
    	/* TPS79518 */
    	v1_8d_reg: fixedregulator-v1_8d {
    		compatible = "regulator-fixed";
    		regulator-name = "v1_8d";
    		vin-supply = <&vbat>;
    		regulator-min-microvolt = <1800000>;
    		regulator-max-microvolt = <1800000>;
    	};
    
    	/* TPS78633 */
    	v3_3d_reg: fixedregulator-v3_3d {
    		compatible = "regulator-fixed";
    		regulator-name = "v3_3d";
    		vin-supply = <&vbat>;
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    	};
    	
    	leds {
    		pinctrl-names = "default";
    		pinctrl-0 = <&user_leds_s0>;
    
    		compatible = "gpio-leds";
    
    		led1 {
    			label = "evmsk:green:usr0";
    			gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led2 {
    			label = "evmsk:green:usr1";
    			gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
    			default-state = "off";
    		};
    
    		led3 {
    			label = "evmsk:green:mmc0";
    			gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "mmc0";
    			default-state = "off";
    		};
    
    		led4 {
    			label = "evmsk:green:heartbeat";
    			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			default-state = "off";
    		};
    	};
    	
    	gpio_buttons: gpio_buttons0 {
    		compatible = "gpio-keys";
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		switch1 {
    			label = "button0";
    			linux,code = <0x100>;
    			gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
    		};
    
    		switch2 {
    			label = "button1";
    			linux,code = <0x101>;
    			gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
    		};
    
    		switch3 {
    			label = "button2";
    			linux,code = <0x102>;
    			gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
    			wakeup-source;
    		};
    
    		switch4 {
    			label = "button3";
    			linux,code = <0x103>;
    			gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
    		};
    	};
    	
    	lcd_bl: backlight {
    		compatible = "pwm-backlight";
    		pwms = <&ecap2 0 50000 PWM_POLARITY_INVERTED>;
    		brightness-levels = <0 58 61 66 75 90 125 170 255>;
    		default-brightness-level = <8>;
    	};
    
    	sound {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "AM335x-EVMSK";
    		simple-audio-card,widgets =
    			"Headphone", "Headphone Jack";
    		simple-audio-card,routing =
    			"Headphone Jack",	"HPLOUT",
    			"Headphone Jack",	"HPROUT";
    		simple-audio-card,format = "dsp_b";
    		simple-audio-card,bitclock-master = <&sound_master>;
    		simple-audio-card,frame-master = <&sound_master>;
    		simple-audio-card,bitclock-inversion;
    
    		simple-audio-card,cpu {
    			sound-dai = <&mcasp1>;
    		};
    
    		sound_master: simple-audio-card,codec {
    			sound-dai = <&tlv320aic3106>;
    			system-clock-frequency = <24000000>;
    		};
    	};
    
    	panel {
    		compatible = "newhaven,nhd-4.3-480272ef-atxl";
    
    		pinctrl-names = "default", "sleep";
    		pinctrl-0 = <&lcd_pins_default>;
    		pinctrl-1 = <&lcd_pins_sleep>;
    		backlight = <&lcd_bl>;
    
    		port {
    			panel_0: endpoint@0 {
    				remote-endpoint = <&lcdc_0>;
    			};
    		};
    	};
    };
    
    &am33xx_pinmux {
    	pinctrl-names = "default";
    	pinctrl-0 = <&gpio_keys_s0 &clkout2_pin>;
    
    	lcd_pins_default: lcd_pins_default {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD8, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad8.lcd_data23 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD9, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad9.lcd_data22 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD10, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad10.lcd_data21 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD11, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad11.lcd_data20 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad12.lcd_data19 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad13.lcd_data18 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad14.lcd_data17 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_OUTPUT, MUX_MODE1)	/* gpmc_ad15.lcd_data16 */
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT, MUX_MODE0)
    		>;
    	};
    	
    		lcd_pins_sleep: lcd_pins_sleep {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD8, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad8.lcd_data23 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD9, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad9.lcd_data22 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD10, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad10.lcd_data21 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD11, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad11.lcd_data20 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad12.lcd_data19 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad13.lcd_data18 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad14.lcd_data17 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad15.lcd_data16 */
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PULL_DISABLE, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)
    		>;
    	};
    	
    	user_leds_s0: user_leds_s0 {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD4, PIN_OUTPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad4.gpio1_4 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD5, PIN_OUTPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad5.gpio1_5 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD6, PIN_OUTPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad6.gpio1_6 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD7, PIN_OUTPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ad7.gpio1_7 */
    		>;
    	};
    	
    	gpio_keys_s0: gpio_keys_s0 {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_GPMC_OEN_REN, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_oen_ren.gpio2_3 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_ADVN_ALE, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_advn_ale.gpio2_2 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_WAIT0, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_wait0.gpio0_30 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_BEN0_CLE, PIN_INPUT_PULLDOWN, MUX_MODE7)	/* gpmc_ben0_cle.gpio2_5 */
    		>;
    	};
    	
    	i2c0_pins: pinmux_i2c0_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_I2C0_SDA, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_I2C0_SCL, PIN_INPUT_PULLUP, MUX_MODE0)
    		>;
    	};
    	
    	uart0_pins: pinmux_uart0_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_UART0_RXD, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_UART0_TXD, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    		>;
    	};
    	
    	uart1_pins_default: pinmux_uart1_pins_default {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_UART1_RXD, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_UART1_TXD, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
    		>;
    	};
    
    	uart2_pins_default: pinmux_uart2_pins_default {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_SPI0_SCLK, PIN_INPUT_PULLUP, MUX_MODE1)
    			AM33XX_PADCONF(AM335X_PIN_SPI0_D0, PIN_OUTPUT_PULLDOWN, MUX_MODE1)
    		>;
    	};
    
    	uart3_pins_default: pinmux_uart3_pins_default {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLUP, MUX_MODE1)
    			AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_OUTPUT_PULLDOWN, MUX_MODE1)
    		>;
    	};
    	
    	uart4_pins_default: pinmux_uart4_pins_default {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_INPUT_PULLUP, MUX_MODE3)
    			AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
    		>;
    	};
    	
    	clkout2_pin: pinmux_clkout2_pin {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR1, PIN_OUTPUT_PULLDOWN, MUX_MODE3)	/* xdma_event_intr1.clkout2 */
    		>;
    	};
    
    	ecap2_pins: backlight_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, 0x0, MUX_MODE4)	/* mcasp0_ahclkr.ecap2_in_pwm2_out */
    		>;
    	};
    
    	cpsw_default: cpsw_default {
    		pinctrl-single,pins = <
    			/* Slave 1 */
    			
    				/* Slave 2 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A0, PIN_OUTPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a0.rgmii2_tctl */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A1, PIN_INPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a1.rgmii2_rctl */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A2, PIN_OUTPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a2.rgmii2_td3 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A3, PIN_OUTPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a3.rgmii2_td2 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_OUTPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a4.rgmii2_td1 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_OUTPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a5.rgmii2_td0 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A6, PIN_OUTPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a6.rgmii2_tclk */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A7, PIN_INPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a7.rgmii2_rclk */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A8, PIN_INPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a8.rgmii2_rd3 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_INPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a9.rgmii2_rd2 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a10.rgmii2_rd1 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLDOWN, MUX_MODE2)	/* gpmc_a11.rgmii2_rd0 */
    		>;
    	};
    
        cpsw_sleep: cpsw_sleep {
    		pinctrl-single,pins = <
    			/* Slave 1 reset value */
    			
    				/* Slave 2 reset value*/
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A0, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A1, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A2, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A3, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A6, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A7, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A8, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLDOWN, MUX_MODE7)
    		>;
    	};
    	
    	davinci_mdio_default: davinci_mdio_default {
    		pinctrl-single,pins = <
    			/* MDIO */
    			AM33XX_PADCONF(AM335X_PIN_MDIO, PIN_INPUT_PULLUP | SLEWCTRL_FAST, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MDC, PIN_OUTPUT_PULLUP, MUX_MODE0)
    		>;
    	};
    
    	davinci_mdio_sleep: davinci_mdio_sleep {
    		pinctrl-single,pins = <
    			/* MDIO reset value */
    			AM33XX_PADCONF(AM335X_PIN_MDIO, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_MDC, PIN_INPUT_PULLDOWN, MUX_MODE7)
    		>;
    	};
    	
    	mmc1_pins: pinmux_mmc1_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_SPI0_CS1, PIN_INPUT, MUX_MODE7) 		/* spi0_cs1.gpio0_6 */
    			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT0, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT1, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT2, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT3, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MMC0_CMD, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MMC0_CLK, PIN_INPUT_PULLUP, MUX_MODE0)
    			AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKR, PIN_INPUT, MUX_MODE4)		/* mcasp0_aclkr.mmc0_sdwp */
    		>;
    	};
    	
    	mcasp1_pins: mcasp1_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_MII1_CRS, PIN_INPUT_PULLDOWN, MUX_MODE4) /* mii1_crs.mcasp1_aclkx */
    			AM33XX_PADCONF(AM335X_PIN_MII1_RX_ER, PIN_INPUT_PULLDOWN, MUX_MODE4) /* mii1_rxerr.mcasp1_fsx */
    			AM33XX_PADCONF(AM335X_PIN_MII1_COL, PIN_OUTPUT_PULLDOWN, MUX_MODE4) /* mii1_col.mcasp1_axr2 */
    			AM33XX_PADCONF(AM335X_PIN_RMII1_REF_CLK, PIN_INPUT_PULLDOWN, MUX_MODE4) /* rmii1_ref_clk.mcasp1_axr3 */
    		>;
    	};
    	
    	mcasp1_pins_sleep: mcasp1_pins_sleep {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_MII1_CRS, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_MII1_RX_ER, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_MII1_COL, PIN_INPUT_PULLDOWN, MUX_MODE7)
    			AM33XX_PADCONF(AM335X_PIN_RMII1_REF_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
    		>;
    	};
    	
    	mmc2_pins: pinmux_mmc2_pins {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_GPMC_WPN, PIN_INPUT_PULLUP, MUX_MODE7) /* gpmc_wpn.gpio0_31 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_CSN1, PIN_INPUT_PULLUP, MUX_MODE2) /* gpmc_csn1.mmc1_clk */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_CSN2, PIN_INPUT_PULLUP, MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD0, PIN_INPUT_PULLUP, MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD1, PIN_INPUT_PULLUP, MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD2, PIN_INPUT_PULLUP, MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
    			AM33XX_PADCONF(AM335X_PIN_GPMC_AD3, PIN_INPUT_PULLUP, MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
    		>;
    	};
    	
    	wl12xx_gpio: pinmux_wl12xx_gpio {
    		pinctrl-single,pins = <
    			AM33XX_PADCONF(AM335X_PIN_GPMC_CSN0, PIN_OUTPUT_PULLUP, MUX_MODE7) /* gpmc_csn0.gpio1_29 */
    		>;
    	};
    	
    };
    
    &pruss_uart {
    
    	status = "disabled";
    };
    
    &uart0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&uart0_pins>;
    
    	status = "okay";
    };
    
    &uart1 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&uart1_pins_default>;
    	status = "okay";
    };
    
    &uart2 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&uart2_pins_default>;
    	status = "okay";
    };
    
    &uart3 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&uart3_pins_default>;
    	status = "okay";
    };
    
    &uart4 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&uart4_pins_default>;
    	status = "okay";
    };
    
    &i2c0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&i2c0_pins>;
    
    	status = "okay";
    	clock-frequency = <400000>;
    
    	tps: tps@2d {
    		reg = <0x2d>;
    	};
    
    	lis331dlh: lis331dlh@18 {
    		compatible = "st,lis331dlh", "st,lis3lv02d";
    		reg = <0x18>;
    		Vdd-supply = <&lis3_reg>;
    		Vdd_IO-supply = <&lis3_reg>;
    
    		st,click-single-x;
    		st,click-single-y;
    		st,click-single-z;
    		st,click-thresh-x = <10>;
    		st,click-thresh-y = <10>;
    		st,click-thresh-z = <10>;
    		st,irq1-click;
    		st,irq2-click;
    		st,wakeup-x-lo;
    		st,wakeup-x-hi;
    		st,wakeup-y-lo;
    		st,wakeup-y-hi;
    		st,wakeup-z-lo;
    		st,wakeup-z-hi;
    		st,min-limit-x = <120>;
    		st,min-limit-y = <120>;
    		st,min-limit-z = <140>;
    		st,max-limit-x = <550>;
    		st,max-limit-y = <550>;
    		st,max-limit-z = <750>;
    	};
    
    	tlv320aic3106: tlv320aic3106@1b {
    		#sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic3106";
    		reg = <0x1b>;
    		status = "okay";
    
    		/* Regulators */
    		AVDD-supply = <&v3_3d_reg>;
    		IOVDD-supply = <&v3_3d_reg>;
    		DRVDD-supply = <&v3_3d_reg>;
    		DVDD-supply = <&v1_8d_reg>;
    	};
    };
    
    &usb1 {
    	dr_mode = "host";
    };
    
    &epwmss2 {
    	status = "okay";
    
    	ecap2: pwm@100 {
    		status = "okay";
    		pinctrl-names = "default";
    		pinctrl-0 = <&ecap2_pins>;
    	};
    };
    
    #include "tps65910.dtsi"
    
    &tps {
    	vcc1-supply = <&vbat>;
    	vcc2-supply = <&vbat>;
    	vcc3-supply = <&vbat>;
    	vcc4-supply = <&vbat>;
    	vcc5-supply = <&vbat>;
    	vcc6-supply = <&vbat>;
    	vcc7-supply = <&vbat>;
    	vccio-supply = <&vbat>;
    
    	regulators {
    		vrtc_reg: regulator@0 {
    			regulator-always-on;
    		};
    
    		vio_reg: regulator@1 {
    			regulator-always-on;
    		};
    
    		vdd1_reg: regulator@2 {
    			/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
    			regulator-name = "vdd_mpu";
    			regulator-min-microvolt = <912500>;
    			regulator-max-microvolt = <1351500>;
    			regulator-boot-on;
    			regulator-always-on;
    		};
    		
    		vdd2_reg: regulator@3 {
    			/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
    			regulator-name = "vdd_core";
    			regulator-min-microvolt = <912500>;
    			regulator-max-microvolt = <1150000>;
    			regulator-boot-on;
    			regulator-always-on;
    		};
    
    		vdd3_reg: regulator@4 {
    			regulator-always-on;
    		};
    
    		vdig1_reg: regulator@5 {
    			regulator-always-on;
    		};
    
    		vdig2_reg: regulator@6 {
    			regulator-always-on;
    		};
    
    		vpll_reg: regulator@7 {
    			regulator-always-on;
    		};
    
    		vdac_reg: regulator@8 {
    			regulator-always-on;
    		};
    
    		vaux1_reg: regulator@9 {
    			regulator-always-on;
    		};
    
    		vaux2_reg: regulator@10 {
    			regulator-always-on;
    		};
    
    		vaux33_reg: regulator@11 {
    			regulator-always-on;
    		};
    
    		vmmc_reg: regulator@12 {
    			regulator-min-microvolt = <1800000>;
    			regulator-max-microvolt = <3300000>;
    			regulator-always-on;
    		};
    	};
    };
    
    &mac_sw {
    	pinctrl-names = "default", "sleep";
    	pinctrl-0 = <&cpsw_default>;
    	pinctrl-1 = <&cpsw_sleep>;
    	status = "okay";
    };
    
    &davinci_mdio_sw {
    	pinctrl-names = "default", "sleep";
    	pinctrl-0 = <&davinci_mdio_default>;
    	pinctrl-1 = <&davinci_mdio_sleep>;
    	
    	ethphy0: ethernet-phy@0 {
    		reg = <0>;
    		status = "disabled";
    	};
    
    	ethphy1: ethernet-phy@1 {
    		reg = <1>;
    	};
    };
    
    &cpsw_port1 {
    	phy-handle = <&ethphy0>;
    	phy-mode = "rgmii-id";
    	ti,dual-emac-pvid = <1>;
    	status = "disabled";
    };
    
    &cpsw_port2 {
    	phy-handle = <&ethphy1>;
    	phy-mode = "rgmii-id";
    	ti,dual-emac-pvid = <2>;
    };
    	
    &mmc1 {
    	status = "okay";
    	vmmc-supply = <&vmmc_reg>;
    	bus-width = <4>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&mmc1_pins>;
    	cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
    };
    
    &sham {
    	status = "okay";
    };
    
    &aes {
    	status = "okay";
    };
    
    &gpio0_target {
    	ti,no-reset-on-init;
    };
    
    &mmc2 {
    	status = "okay";
    	vmmc-supply = <&wl12xx_vmmc>;
    	non-removable;
    	bus-width = <4>;
    	cap-power-off-card;
    	keep-power-in-suspend;
    	pinctrl-names = "default";
    	pinctrl-0 = <&mmc2_pins>;
    
    	#address-cells = <1>;
    	#size-cells = <0>;
    	wlcore: wlcore@2 {
    		compatible = "ti,wl1271";
    		reg = <2>;
    		interrupt-parent = <&gpio0>;
    		interrupts = <31 IRQ_TYPE_EDGE_RISING>; /* gpio 31 */
    		ref-clock-frequency = <38400000>;
    	};
    };
    
    &mcasp1 {
    	#sound-dai-cells = <0>;
    	pinctrl-names = "default", "sleep";
    	pinctrl-0 = <&mcasp1_pins>;
    	pinctrl-1 = <&mcasp1_pins_sleep>;
    
    	status = "okay";
    
    	op-mode = <0>;          /* MCASP_IIS_MODE */
    	tdm-slots = <2>;
    	/* 4 serializers */
    	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
    		0 0 1 2
    	>;
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    };
    
    &tscadc {
    	status = "okay";
    	tsc {
    		ti,wires = <4>;
    		ti,x-plate-resistance = <200>;
    		ti,coordinate-readouts = <5>;
    		ti,wire-config = <0x00 0x11 0x22 0x33>;
    	};
    };
    
    &lcdc {
    	status = "okay";
    
    	blue-and-red-wiring = "crossed";
    
    	port {
    		lcdc_0: endpoint@0 {
    			remote-endpoint = <&panel_0>;
    		};
    	};
    };
    
    &rtc {
    	clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
    	clock-names = "ext-clk", "int-clk";
    };
    
    &pruss_tm {
    	status = "disabled";
    };
    
    &wkup_m3_ipc {
    	firmware-name = "am335x-evm-scale-data.bin";
    };

  • Hi Xing,

    so requested a public board from Tony Tang to  verify this issue,and reproduced the same uart issue on the public board(kernel V6.1).

    From the kernel devicetree you provided, I guess the public board is the TMDSSK3358 (https://www.ti.com/tool/TMDSSK3358), and soldered wires to get out those UART pins?

    #2 Use serialcheck to test three uarts at the same time,it is failed

    Good to know the issue can be reproduced with 3UARTs. I will try to reproduce this on Beaglebone Black tomorrow, this board has several UART pins on the connectors.

  • Hi Bin,

    From the kernel devicetree you provided, I guess the public board is the TMDSSK3358 (https://www.ti.com/tool/TMDSSK3358), and soldered wires to get out those UART pins?

    yes, it's right

    Good to know the issue can be reproduced with 3UARTs. I will try to reproduce this on Beaglebone Black tomorrow, this board has several UART pins on the connectors.

    Thanks for your help  and Looking forward to the results.

  • Hi Xing,

    I enabled uart1/4/5 on BBB, and saw the problem with kernel 6.1. But the problem disappeared after removed "dmas" from uart1 in devicetree.

    so requested a public board from Tony Tang to  verify this issue,and reproduced the same uart issue on the public board(kernel V6.1).

    Did you test with uart2 dma disable or not?

  • Hi Bin,

    Our product use six uarts(4x115200bps+1x460800bps+debug 1x115200bps),and need the uarts to work well when USB or Ethernet cables are plugged in or unplugged.

    • On kernel V3.2(Uart without dma),the test be failed when USB or Ethernet cables are plugged in or unplugged. and the same test passed on kernel V4.1(uart0~2 with dma,uart3~5 without dma).

    So, I don't think removing uart dma is a good solution.

    Did you test with uart2 dma disable or not?

    I have a new test without uart dma(kernel V6.1) and passed,but it's failed when USB or Ethernet cables are plugged in or unplugged.

    pass log:

    root@am335x-evm:~# serialcheck -b 460800 -d /dev/ttyS2 -f ./uart1 -l 5 -m d&
    [1] 571
    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS3 -f ./uart1 -l 5 -m d&
    [2] 572
    root@am335x-evm:~# Needed 86 reads 1 writes loops 1 / 5
    serialcheck -b 115200 -d /dev/ttyS4 -f ./uart1 -l 5 -m d&
    Needed 86 reads 1 writes loops 4 / 5
    Needed 86 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    Needed 90 reads 1 writes loops 5 / 5
    Needed 91 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0

    failed log:

    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS4 -f ./uart1 -l 5 -m d&
    [1] 672
    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS3 -f ./uart1 -l 5 -m d&
    [2] 673
    root@am335x-evm:~# serialcheck -b 460800 -d /dev/ttyS2 -f ./uart1 -l 5 -m d&
    [3] 674
    Needed 86 reads 1 writes loops 2 / 5
    [  751.809820] cpsw-switch 4a100000.switch eth0: Link is Down
    Needed 97 reads 1 writes loops 3 / 5
    Needed 86 reads 1 writes loops 4 / 5
    Needed 86 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    [  771.722111] cpsw-switch 4a100000.switch eth0: Link is Up - 1Gbps/Full - flow control off
    [  779.006538] cpsw-switch 4a100000.switch eth0: Link is Down
    [  784.202104] cpsw-switch 4a100000.switch eth0: Link is Up - 1Gbps/Full - flow control off
    [  809.550442] usb 2-1: new high-speed USB device number 3 using musb-hdrc
    [  809.741742] usb-storage 2-1:1.0: USB Mass Storage device detected
    [  809.775405] scsi host0: usb-storage 2-1:1.0
    [  810.841871] scsi 0:0:0:0: Direct-Access     aigo     U210             2.00 PQ: 0 ANSI: 4
    [  810.863348] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)
    [  810.912538] sd 0:0:0:0: [sda] Write Protect is off
    [  810.931066] sd 0:0:0:0: [sda] No Caching mode page found
    [  810.936431] sd 0:0:0:0: [sda] Assuming drive cache: write through
    [  810.967182]  sda:
    [  810.981092] sd 0:0:0:0: [sda] Attached SCSI removable disk
    [  816.896688] usb 2-1: USB disconnect, device number 3
    [  856.750486] usb 2-1: new high-speed USB device number 4 using musb-hdrc
    [  856.942942] usb-storage 2-1:1.0: USB Mass Storage device detected
    [  856.975484] scsi host0: usb-storage 2-1:1.0
    [  858.042014] scsi 0:0:0:0: Direct-Access     aigo     U210             2.00 PQ: 0 ANSI: 4
    [  858.065277] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)
    [  858.094852] sd 0:0:0:0: [sda] Write Protect is off
    [  858.114211] sd 0:0:0:0: [sda] No Caching mode page found
    [  858.119635] sd 0:0:0:0: [sda] Assuming drive cache: write through
    [  858.142802]  sda:
    [  858.151651] sd 0:0:0:0: [sda] Attached SCSI removable disk
    
    timeout, RX/TX: 349998/350000
    Needed 120 reads 1 writes Oh oh, inconsistency at pos 343230 (0x53cbe).
    
    Original sample:
    00053c80: 53 d4 70 d8 6d 8d 5d 76  e0 36 56 55 31 de 10 6e   S.p.m.]v.6VU1..n
    00053c90: ef d7 3d 92 97 a2 61 60  6d 3b 75 4e 97 6f 19 fd   ..=...a`m;uN.o..
    00053ca0: 22 1d 2d d8 d3 88 37 4d  f1 8d 98 18 62 bc b1 94   ".-...7M....b...
    00053cb0: e8 6b 64 fd 8f 40 8f 0f  30 0f 7f e5 45 24 6c 92   .kd..@..0...E$l.
    00053cc0: e5 ba e7 b6 e3 5d 56 b4  17 a7 d2 70 66 c0 1a c5   .....]V....pf...
    00053cd0: 5e d3 d7 7f 46 c1 e8 6a  b0 3f d6 1f 86 26 a7 e1   ^...F..j.?...&..
    
    Received sample:
    00053c80: 53 d4 70 d8 6d 8d 5d 76  e0 36 56 55 31 de 10 6e   S.p.m.]v.6VU1..n
    00053c90: ef d7 3d 92 97 a2 61 60  6d 3b 75 4e 97 6f 19 fd   ..=...a`m;uN.o..
    00053ca0: 22 1d 2d d8 d3 88 37 4d  f1 8d 98 18 62 bc b1 94   ".-...7M....b...
    00053cb0: e8 6b 64 fd 8f 40 8f 0f  30 0f 7f e5 45 24 92 e5   .kd..@..0...E$..
    00053cc0: ba e7 b6 e3 5d 56 b4 17  a7 d2 70 66 c0 1a c5 5e   ....]V....pf...^
    00053cd0: d3 d7 7f 46 c1 e8 6a b0  3f d6 1f 86 26 a7 e1 92   ...F..j.?...&...
    loops 1 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 349998 tx: 350000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    [  861.923605] usb 2-1: USB disconnect, device number 4
    timeout, RX/TX: 349999/350000
    Needed 144 reads 1 writes Oh oh, inconsistency at pos 16767 (0x417f).
    
    Original sample:
    00004140: 32 17 7c be 64 a0 dc 14  0e 49 42 e5 14 74 9c 63   2.|.d....IB..t.c
    00004150: 11 be af d6 69 3e c7 c2  b9 ae 07 e8 22 54 7d 26   ....i>......"T}&
    00004160: cb 57 44 54 d3 e3 26 75  22 c1 8c db 9a 27 b0 7f   .WDT..&u"....'..
    00004170: f7 ed 6f 36 17 4a 64 e9  5e 60 c0 52 aa ed e0 44   ..o6.Jd.^`.R...D
    00004180: 1f ed a3 30 ed bd 67 79  09 75 4e 5e 4d ac a9 53   ...0..gy.uN^M..S
    00004190: 7b 5b 29 ff 02 36 89 25  c0 18 b2 e6 a7 3b aa ae   {[)..6.%.....;..
    
    Received sample:
    00004140: 32 17 7c be 64 a0 dc 14  0e 49 42 e5 14 74 9c 63   2.|.d....IB..t.c
    00004150: 11 be af d6 69 3e c7 c2  b9 ae 07 e8 22 54 7d 26   ....i>......"T}&
    00004160: cb 57 44 54 d3 e3 26 75  22 c1 8c db 9a 27 b0 7f   .WDT..&u"....'..
    00004170: f7 ed 6f 36 17 4a 64 e9  5e 60 c0 52 aa ed e0 1f   ..o6.Jd.^`.R....
    00004180: ed a3 30 ed bd 67 79 09  75 4e 5e 4d ac a9 53 7b   ..0..gy.uN^M..S{
    00004190: 5b 29 ff 02 36 89 25 c0  18 b2 e6 a7 3b aa ae dd   [)..6.%.....;...
    loops 2 / 5
    
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 699999 tx: 700000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0

  • Hi Xing,

    Happy New Year!

    Our product use six uarts(4x115200bps+1x460800bps+debug 1x115200bps),and need the uarts to work well when USB or Ethernet cables are plugged in or unplugged.

    • On kernel V3.2(Uart without dma),the test be failed when USB or Ethernet cables are plugged in or unplugged. and the same test passed on kernel V4.1(uart0~2 with dma,uart3~5 without dma).

    So, I don't think removing uart dma is a good solution.

    I understand the situation, but the UART interruption by Ethernet or USB is likely due to kernel framework change in the kernel system level, I don't think there is a feasible solution with the SDK7.3 kernel or newer on a single core devices such as AM335x.

    I have a new test without uart dma(kernel V6.1) and passed,but it's failed when USB or Ethernet cables are plugged in or unplugged.

    Can you please test with the RT kernel in the AM335x RT Linux SDK v6.1 to see if the UART still gets interrupted by Ethernet or USB?

    PROCESSOR-SDK-LINUX-RT-AM335X

  • Hi Bin,

    Happy New Year to you as well!

    PROCESSOR-SDK-LINUX-RT-AM335X

    Thanks, I will have a try.

  • Hi Bin,

    PROCESSOR-SDK-LINUX-RT-AM335X

    It has passed the test ! I will conduct tests on my board with 5 uarts.

    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS4 -f ./uart1 -l 5 -m d&
    [1] 655
    root@am335x-evm:~# serialcheck -b 115200 -d /dev/ttyS3 -f ./uart1 -l 5 -m d&
    [2] 657
    root@am335x-evm:~# serialcheck -b 460800 -d /dev/ttyS2 -f ./uart1 -l 5 -m d&
    [3] 659
    root@am335x-evm:~# [   89.633913] cpsw-switch 4a100000.switch eth0: Link is Down
    Needed 86 reads 1 writes loops 1 / 5
    [   92.706292] cpsw-switch 4a100000.switch eth0: Link is Up - 1Gbps/Full - flow control off
    Needed 86 reads 1 writes loops 2 / 5
    [   99.221486] usb 2-1: USB disconnect, device number 2
    serialcheck -b 460800 -d /dev/ttyS2 -f ./uart1 -l 5 -m d&[  100.205086] FAT-fs (sda): unable to read boot sector to mark fs as dirty
    Needed 86 reads 1 writes loops 3 / 5
    [  107.762889] usb 2-1: new high-speed USB device number 3 using musb-hdrc
    [  107.893139] usb-storage 2-1:1.0: USB Mass Storage device detected
    [  107.906093] scsi host0: usb-storage 2-1:1.0
    [  108.962319] scsi 0:0:0:0: Direct-Access     aigo     U210             2.00 PQ: 0 ANSI: 4
    [  108.976963] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)
    [  108.977366] sd 0:0:0:0: [sda] Write Protect is off
    [  108.977561] sd 0:0:0:0: [sda] No Caching mode page found
    [  108.977571] sd 0:0:0:0: [sda] Assuming drive cache: write through
    [  108.994406]  sda:
    [  108.998434] sd 0:0:0:0: [sda] Attached SCSI removable disk
    Needed 88 reads 1 writes loops 1 / 5
    Needed 86 reads 1 writes loops 4 / 5
    [  121.378894] cpsw-switch 4a100000.switch eth0: Link is Up - 1Gbps/Full - flow controlNeeded 86 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    [  125.473831] cpsw-switch 4a100000.switch eth0: Link is Down
    [  132.002903] usb 2-1: new high-speed USB device number 4 using musb-hdrc
    [  132.133106] usb-storage 2-1:1.0: USB Mass Storage device detected
    [  132.146180] scsi host0: usb-storage 2-1:1.0
    [  133.154695] scsi 0:0:0:0: Direct-Access     aigo     U210             2.00 PQ: 0 ANSI: 4
    [  133.168102] sd 0:0:0:0: [sda] 30720000 512-byte logical blocks: (15.7 GB/14.6 GiB)
    [  133.168645] sd 0:0:0:0: [sda] Write Protect is off
    [  133.170285] sd 0:0:0:0: [sda] No Caching mode page found
    [  133.170306] sd 0:0:0:0: [sda] Assuming drive cache: write through
    [  133.176269]  sda:
    Needed 86 reads 1 writes loops 2 / 5
    Needed 91 reads 1 writes loops 2 / 5
    [  141.521197] usb 2-1: USB disconnect, device number 4
    Needed 91 reads 1 writes loops 3 / 5
    [  180.770486] cpsw-switch 4a100000.switch eth0: Link is Up - 1Gbps/Full - flow control off
    Needed 90 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrNeeded 91 reads 1 writes loops 5 / 5
    cts: 0 dsr: 0 rng: 0 dcd: 0 rx: 1750000 tx: 1750000 frame 0 ovr 0 par: 0 brk: 0 buf_ovrr: 0
    

  • Hi Xing,

    Great, thanks for the update. Looking forward to your final test results.

  • Hi Bin,

    PROCESSOR-SDK-LINUX-RT-AM335X

    I'm sorry for the delayed response. It has passed the test on our board.

    Thanks a lot for your help !

  • Hi Xing,

    No worries. Glad to hear the issue is resolved. Thanks for the update.