我正在使用yocto-project为BBB创建图像。我克隆了项目git clone -b pyro git://git.yoctoproject.org/poky
,然后启动了构建过程。用bitbake core-image-sato
烘焙它,并获得带有文件的构建目录。
我在SD卡上创建了2个分区,其中64M用于root,其余为(15 + GB)用于启动。
已将MLO and u-boot-beaglebone.img
复制到root partition
。
取消根分区上的core-image-sato-beaglebone.tar.bz2
,然后在启动分区下复制zImage-beaglebone.bin, zImage-am335x-bone.dtb, zImage-am335x-boneblack.dtb
。
当我尝试启动BBB时,发现u-boot需要uEnv.txt并卡在那里。 yocto构建目录没有任何uEnv.txt,那么如何编写自己的uEnv.txt?这是u-boot提示符。
Hit any key to stop autoboot: 0
gpio: pin 53 (gpio 53) value is 1
mmc0 is current device
micro SD card found
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
SD/MMC found on device 0
reading uEnv.txt
** Unable to read file uEnv.txt **
gpio: pin 55 (gpio 55) value is 1
** File not found /boot/uImage **
U-Boot#
我在root分区中添加了uEnv.txt,文本为
mmcdev=0
mmcpart=1
bootpart=0:1
这次u-boot尝试从uImage
目录中读取/boot
,但我现在有zImage
这个冲突了吗?我该如何解决?
SD/MMC found on device 0
reading uEnv.txt
32 bytes read in 4 ms (7.8 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
gpio: pin 55 (gpio 55) value is 1
reading /boot/uImage
** Unable to read file /boot/uImage **
U-Boot#
答案 0 :(得分:1)
似乎U-boot无法找到uEnv.txt文件。尝试这些配置。您可能需要根据您的环境修改某些配置。
sudo vim uEnv.txt
kernel_file=zImage
bootdir=/boot
mmcdev=0
mmcpart=2
loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootdir}/${kernel_file}
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${bootdir}/${fdtfile}
console=ttyO0,115200n8
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext4 rootwait fixrtc
mmcargs=setenv bootargs console=${console} root=${mmcroot} rootfstype=${mmcrootfstype} ${optargs}
uenvcmd=run loadzimage; run loadfdt; run mmcargs; bootz ${loadaddr} - ${fdtaddr}
将zImage和dtb复制到启动分区:
sudo cp -v /<path_to_kernel>/arch/arm/boot/zImage <path_to_boot>/boot/
sudo cp -v /<path_to_kernel>/arch/arm/boot/dts/am335x-boneblack.dtb <path_to_boot>/boot/