Linux系统移植之编译并启动AM57xx的uboot

编译启动uboot

  上一篇中已经完成官方开发板AM5728 EVM uboot的编译,但我们将程序烧录到SD卡后,并没有看到任何打印,本节将修改uboot代码,以让uboot能在我们的板卡上启动,如果自己产品的硬件设计和官方开发板的硬件有所差别,一般是需要我们自己在官方开发板的uboot基础上略加修改的,所以我先把AM5728 EVM开发板的原理图下载下来,以和我们的板卡进行对比

  以我目前的系统移植经验,官方开发板的uboot在自己产品的板卡上运行不起来,原因一般有三,其一为console指定的UART串口号不同(比如,官网开发板默认UART1为console打印信息串口,而我们的开发板并没有引出UART1,而是引出了UART3),其二为串口号相同,但二者所用的pin脚不同(一般都有引脚重映射的功能,为了让硬件设计更加灵活),此二者,较为容易修改,因为uboot其实已经在你的板卡上正常启动了,只是没有看到打印信息而已。

尝试1.在uboot中配置UART3作为console

make menuconfig
在这里插入图片描述
在这里插入图片描述

重新编译后,烧录,上电,依然没有打印信息

尝试2.修改pinmux

芯片厂商在移植uboot时肯定会设计一个大数组,用来配置芯片引脚功能,这个数组一般在目录"board/芯片厂商/板卡名称/"下,5728的pinmux代码位于“board/ti/am57xx/mux_data.h”中,打开之

在这里插入图片描述

如上图所示,官方开发板使用gpio5_18和gpio5_19作为UART3的pin脚,而我们的板卡使用的是gpio1_16和gpio1_17作为UART3的pin脚,故需要在此处修改之

修改完成,重新编译,烧录,上电后依然没有任何打印信息,这就麻烦了

尝试3.修改DDR配置

此前尝试依然无效的情况下,那说明程序极可能没有正常启动运行,那就是DDR的硬件连接和TI开发板不同,导致程序加载内存时失败,故没有运行起来。

开发板使用EMIF0和EMIF1接口,配置2G内存,每个EMIF总线连接2个512M的DDR芯片,而我们的板卡只使用了EMIF0,并未使用EMIF1,且EMIF0连接了2个1G的DDR芯片,也实现了2G内存的大小
在这里插入图片描述
在这里插入图片描述

“board/ti/am57xx/board.c”
在这里插入图片描述

上电后uboot启动正常

Guess you like

Origin blog.csdn.net/weixin_42314225/article/details/120918327