单片机学习小组
直播中

李泽坚

7年用户 1333经验值
私信 关注

如何让u-boot跑起来?

如何让u-boot跑起来?

回帖(1)

李天竹

2022-1-26 15:39:18
u-boot在2017版本中加入了对Cortex-M系列内核的支持,正好手上有个h7的开发板,所以拿来试试,学习一下uboot。
一 u-boot版本选择

其实开始选用最早支持的版本比较好,因为新版本中加了更多的单板支持,有些版本之间由交叉移植阅读代码时容易形成干扰。
由于最开始就看的是u-boot-2019.04版本的代码,所以选择这个版本。
二 准备过程

说是移植,一般不会从头到尾自己写代码,肯定是从已经支持的单板中选择一个和自己差不多的,在这个基础上移植,天下乌鸦一般黑,天下的板子也都差不多。Cortex-M系列的更甚。
多数修改只需要改改设备树就好了,其中的原理还是需要学一学的。比如设备树相关的。u-boot设备模型相关的东西。
移植的过程相对简单,首先要搭建好开发环境。这个就不展开说明了
三 移植过程

先进行最简单的移植,让u-boot在单板上跑起来,主要是在STM32H743i-Discovery board基础上修改
需要移植串口和SDRAM,u-boot的程序的运行是跑在SDRSM上的。
对于串口的配置,串口主要是用来做交互与调试:
打开 arch/arm/dts/stm32h743i-disco.dts 文件,修改串口相关的配置。

从62行可以看出,Discovery开发板用的串口1,而我的单板用的是串口1,将该设备树文件中的关于串口相关的配置都改为串口1,其他的修改就不贴图了。
然后在arch/arm/dts/stm32h743-pinctrl.dtsi文件中修改串口1相关的引脚。
修改后的结果如下图

我的单板上的串口1的引脚用的是 PA9和PA10,相应的修改。
这么一改串口就修改完成了,
执行命令:make stm32h743-disco_defconfig
编译一下将u-boot.bin文件下载到单片机中。打开串口调试助手,运行结果如下:

有显示结果说明串口没有问题了,程序卡死是因为没有更改SDRAM相关的配置,接下来配置SDRAM相关的设备数等参数。
Discovery开发板的内存芯片用的是IS42S32800G-6BLI,挂载在bank1上如果你手上的板子也是用的这个芯片,那么移植应该会更简单。但是我手上的板子芯片是W9825G6KH,挂载在bank0中,修改的参数比较多,
首先修改设备数中的参数,设备数节点相关,SDRAM时序参数和引脚配置等。
修改memory节点,设置内存的起始地址和大小

修改对应的时间参数,下图修改的参数,这个要根据芯片的不同具体修改

文件 include/configs/stm32h743-disco.h修改

更改设备树中引脚相关的配置。
重新编译下载

可以看到 u-boot已经跑起来了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分