I use MPC8313 board , but when i insert some file to initramfs ,then compiling, the uImage file is bigger then 6.7M ,and then i can't start kernel success ,the print is belowd :
---------------------------------------------------------------------------------------------------------end .
Then it will start again ,repert and repeat
Solved! Go to Solution.
I solved this problem .
because the kernel decompress function . we limit the decompress size then we decompress uimage . like this :
unc_len = CFG_BOOTM_LEN
gunzip ((void *)ntohl(hdr->ih_load), unc_len, (uchar *)data, &len)
if the uimage is bigger then the unc_len ,then we decompress uimage is not complete ,and the kernel is not complete . so when we jump to run kernel ,cpu doesn't know how to run ,so it's will reboot by itself .
I solved this problem .
because the kernel decompress function . we limit the decompress size then we decompress uimage . like this :
unc_len = CFG_BOOTM_LEN
gunzip ((void *)ntohl(hdr->ih_load), unc_len, (uchar *)data, &len)
if the uimage is bigger then the unc_len ,then we decompress uimage is not complete ,and the kernel is not complete . so when we jump to run kernel ,cpu doesn't know how to run ,so it's will reboot by itself .
And I see some discription in head.S ,like this :
------------------------
So , mabey the limit 8M is set by assembly code ? ,how can i fix it ?
Hello li nes,
Please refer to the following definition in ./include/configs/MPC8313ERDB.h, this is Initial Memory map for Linux, please modify it according to your requirement.
#define CFG_BOOTMAPSZ (8 << 20)
CFG_BOOTMAPSZ is used in the function do_bootm_linux in file ./common/cmd_bootm.c.
In addition, in LTIB released Linux BSP, we provide customers uImage + ramdisk rootfs filesystem, we recommend users use this method to boot up Linux system and add your own files in the rootfs filesystem.
Have a great day,
TIC
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Think's very much .
but i set #define CFG_BOOTMAPSZ (254<<20) ,is max then my uimage file .
and the print like this : " => set upper limit to 0x0FE00000 " 254M is bigger then 6.7M
and uboot is boot finished ,no any abnormal message .
just when jump to boot kernel ,and no any message print out ,and then reset auto .
and I find the reset code is : EXCEPTION(0x100, Reset, unknown_exception, EXC_XFER_STD)
but I don't know how to fix it .