TI的am57xx系列芯片,基于uboot-2017修改串口。先说说理论知识,上电时会自动运行固化到片内ROM的代码,固化代码读取uboot的MLO,MLO接着读取u-boot.img。到此时就进入了可以配置uboot环境变量的阶段了。接着往下走就是根据不同的引导方式读取内核和设备树,最后启动内核。
我们先在要把串口打印信息从uart3修改到uart2,支持从MLO阶段就打印信息。接下来就是操作步骤。
1.修改路径为board/ti/am57xx/Kconfig的文件。把default改成2。
2.在路径为configs/am57xx_evm_defconfig文件的最后,添加宏定义CONFIG_CONS_INDEX=2。
3.在路径为include/configs/am57xx_evm.h中,修改console的默认串口。
4.以上修改已经可以重定向打印信息到uart2了。但是uboot没有给相应的pinmux配置。会导致没有输出的情况。所以需要根据需求修改管脚配置。在board/ti/am57xx/mux_data.h中进行如下修改。
5.此时上电已经可以打印MLO阶段和uboot阶段的信息,也能进入到配置环境变量的环节。所以修改uboot环境变量中的console参数,告诉kernel从uart2输出打印信息。可以单独使用env default -a,然后saveenv保存环境变量。也可以直接使用setenv console ttyO1,115200n8命令单独设置,然后saveenv保存环境变量。以下是单独设置的方法截图。
6.此时已经告诉了内核要从uart2打印信息,但是遇到没有数据输出的情况。那就要查一下设备树是否有打开uart2的节点了。像我现在用的是这样的pinmux。
7.按照上述步骤,你就可以完成串口从uart3改到uart2了。
最后如果有什么错误的地方,欢迎指出。
am57xx修改uboot和kernel打印串口
于 2021-08-10 23:21:56 首次发布