我用的imx6q 4 核 linux 内核为3.05 ,由于加上了内核logo 导致内核超过了4M ,uboot引导内核失败。
内核大小:
hzl@hzl-virtual-machine:imx6q_nfs$ du -sh uImage
4.2M uImage
hzl@hzl-virtual-machine:imx6q_nfs$
uboot 启动报错:
MMC read: dev # 2, block # 2048, count 8192 ... 8192 blocks read: OK
## Booting kernel from Legacy Image at 10800000 ...
Image Name: Linux-3.0.35
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4318996 Bytes = 4.1 MB
Load Address: 10008000
Entry Point: 10008000
Verifying Checksum ... Bad Data CRC
ERROR: can't get kernel image!
解决办法:
碰到这种情况,将 bootcmd加载空间扩大即可
原来的环境变量:
MYIMX6EK200 > pri
bootdelay=3
baudrate=115200
ipaddr=192.168.18.81
serverip=192.168.18.18
netmask=255.255.255.0
loadaddr=0x10800000
rd_loadaddr=(0x10800000 + 0x300000)
netdev=eth0
ethprime=FEC0
uboot=uboot-myimx6ek200-6q.bin
kernel=uImage-myimx6ek200
ethaddr=00:01:02:03:04:05
nfsroot=/home/myzr/srv/nfs/rootfs
bootargs_base=setenv bootargs console=ttymxc0,115200 video=mxcfb0:dev=ldb,LDB-1024X600,if=RGB666
bootargs_mmc=setenv bootargs ${bootargs} ip=none root=/dev/mmcblk0p1 rootwait
bootcmd_tftp=run bootargs_base bootargs_mmc; tftpboot ${loadaddr} ${kernel}; bootm
bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs ip=${ipaddr} nfsroot=${serverip}:${nfsroot},v3,tcp
bootcmd_net=run bootargs_base bootargs_nfs; tftpboot ${loadaddr} ${kernel}; bootm
bootcmd=run bootcmd_mmc
update_uboot=tftpboot ${loadaddr} ${uboot}; sf probe 1; sf erase 0 0x200000; sf write ${loadaddr} 0 0x80000
update_uImage=tftpboot ${loadaddr} ${kernel}; mmc dev 2; mmc write ${loadaddr} 0x800 0x2000
splashimage=0x30000000
splashpos=m,m
lvds_num=1
ethact=FEC0
bootcmd_mmc=run bootargs_base bootargs_mmc; mmc dev 2; mmc read 0x10800000 0x800 0x2000; bootm
stdin=serial
stdout=serial
stderr=serial
Environment size: 1160/8188 bytes
修改 set bootcmd_mmc "run bootargs_base bootargs_mmc; mmc dev 2; mmc read 0x10800000 0x800 0x2500; bootm"
保存配置:
save