我正在编译自己的内核和引导加载程序(U-boot)。我添加了一堆新的环境变量,但是U-boot不再加载了(只是不加载内存中的任何内容)。我正在使用Pocketbeagle并从SD卡启动。因此,我正在编辑/ include / configs /中的文件“ am335x_evm.h”。
我正在尝试以一种方式分配U-boot,使其具有更多的环境变量空间,并且可以成功从内存中加载,但是我一直无法这样做。据我了解,默认情况下,它会为U-boot env变量分配128kb的内存。由于添加了很多,所以我试图将其大小从128kb增加到512kb。
我将以下行(从128kb更改为512kb):
#define CONFIG_ENV_SIZE (512 << 10)
(顺便说一句,谁知道为什么将它向左移10位?)
我还将CONFIG_ENV_OFFSET和CONFIG_ENV_OFFSET_REDUND更改为:
#define CONFIG_ENV_OFFSET (1152 << 10) /* Originally 768 KiB in */
#define CONFIG_ENV_OFFSET_REDUND (1664 << 10) /* Originally 896 KiB in */
然后在编译新的U-boot之后,我格式化SD卡并插入新的内核和U-boot。
我首先擦除分区:
export DISK=/dev/mmcblk0
sudo dd if=/dev/zero of=${DISK} bs=1M count=10
然后我通过执行以下操作来转移U-boot:
sudo dd if=./u-boot/MLO of=${DISK} count=1 seek=1 bs=512k
sudo dd if=./u-boot/u-boot.img of=${DISK} count=2 seek=1 bs=576k
然后我通过执行以下操作来创建分区布局:
sudo sfdisk ${DISK} <<-__EOF__
4M,,L,*
__EOF__
然后我添加内核,二进制树,内核模块等...当尝试引导并读取串行端口时,我什么也没得到。 U-boot无法从SD卡加载任何内容。我究竟做错了什么?如果您能指出我的问题所在,以及究竟该怎么做以增加大小并正确分配所有内容,我将不胜感激。