您尚未登录。

楼主 #1 2020-12-22 10:14:05

shuimogezi
会员
所在地: 北京
注册时间: 2018-07-14
已发帖子: 33
积分: 26

STM32F429移植uboot

(第一次在挖坑论坛上发表,有些功能还不熟悉,请见谅,嘿嘿)

一、准备工作

1:gcc交叉编译器源码:gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2

2:uboot源码:u-boot-2016.03.tar.bz2

3:kernel源码:linux-4.13.12.tar.xz

4:rootfs源码:Stm32_mini_rootfs.cpio.bz2

(说明:以上文件均可百度搜到,暂时没有贴上直接的下载链接)

二、安装gcc交叉编译工具

1:将gcc交叉编译工具解压

$ tar xjvf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2

2:修改环境变量,将gcc编译器路径添加到环境变量中

$ vim ~/.bashrc

在文件的最后一行添加gcc路径(your_gcc_path:指自己的gcc解压路径,因每个人的解压位置不同而不同)

export PATH=$PATH:/your_gcc_path/bin

使环境变量生效:stm32$ source ~/.bashrc

查看gcc是否添加成功:arm-none-eabi-gcc -v

如果出现gcc版本信息,说明已经添加成功并且生效了:

三、编译uboot

1:解压uboot源码

$ tar xjvf u-boot-2016.03.tar.bz2

2:匹配自己的硬件(https://github.com/huayuguo/uboot-stm32h743_eth/blob/uboot201811-stm32h7/build.sh)

进入u-boot-2016.03文件夹,首先要修改系统时钟,默认是8MHz外部晶振,我这里用的是24Mhz的,所以需要先修改成24MHz,源码路径在:

u-boot-2016.03/include/configs/stm32f429-discovery.h

u-boot-2016.03/arch/arm/mach-stm32/stm32f4/clock.c


这两个地方修改好之后,系统时钟源就已经配置好了(我这里配置的系统时钟是180MHz,外部高速晶振24MHz)

然后继续修改外部FMC总线,要修改成和自己的硬件一致,不然后面会直接影响kernel的加载。具体修改如下:

找到初始化FMC总线的文件路径:u-boot-2016.03/board/st/stm32f429-discovery/stm32f429-discovery.c

修改FMC引脚和时钟:

串口默认是PA9和PA10,正好和我的一样,这里就不做修改了。

如果想修改的话,路径是:arch/arm/include/asm/arch-stm32f4/gpio.h

到此位置uboot的修改基本完成了,下年就是开始准备编译了。

3:生成u-boot.bin

清除操作:$ make mrproper

配置默认选项:$ make stm32f429-discovery_defconfig

成成.config文件:$ make menuconfig,打开后如果不需要修改可以直接退出,目的是为了生成.config配置信息

执行命令:$ make ARCH=arm CROSS_COMPILE=arm-none-eabi-

编译完成后,生成的u-boot.bin就是我们要下载到STM32F429中的uboot程序,下载地址为:0x08000000

最近编辑记录 shuimogezi (2020-12-22 10:15:11)






技术狂,追求技术更高层,哈哈哈

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn