(第一次在挖坑论坛上发表,有些功能还不熟悉,请见谅,嘿嘿)
一、准备工作
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)
技术狂,追求技术更高层,哈哈哈
离线