0%

U-Boot 安装到树莓派

SD卡分区

将SD卡分区,通过fdisk命令分区为2个区,100M的boot区,剩下的rootfs区,boot区
boot区格式化为fat格式,rootfs格式化为ext4
将boot挂在到/mnt/boot位置

1
2
sudo mkfs.vfat /dev/sdb1
sudo mount /dev/sdb1 /mnt/boot

准备树莓派Boot文件

1
2
3
git clone https://github.com/raspberrypi/firmware.git
cd firmware
cp -R boot/* /mnt/boot

树莓派boot文件介绍

bootcode.bin

这是引导加载程序,由SoC在引导时加载,它执行一些非常基本的设置,然后加载其中一个start*.elf文件。bootcode.bin在Raspberry Pi 4上未使用,因为它已由板载EEPROM中的启动代码替换

start*.elf和fixup*.elf

1
2
start4.elf,start4x.elf,start4cd.elf,start4db.elf
fixup4.dat,fixup4x.dat,fixup4cd.dat,fixup4db.dat

start*.elf是基本固件,start*x.elf包括相机驱动程序和编解码器,start*db.elf是固件的调试版本,start*cd.elf是简化版本,不支持编解码器和3D之类的硬件块,并且在gpu_mem=16中指定时使用config.txt

fixup* .dat

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

cmdline.txt

引导时,内核命令行会传递到内核。

config.txt

包含许多用于设置Pi的配置参数

具体可见:
https://www.lxx1.com/pi/basis/raspberry_pi_version.html#%E5%BC%95%E5%AF%BC%E6%96%87%E4%BB%B6%E5%A4%B9%E5%86%85%E5%AE%B9

GCC交叉编译

1
https://mirrors.tuna.tsinghua.edu.cn/armbian-releases/_toolchain/
1
2
export ARCH_HOME=/{PATH}/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu
export PATH=$PATH:$ARCH_HOME/bin

编译U-boot

1
2
3
4
5
6
7
8
git clone https://github.com/u-boot/u-boot.git
cd u-boot
# 使用刚才下载的交叉工具链
export CROSS_COMPILE=aarch64-linux-gnu-
make distclean
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- rpi_4_defconfig
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- -j12
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- distclean

make distclean 清理编译配置和编译产物

1
sudo cp u-boot.bin /mnt/boot/kernel8.img

u-boot.bin 584.5k 大小

USB串口调试

1
2
sudo apt-get install minicom
sudo minicom -D /dev/ttyUSB0

在控制台下通过组合键Ctrl+A Z 可以进入minicom 菜单。
组合键的用法是:先按Ctrl+A组合键,然后松开这两个键,再按Z键。另外还有一些常用的组合键。

S键:发送文件到目标系统中;
W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。这个功能在查看内核的启动信息时很有用。
C键:清除屏幕的显示内容;
B键:浏览minicom的历史显示;
X键:退出mInicom,会提示确认退出。