log输出端口uartX的修改方法
一 修改初衷
经常会有客户需要修改代码的log输出uart口,主要有两个原因.
是客户拿到的开发板与代码的编译选项不匹配,造成代码初始化的uart并不是真正硬件连接的log输出口.
客户根据自己硬件设计改动了默认的log输出口.
无论是哪种情况,客户都需要了解代码中uart的代码流程,从而掌握如何根据自己的现有硬件条件来配置代码,从而实现log正常输出.
二 修改方法
按照 doc/FAE文档/X2000HDarwin_X2000_V2.0/x2000H_Darwin_v2.0开发板快速上手说明.pdf整体编译烧录后, 如果log信息无法正常输出, 需要做如下检查.
2.1 确定当前uboot的编译路径和配置文件
sxyzhang@T430:~/x2000_sz/build$ cat ./configs/x2000_darwin_factory_defconfig | grep uboot
APP_uboot_toolchain_dir=../tools/toolchains/mips-gcc720-glibc229
APP_uboot_dir=../bootloader/uboot-x2000
APP_uboot_config=x2000_base_xImage_sfc_nand
可知,当前uboot编译目录为:../bootloader/uboot-x2000
所用的uboot配置文件为:x2000_base_xImage_sfc_nand
2.2 确定当前的配置文件
sxyzhang@T430:~/x2000_sz/build$ cd ../bootloader/uboot-x2000
sxyzhang@T430:~/x2000_sz/bootloader/uboot-x2000$ vim include/config.h
sxyzhang@T430:~/x2000_sz/bootloader/uboot-x2000$ vim include/configs/x2000_base.h
可见当前代码真正的板级配置文件为:include/configs/x2000_base_common.h
sxyzhang@T430:~/x2000_sz/bootloader/uboot-x2000$ vim include/configs/x2000_base_common.h
如果更换log输出口或波特率则修改上述两项即可。一般我们代码只支持两个波特率:115200和3000000。
上图默认log输出的uart为:uart2,波特率:3000000
2.3 重新编译并烧录
sxyzhang@T430:~/x2000_sz/build$ make uboot
注意:此处要确保代码已经整体编译过一遍了,保证uboot已经有默认配置了.
2.4 重新烧录生成的build/output/u-boot-spl-pad.bin
此处如果设置正确,再次烧录时minicom串口终端会有烧录的log输出.例如:
三 出现问题后的代码梳理
3.1 确定uboot引导第一阶段代码入口
sxyzhang@T430:~/x2000_sz/bootloader/uboot-x2000$ vim include/config.h
3.2 跟踪代码
sxyzhang@T430:~/x2000_sz/bootloader/uboot-x2000$ vim arch/mips/cpu/xburst2/x2000_v12/soc.c
sxyzhang@T430:~/x2000_sz/bootloader/uboot-x2000$ vim drivers/gpio/jz_gpio_common.c
3.3 检查log输出的uart口默认配置
sxyzhang@T430:~/x2000_sz/bootloader/uboot-x2000$ vim drivers/gpio/jz_gpio/x2000_v12_gpio.c
此处一定要确保include/configs/x2000_base_common.h中设置的CONFIG_SYS_UART_INDEX与上图中默认的uartX引脚对应.
四 常见问题解答
4.1 系统log没有输出
1. 因为软件默认设置的CONFIG_SYS_UART_INDEX与硬件板上的uart gpio不对应
例如,本例中#define CONFIGSYS_UART_INDEX 2, 那么结合上图软件上默认设置的就是pd组uart2. 对应的主控gpio就是:pd30-31, 默认为复用gpio为FUNC0| GPIO_PULL, 即:将主控pd30-31设置为带内部上拉的uart功能.
大部分的主控芯片都存在同一个uart号对应不同的gpio引脚的问题.例如上图中uart4有两个通道可选:PA2-3 和 PC11-12.
4.2 出现乱码
1 检查minicom设置的波特率与include/configs/x2000_base_common.h设置的波特率是否一致.
一般我们代码只支持两个波特率:115200和3000000
2 检查硬件RX TX 是否接反.
3 检查接地GND是否接触良好,
4 检查硬件是否有其他干扰.
4.3 烧录没有log输出
检查烧录工具: 配置--->INFO --->其他--->串口&波特率设置是否与硬件板对应.