全志芯片Tina Linux 修改 UART 引脚、UART端口
-
场景一:同样使用UART0,需要从PF2、PF4改到PE2、PE4
- 修改
sys_config.fex
(BOOT0与Uboot的串口)
sys_config.fex
的路径是device/config/chips/t113/configs/evb1/sys_config.fex
中的uart_debug_port
修改前:
[uart_para] uart_debug_port = 0 uart_debug_tx = port:PF02<3><1><default><default> uart_debug_rx = port:PF04<3><1><default><default>
修改后
[uart_para] uart_debug_port = 0 uart_debug_tx = port:PE02<6><1><default><default> uart_debug_rx = port:PE03<6><1><default><default>
其中
<3>
改为<6>
是查阅数据手册中 PE2、PE3 的UART0是 Function6 得知的
port:PE02 <6><1><default><default> ^ ^ PE2脚 引脚功能6(查阅datasheet得知)
- 修改设备树(Linux使用的串口输出)
路径:
device/config/chips/t113/configs/evb1/board.dts
修改前
uart0_pins_a: uart0_pins@0 { /* For EVB1 board */ pins = "PF2", "PF4"; function = "uart0"; drive-strength = <10>; allwinner,muxsel = <3>; bias-pull-up; }; uart0_pins_b: uart0_pins@1 { /* For EVB1 board */ pins = "PF2", "PF4"; function = "gpio_in"; };
修改后
uart0_pins_a: uart0_pins@0 { /* For EVB1 board */ pins = "PE2", "PE3"; function = "uart0"; drive-strength = <10>; allwinner,muxsel = <6>; bias-pull-up; }; uart0_pins_b: uart0_pins@1 { /* For EVB1 board */ pins = "PE2", "PE3"; function = "gpio_in"; };
- 修改
-
场景二:使用UART3,需要从UART0改为UART3(PB6,PB7)
- 修改
sys_config.fex
(BOOT0与Uboot的串口)
sys_config.fex
的路径是device/config/chips/t113/configs/evb1/sys_config.fex
中的uart_debug_port
修改前:
[uart_para] uart_debug_port = 0 uart_debug_tx = port:PF02<3><1><default><default> uart_debug_rx = port:PF04<3><1><default><default>
修改后
[uart_para] uart_debug_port = 3 uart_debug_tx = port:PB06<7><1><default><default> uart_debug_rx = port:PB07<7><1><default><default>
- 修改设备树(Linux使用的串口输出)
路径:
device/config/chips/t113/configs/evb1/board.dts
修改前
uart3_pins_a: uart3_pins@0 { pins = "PC6", "PC7"; function = "uart0"; drive-strength = <10>; allwinner,muxsel = <4>; bias-pull-up; }; uart3_pins_b: uart3_pins@1 { pins = "PC6", "PC7"; function = "gpio_in"; }; &uart0 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&uart0_pins_a>; pinctrl-1 = <&uart0_pins_b>; status = "okay"; }; &uart3 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&uart3_pins_a>; pinctrl-1 = <&uart3_pins_b>; status = "disabled"; };
修改后
uart3_pins_a: uart3_pins@0 { pins = "PB6", "PB7"; function = "uart0"; drive-strength = <10>; allwinner,muxsel = <7>; bias-pull-up; }; uart3_pins_b: uart3_pins@1 { pins = "PB6", "PB7"; function = "gpio_in"; }; &uart0 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&uart0_pins_a>; pinctrl-1 = <&uart0_pins_b>; status = "disabled"; # 关闭UART0 }; &uart3 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&uart3_pins_a>; pinctrl-1 = <&uart3_pins_b>; status = "okay"; # 开启UART3 };
- 修改UBOOT CONSOLE INDEX
路径:
brandy/brandy-2.0/u-boot-2018/configs/sun8iw20p1_defconfig
增加下列内容CONFIG_SPECIFY_CONSOLE_INDEX=y CONFIG_CONS_INDEX=4 # UART 3+1 = 4
- 修改启动bootargs
路径:
device/config/chips/t113/configs/evb1/env.cfg
修改前
earlyprintk=sunxi-uart,0x02500000 initcall_debug=0 console=ttyS0,115200
修改后
earlyprintk=sunxi-uart,0x02500000
需要修改为 UART3 的地址,查阅手册可知为0x02500C00
earlyprintk=sunxi-uart,0x02500C00 initcall_debug=0 console=ttyS3,115200
注意 ARM 平台还需要设置Kernel,如下:
make kernel_menuconfig
找到 Kernel low-level debugging functions,修改寄存器地址RISC-V 不需要此操作
- 修改
-
学习了,感谢您的高质量输出
-
-
-
-
-
-
非常不错,解决了我的问题
-
-
-
-
-
注意 ARM 平台还需要设置Kernel,如下:
make kernel_menuconfig
找到 Kernel low-level debugging functions,修改寄存器地址RISC-V 不需要此操作
(之前忘记说了,现在补上
-
为何在场景二中,从UART0改为UART3
uart_debug_port
并不需要修改呢???? -
@kelsey 写错了已修改
-
@yteraa 哈哈哈,好的
-
@yteraa 收藏一波,谢谢楼主分享
-
我在R11芯片上通过修改下面内容从uart0换到uart1,kernel是3.4的,但是呢,uart1打印kernel启动2秒多后就卡住了似乎,uart1没反应了,不知道是不是还有哪里没修改的,而且kernel3.4版本没找到修改调试口的地方,请问可以帮我解决下吗,这是我发的贴子,R11 DEBUG uart0 换 uart1
-
-
-
-
-
-
-
-
-
按照文档配置。 uart0 改为 uart3 后, kernel 的日志无法打印。无法进入控制台。
-
@jinxiangwzh 在 全志芯片Tina Linux 修改 UART 引脚、UART端口 中说:
学习了,感谢您的高质量输出
-
教程不错,学习了。
uart debug配置搞了很久。 -
挖一个古早期的修改UART帖
D1s分别在Tina Linx, Melis修改调试串口实录
https://bbs.aw-ol.com/topic/3194/share/1 -
-
-
-
-
-
Copyright © 2023 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号