关于U-boot如何在BeagleBone Black上运行,我有一系列问题。一切都从本教程开始,介绍如何使用micro SD卡(uSD)作为额外存储。
目前我的设置看起来像这样。
$ fdisk -l
Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes #uSD
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 198655 98304 e W95 FAT16 (LBA)
/dev/mmcblk0p2 198656 15523839 7662592 83 Linux
Disk /dev/mmcbk1: 3867 MB, 3867148288 bytes #eMMC
Device Boot Start End Blocks Id System
/dev/mmcblk1p1 * 2048 198655 98304 e W95 FAT16 (LBA)
/dev/mmcblk1p2 198656 7553023 3677184 83 Linux
所以,如果我没有错,这就是发生的事情。
Boot sequence.
1.The BBB is powered.
2.The U-boot is loaded from the eMMC(/dev/mmcblk1p1)
3.The U-boot searches for uEnv.txt file within the uSD(/dev/mmcblk0p1) and loads it.
...... We will retake from here.
在/dev/mmcblk0p1
我有一个uEnv.txt
文件,看起来像这样。
mmcdev=1
bootpart=1:2
mmcroot=/dev/mmcblk1p2 ro
optargs=quiet
在/dev/mmcblk1p1
中我有默认的uEnv.txt
文件,在某些时候会有这样的行。
loadkernel=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${kernel_file}
loadinitrd=load mmc ${mmcdev}:${mmcpart} ${initrd_addr} ${initrd_file}; setenv initrd_size ${filesize}
.......
mmcargs=setenv bootargs console=tty0 console=${console} ${optargs} ${kms_force_mode} root=${mmcroot} rootfstype=${mmcrootfstype} ${systemd}
我们可以看到如何使用$ {mmcdev},$ {mmcroot},$ {optargs},尽管它们没有在文件中定义,它们是uSD uEnv.txt定义的。
Question 1.
¿Does this mean that both uEnv.txt files are loaded?
重新启动启动顺序。
Boot sequence.
4.The U-boot searches for uEnv.txt file within the eMMC(/dev/mmcblk1p1) and loads it.
5.The Linux kernel is loaded.
如果没有uSD,$ {mmcdev},$ {mmcroot},$ {optargs}参数都没有定义,至少不在uEnv.txt中。
Question 2.
¿Where do the default values come?
现在真正困扰我的部分。在另一块板上,有一个看起来像这样的eMMC uEnv.txt文件。
optargs=quiet drm.debug=7 capemgr.enable_partno=BB-UART2,BB-UART1
没有uSD,电路板可以正常启动。
Question 3.
How is that even posible?
答案 0 :(得分:-1)
问题的答案应该在您的电路板配置文件中。具体来说,定义' CONFIG_EXTRA_ENV_SETTINGS' - "将其定义为包含任意数量的空终止字符串(变量=值对),这些字符串将成为编译到启动映像中的默认环境的一部分。&#34 ; (来自u-boot README文件)