【u-boot】在stm32h7开发板体验u-boot

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 文件,修改串口相关的配置。
【u-boot】在stm32h7开发板体验u-boot_第1张图片
从62行可以看出,Discovery开发板用的串口1,而我的单板用的是串口1,将该设备树文件中的关于串口相关的配置都改为串口1,其他的修改就不贴图了。
然后在arch/arm/dts/stm32h743-pinctrl.dtsi文件中修改串口1相关的引脚。
修改后的结果如下图
【u-boot】在stm32h7开发板体验u-boot_第2张图片
我的单板上的串口1的引脚用的是 PA9和PA10,相应的修改。

这么一改串口就修改完成了,
执行命令:make stm32h743-disco_defconfig

编译一下将u-boot.bin文件下载到单片机中。打开串口调试助手,运行结果如下:
【u-boot】在stm32h7开发板体验u-boot_第3张图片
有显示结果说明串口没有问题了,程序卡死是因为没有更改SDRAM相关的配置,接下来配置SDRAM相关的设备数等参数。

Discovery开发板的内存芯片用的是IS42S32800G-6BLI,挂载在bank1上如果你手上的板子也是用的这个芯片,那么移植应该会更简单。但是我手上的板子芯片是W9825G6KH,挂载在bank0中,修改的参数比较多,
首先修改设备数中的参数,设备数节点相关,SDRAM时序参数和引脚配置等。
修改memory节点,设置内存的起始地址和大小
在这里插入图片描述
修改对应的时间参数,下图修改的参数,这个要根据芯片的不同具体修改
【u-boot】在stm32h7开发板体验u-boot_第4张图片
文件 include/configs/stm32h743-disco.h修改
在这里插入图片描述
更改设备树中引脚相关的配置。
重新编译下载
【u-boot】在stm32h7开发板体验u-boot_第5张图片
可以看到 u-boot已经跑起来了。

你可能感兴趣的:(uboot)