树莓派U-Boot编译教程 原创

丨张明亮丨
发布于 2021-1-21 11:36
浏览
2收藏

1、格式化SD卡:
如果SD卡以前安装树莓派系统,这步可以省略。如果在windows下直接格式化FAT32,linux下稍微复杂点参考下面步骤(建议给SD分个区)。

1.1、使用fdisk新建分区

sudo fdisk /dev/sdb
选择 p 打印分区表,并确保选择了正确的磁盘。
选择 d 删除所有现有分区。
选择 n 添加一个新分区。选择主分区和任何其他默认设置。
选择 t 更改分区的系统ID,然后输入b  (W95 FAT32)。
选择 w 保存退出 。

1.2、格式化SD卡:

sudo mkfs.vfat /dev/sdb1

1.3、挂载分区

sudo mount /dev/sdb1 /mnt

接下来准备准备SD卡内的文件就可以了。
2、SD卡内的启动文件
2.1、start4.elf

third-stage BootLoader文件

树莓派4之后,start.elf改为了start4.elf

下载:sudo wget https://raw.githubusercontent.com/raspberrypi/firmware/master/boot/start4.elf

2.2、config.txt

可以用官方的模板,或者自己编写,内容如下

kernel=u-boot.bin                  #指定内核,如果不指定start.elf(或start4.elf)默认启动kernel8.img
kernel_address=Ox00080000          #内核地址
arm_64bit=1
enable_uart=1                      #开启串口
uart_2ndstage=1
enable_gic=1

2.3、fixup4 .dat

链接器文件,并且与start*.elf上一节中列出的文件配对

2.4、u-boot.bin

u-boot的树莓派4内核,参考U-boot源码构建

2.5、bcm2711-rpi-4-b.dtb

树莓派设备树下载地址: 

sudo wget https://raw.githubusercontent.com/raspberrypi/firmware/master/boot/bcm2711-rpi-4-b.dtb

3、U-boot源码构建
我是在Ubuntu 18.04下运行

3.1、先下载u-boot源码,等待的时间可以重开一个命令终端,执行下面的代码

git clone https://github.com/u-boot/u-boot

3.2、安装64位arm的交叉编译工具链(aarch64-linux-gnu-),以及依赖项bison、flex

sudo apt install gcc-aarch64-linux-gnu
sudo apt-get install bison
sudo apt-get install flex

3.3、指定make的编译工具,使用刚才下载的交叉工具链

cd u-boot 
export CROSS_COMPILE=aarch64-linux-gnu- #export 设置环境变量 -p查看所有环境变量
或者
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- -j12

3.4、编译比较简单

make distclean #make前要先clean
make rpi_4_defconfig #使用树莓派4的配置文件,更多u-boot支持的芯片,可以进入u-boot/configs文件夹,执行ls -d rpi* 查看
[不确定是否必须]执行完这步会生成.config文件,打开这个文件找到CONFIG_DEFAULT_DEVICE_TREE=""改为CONFIG_DEFAULT_DEVICE_TREE="bcm2711-rpi-4-b"
make -j12 #12这个数字设置CPU核心数的2倍即可,我是6核所有12

3.5、最后复制u-boot.bin到SD卡

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
u-boot.zip 223.38K 46次下载
已于2021-1-21 13:41:23修改
2
收藏 2
回复
举报
2条回复
按时间正序
/
按时间倒序
蒙娜丽宁
蒙娜丽宁

这个启动是字符界面吗?

回复
2021-4-9 20:13:06
丨张明亮丨
丨张明亮丨

嗯shell界面

回复
2021-4-13 20:14:02
回复
    相关推荐