2017-08-04 136 views
0

我正在为yocto-project创建BBB.B的图像。我克隆了项目git clone -b pyro git://git.yoctoproject.org/poky,然后启动了构建过程。用bitbake core-image-sato烤制它,并获得带有文件的构建目录。Beaglebone Black无法启动yocto-image

我在SD卡上创建了2个分区,其中64M用于root,其余用于启动(15 + GB)。 复制MLO and u-boot-beaglebone.imgroot partition

未启动根分区上的core-image-sato-beaglebone.tar.bz2,然后在启动分区下复制zImage-beaglebone.bin, zImage-am335x-bone.dtb, zImage-am335x-boneblack.dtb

当我试图启动BBB发现u-boot预计uEnv.txt并卡住那里。 yocto build目录没有任何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# 我加uEnv​​.txt在根分区与文本 mmcdev=0 mmcpart=1 bootpart=0:1 这一次的u-boot尝试从/boot目录读取一个uImage,但我有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

https://unix.stackexchange.com/questions/122526/how-to-convert-a-zimage -into-uimage-for-boot-with-u-boot – h0ch5tr4355

+0

@ h0ch5tr4355所以你的意思是说它必须在uImage中转换zImage并且u-Boot不能加载zImages? 那么'zImage-am335x-boneblack.dtb,zImage-am335x-bone.dtb,zImage-beaglebone.bin'还需要转换它们吗? – user7345878

+0

我遵循上面链接中提到的步骤。这次U-BOOT进去一个无限循环,同时读取的uImage'数据中止 PC:[<9f376478>] LR:<9f35a494>] SP:9f238060 IP:9f238090 FP:00000da1 R10:00000080 R9:00000200 R8:9f238f40 R7 :00000000 R6:00564a00 R5:00000020 R4:48060100 R3:00000000 R2:56190527个R1:R0 00000da2:00000001 标志:在模式SVC_32 NZCV的IRQ关闭使得FIQ复位CPU ... 复位...... ' – user7345878

回答

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/ 
+0

没有运气我从uEnv.txt获得了这个'Loaded environment 从mmc导入环境... 运行uenvcmd ... 读的/ boot/zImage的 **无法读取文件的/ boot/zImage的** 阅读/boot/am335x-boneblack.dtb **无法读取文件/boot/am335x-boneblack.dtb ** 糟糕的Linux ARM zImage魔术! gpio:引脚55(gpio 55)的值为1 **文件未找到/ boot/uImage ** U-Boot# ' – user7345878

+0

检查您的zImage是否存在于/ boot/zImage或不在...如果zImage所在的路径不是/ boot,然后使用zImage路径更新uEnv.txt中的“bootdir”变量。 –

+0

它在/ boot目录下。请参阅启动分区我有'MLO,uEnv.txt和u-boot.img',并在/ boot目录下的根分区我有'am335x-boneblack.dtb,am335x-bone.dtb和zImage' – user7345878