如何将Linux_RX/Linux_TX切换为UART1_RX/UART1_TX

Which system do you use? Android, Ubuntu, OOWOW or others?

Android

Which version of system do you use? Please provide the version of the system here:

VIM3_Pie_V210908

Please describe your issue below:

VIM3开发板要连接两个串口设备,UART0_RX/UART0_TX可正常使用,如何将Linux_RX/Linux_TX切换为UART1_RX/UART1_TX?

Serial RS232 port protocol 这个主题里面有提到修改boot/boot.ini,但是是Ubuntu系统,在Android系统里面该如何修改呢?谢谢。

&uart_C {
status = “disable”;
};
是改成disable吗?像上面这样?

现在Linux_RX/Linux_TX对应的就是UART1_RX/UART1_TX

嗯,我这边可以看到ttyS0,ttyS1,ttyS3三个串口,只有ttyS3可以正常访问,ttyS0则打不开,如果想访问ttyS0要怎样修改?

需要添加相关的权限,如下ttyS3

xiong@server:/users/xiong/work/amlogic/vim3/vim3_32bit/device/khadas$ grep -nr "ttyS"
common/products/mbox/ueventd.amlogic.rc:69:/dev/ttyS1                0660   bluetooth     bluetooth
common/products/mbox/ueventd.amlogic.rc:70:/dev/ttyS2                0660   bluetooth     bluetooth
common/products/mbox/ueventd.amlogic.rc:71:/dev/ttyS3                0666   system     system
common/products/mbox/ueventd.amlogic.rc:72:/dev/ttyS4                0666   system     system
common/products/mbox/ueventd.amlogic.rc:78:/dev/ttyS20               0664   system     system
xiong@server:/users/xiong/work/amlogic/vim3/vim3_32bit/device/khadas$

@xiong.zhang 我按照下面的方法修改,测试发现ttyS0可以正常打开,但是会一直可以从串口读到数据,是否串口还在用于调试?输出调试信息?

~/vim3/device/khadas/common/products/mbox$ grep -nr "ttyS"
ueventd.amlogic.rc:69:/dev/ttyS0                0666   system     system
ueventd.amlogic.rc:70:/dev/ttyS1                0660   bluetooth     bluetooth
ueventd.amlogic.rc:71:/dev/ttyS2                0660   bluetooth     bluetooth
ueventd.amlogic.rc:72:/dev/ttyS3                0666   system     system
ueventd.amlogic.rc:73:/dev/ttyS4                0666   system     system
ueventd.amlogic.rc:79:/dev/ttyS20               0664   system     system

@xiong.zhang @numbqq @Terry 麻烦帮忙看一下这个问题,谢谢。

你是想将debug串口关闭是吧

xiong@server:/users/xiong/work/amlogic/vim3/vim3_32bit/bootloader/uboot$ git diff
diff --git a/board/khadas/configs/kvim3.h b/board/khadas/configs/kvim3.h
index 63ecd55c85..7df09b13cb 100644
--- a/board/khadas/configs/kvim3.h
+++ b/board/khadas/configs/kvim3.h
@@ -158,7 +158,7 @@
         "reboot_mode_android=""normal""\0"\
         "fs_type=""rootfstype=ramfs""\0"\
         "initargs="\
-            "init=/init console=ttyS0,115200 no_console_suspend earlycon=aml-uart,0xff803000 ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 "\
+            "init=/init no_console_suspend earlycon=aml-uart,0xff803000 ramoops.pstore_en=1 ramoops.record_size=0x8000 ramoops.console_size=0x4000 "\
             "\0"\
         "upgrade_check="\
             "echo upgrade_step=${upgrade_step}; "\

@xiong.zhang 对,可能是之前我没有说清楚,我就是想将debug串口关闭,将Pin18/P19做uart使用,但是按照这样修改测试之后发现Pin18/Pin19还是会输出debug信息。

你按照上面那个修改看看,修改上面跟你看的那个ubuntu系统修改是一样的

@xiong.zhang 按照上面的修改之后重新打包固件,现在没有debug信息输出了,但是Pin18/Pin19作为uart使用的时候发现收发数据都有问题,具体现象为:
1、主板作为接收方的时候无法收到发送方发送的数据;
2、主板作为发送方的时候发送数据,接收方有时接收到的数据正常,有时不正常(数据全部或部分丢失)。
使用Pin15/Pin16的时候就没有上述问题。

好的,我这边验证一下这个现象,你是用的串口apk来测试的嘛,如果波特率设置高一点呢,大于115200的看看是不是还有这个现象

@xiong.zhang 这边是用电脑(Windows系统,安装了串口调试助手)进行测试的,电脑端使用USB串口调试工具,通过杜邦线与主板连接。具体操作如下:1、电脑端通过网络与主板连接,adb shell进到命令行模式。
2、电脑端发送数据时,主板通过cat ttyS0查看接收情况;
3、主板使用echo “123” > ttyS0发送数据,电脑端通过串口调试助手查看接收情况。
另外设置了高一点的波特率460800、921600都存在同样的问题。

@xiong.zhang

kvim3:/dev # stty -F ttyS0
speed 9600 baud; line = 0;
-parenb -parodd -cmspar -cstopb
-brkint ixon -imaxbel
kvim3:/dev # stty -F ttyS3
speed 115200 baud; line = 0;
-parenb -parodd -cmspar -cstopb
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo

我这边发现ttyS0和ttyS3的默认配置是不一样的,把ttyS0的配置改成和ttyS3一样的情况下,看上去通信是正常啦。

@xiong.zhang 主板启动完成之后是没有日志了,但是在启动过程中还是有日志输出,这个有办法关闭吗?

这个是正常的,应该不会影响使用,要在uboot阶段去掉的话还是比较麻烦的

@xiong.zhang ok,收到,谢谢。