是这样的,D1s的MQ补丁包里控制台是串口0,我需要改为串口1,在查了帖子和资料后,我做了如下修改:
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/env.cfg
- earlyprintk=sunxi-uart,0x02500000
- console=ttyS0,115200
+ earlyprintk=sun02i-uart,0x02500400
+ console=ttyS1,115200
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/sys_config.fex
- uart_debug_port = 0
- uart_debug_tx = port:PE02<6><1><default><default>
- uart_debug_rx = port:PE03<6><1><default><default>
+ uart_debug_port = 1
+ uart_debug_tx = port:PG06<2><1><default><default>
+ uart_debug_rx = port:PG07<2><1><default><default>
device/config/chips/d1/configs/mangopi_mq_rgb800x480_gt9xx/linux5.4/board.dts
- uart1_pins_b: uart1_pins
- uart_index = <0x1>;
+ uart1_pins_b: uart1_pins@1 // 这里让串口1格式和其他串口都一致
+ uart_index = <0x0>; // 不让btlpm占用串口1
lichee/linux-5.4/arch/riscv/boot/dts/sunxi/board.dts
- uart1_pins_b: uart1_pins
- uart_index = <0x1>;
+ uart1_pins_b: uart1_pins@1 // 原因和上面一样
+ uart_index = <0x0>; // 原因和上面一样
lichee/linux-5.4/arch/riscv/boot/dts/sunxi/sun20iw1p1.dtsi
- status = "disabled";
- bootargs = "console=ttyS0,115200n8 ...
- stdout-path = "serial0:115200n8";
+ status = "okay"; // 串口1使能
+ bootargs = "console=ttyS1,115200n8 ... // chosen 部分
+ stdout-path = "serial1:115200n8"; // chosen 部分
lichee/brandy-2.0/u-boot-2018/include/configs/sunxi-common.h
+ #undef CONFIG_CONS_INDEX
+ #define CONFIG_CONS_INDEX 2
修改的地方有:env.cfg里配置控制台为ttyS1、sys_config.fex里初始化调试串口为串口1、board.dts里不让外设占用串口1、sun20iw1p1.dtsi里是能串口1并配置内核启动参数里的控制台为串口1、sunxi-common.h里强制定义CONFIG_CONS_INDEX为2(即串口1)。
目前的现象:串口线接串口1,SD启动,已经可以看到完整的打印信息。本以为正确了,结果当我输入任意字符时(包括回车)终端都会原封不动的返回来,并不能进入系统! 当我刷入xboot固件时,发现串口1可以正常输入命令并交互,说明串口1及其外围硬件是没问题的。请问是哪里修改的不到位吗?
离线
会不会是 PG06 / PG07 被别的功能复用了呢?
--------------
大概看了一下, 并没有复用。
谢谢帮助。
我又试了一下除UART0外的其他串口,都有这个毛病:系统启动后只能输出信息,按按键无任何反应。过了一会再按按键串口有反应了,即原封不动的返回输入的任何字符(此时应该是系统初始化了什么东西)。
目前看来除了UART0之外的其他串口均只能打印,不能回车进系统。怪哉
离线
问题已解决,根文件系统的配置文件里的登陆串口也要改到串口1。至此修改才算完整。这个帖子也算给大家一个参考吧。
离线
离线