全志R16_Tina2.1平台修改打印串口后无法烧录问题及解决方法

【适用范围】
该问题适用于R16+Tina2.1
【问题现象】
修改输出的打印口后无法烧录, 烧录软件一直没有进度。
【复现步骤】
将sys_config.fex 中对应的[uart_para] [force_uart_para],修改为非 uart 0 打印口, 然后pack ,最后烧录发现出现问题。
下图以修改 uart 3 作为打印口为例:
这里写图片描述
【原因分析】
烧录过程中fes1 代码中, 和 启动过程中 boot0 代码中的 sunxi_serial_init 的函数有问题,原来的代码默认就是使用 uart0 可以正常工作。
1. fes1 和 boot0 代码对于串口的初始化:
//sunxi_spl/boot0/main/boot0_main.c
main()->sunxi_serial_init(BT0_head.prvt_head.uart_port,xxxxxxxxx, 6 );
//sunxi_spl/boot0/main/boot0_main.c
main()->sunxi_serial_init(BT0_head.prvt_head.uart_port,xxxxxxxxx, x );
//sunxi_spl/fes_init/main/fes1_main.c
main()->sunxi_serial_init(BT0_head.prvt_head.uart_port,xxxxxxxxx, x );
2. 有问题的sunxi_serial_init 代码
//uboot-2011.09/arch/arm/cpu/armv7/sun8iw5/spl/serial_spl.c
这里写图片描述
如果打印口没有指定为 0 的话,就错误返回了!
【解决办法】
1. 修改 对应的sys_config.fex 文件 + env-3.4.cfg 文件
sys_config.fex
这里写图片描述
env-3.4.cfg
这里写图片描述
3 修改 对应的 serial_spl.c 中的 sunxi_serial_init 错误代码
这里写图片描述
4. 重新编译uboot 中的fes1 + boot0 的bin文件,更新对应目录的bin文件
这里写图片描述
【验证方法】
修正后,重新编译-打包-烧录-启动 , uboot + kernel 打印正常。

猜你喜欢

转载自blog.csdn.net/weixin_43094346/article/details/82563185