我在 Beaglebone Black 自定义安装上运行 u-boot,并修改了 ./include/configs/am335x_evm.h 将默认启动延迟设置为 0,当我从 fat 加载内核和设备树时,该延迟运行良好分割。但我将分区 1 从 fat 切换到 ext4,并将 uEnv.txt 中的 fatload 语句更改为 ext4load。一切都像以前一样工作,只是现在我又回到了 2 秒的启动延迟。我不明白为什么切换分区类型会导致这种情况。
有人知道在我使用 ext4 启动分区的情况下如何重新编译 u-boot 将 bootdelay 设置回 0 吗?
或者,我想我可以弄清楚如何让 saveenv 工作。目前它给出:
=> saveenv
Saving Environment to FAT... MMC: no card present
** Bad device mmc 0 **
Failed (1)
但老实说,我宁愿在编译时更改默认值。
答案1
在您的 PC 上下载 ARM 交叉编译器 GCC。
wget -c https://releases.linaro.org/components/toolchain/binaries/6.4-2017.11/arm-linux-gnueabihf/gcc-linaro-6.4.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro-6.4.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xz
export CC=**/path to**/gcc-linaro-6.4.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
确保您有正确的路径。它应该来自根目录,类似于 /home/username/gcc-linaro/bin/arm-linux-gnueabihf- 的路径-
测试交叉编译器:
${CC}gcc --version
如果您有正确的路径,您应该在终端上看到以下内容:
arm-linux-gnueabihf-gcc (Linaro GCC 6.4-2017.11) 6.4.1 20171012
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
下载u-boot
git clone https://github.com/u-boot/u-boot
cd u-boot/
git checkout v2018.01 -b tmp
获取补丁(需要互联网连接)
wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2018.01/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2018.01/0002-U-Boot-BeagleBone-Cape-Manager.patch
wget -c https://raw.githubusercontent.com/RobertCNelson/Bootloader-Builder/master/patches/v2018.03-rc1/0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch
给u-boot打补丁
patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
patch -p1 < 0002-U-Boot-BeagleBone-Cape-Manager.patch
patch -p1 < 0002-NFM-Production-eeprom-assume-device-is-BeagleBone-Bl.patch
配置和构建
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_defconfig
现在在 u-boot 文件夹中将有 .config 文件,您可以编辑和更改 bootdelay 参数。建造
make ARCH=arm CROSS_COMPILE=${CC}
将 SD 卡连接到计算机并运行“lsblk”以查找 SD 卡的 ID。在我的例子中,id 是“sdb”
安装:
export DISK=/dev/sdb
sudo dd if=./MLO of=${DISK} count=1 seek=1 bs=128k
sudo dd if=./u-boot.img of=${DISK} count=2 seek=1 bs=384k