AnsweredAssumed Answered

imx6 zImage larger than 64MB stuck at "Starting kernel ..."

Question asked by Faisal Alghamdi on Nov 27, 2018

Hello Everyone,

 

I am working on the iMX6 Quad (EmbeddedArtists imx6qeaCOM on EmbeddedArtists carrier board). 

The initramfs image is embedded in the kernel image. So the kernel size went from 7 MB to over a few tens of megabytes. I realized that when I add more binaries and recipes to the image and it exceeds 64MB, the u-boot fails to load the kernel.

it gets stuck at "Starting Kernel ..." 

When I go under 64MB the kernel+initramfs load with no issue.

I tried to set the env args ramdisk_size to larger than 64MB but does not seem to be read by the u-boot.

I added the  INITRAMFS_MAXSIZE with value larger than 64MB in my local.conf but did not work even make any difference in the output image.

I edited image_types.bbclass and changed ramdisk_size in this line "ELF_APPEND ?= "ramdisk_size=32768 root=/dev/ram0 rw console=" 

 

I am not sure why  this is happening. Everything that's related to initramfs size was changed in my yocto environment but with no success.

 

Could that be the dtb files  and the src file ? I don't really know.. 

 

Thanks

 

my bootargs :

 

baudrate=115200
boot_fdt=try
bootcmd=mmc dev ${mmcdev};mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=3
bootscript=echo Running bootscript from mmc ...; source
cmd_hdmi=fdt set fb_hdmi status disabled
cmd_lvds0=fdt set fb_lvds0 status disabled
cmd_lvds1=fdt set fb_lvds1 status disabled;fdt set bl_lvds status disabled
cmd_rgb=fdt set fb_rgb status disabled;fdt set bl_rgb status disabled
cmd_ts=run cmd_ts_rgb; run cmd_ts_lvds0; run cmd_ts_lvds1;
cmd_ts_lvds0=fdt set ts_con_lvds0/ar1021_lvds0 status disabled; fdt set ts_con_lvds0/ilitek_aim_lvds0 status disabled; fdt set ts_con_lvds0/sitronix_lvds0 status disabled; fdt set ts_con_lvds0/egalax_ts_lvds0 status disabled; fdt set ts_con_lvds0/edt-ft5x06_lvds0 status disabled; fdt set ts_con_lvds0/mxt1664_ts_lvds0 status disabled;
cmd_ts_lvds1=fdt set ts_con_lvds1/ar1021_lvds1 status disabled; fdt set ts_con_lvds1/ilitek_aim_lvds1 status disabled; fdt set ts_con_lvds1/sitronix_lvds1 status disabled; fdt set ts_con_lvds1/egalax_ts_lvds1 status disabled; fdt set ts_con_lvds1/edt-ft5x06_lvds1 status disabled; fdt set ts_con_lvds1/mxt1664_ts_lvds1 status disabled;
cmd_ts_rgb=fdt set ts_con_rgb/ar1021_rgb status disabled; fdt set ts_con_rgb/ilitek_aim_rgb status disabled; fdt set ts_con_rgb/sitronix_rgb status disabled; fdt set ts_con_rgb/egalax_ts_rgb status disabled; fdt set ts_con_rgb/edt-ft5x06_rgb status disabled; fdt set ts_con_rgb/mxt1664_ts_rgb status disabled;
console=ttymxc0
ethact=FEC
ethaddr=00:1a:f1:10:03:bb
ethprime=FEC
fb_hdmi=1280x720M@60:m24:74161969,1280,720,220,110,20,5,40,5,0,0,0,0
fb_lvds0=hannstar:18:64998375,1024,768,220,40,21,7,60,10,0,0,0,0
fb_lvds1=hannstar:18:64998375,1024,768,220,40,21,7,60,10,0,0,0,0
fb_rgb=Innolux-AT070TN:24:33336667,800,480,89,164,75,75,10,10,0,0,1,0
fdt_addr=0x18000000
fdt_file=imx6qea-com-kit.dtb
fdt_high=0xffffffff
image=zImage
initrd_addr=0x12C00000
initrd_high=0xffffffff
ip_dyn=yes
loadaddr=0x12000000
loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
mfgtool_args=setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.file=/fat g_mass_storage.ro=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" enable_wait_mode=off
mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot} ${args_from_script}
mmcautodetect=yes
mmcboot=echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
mmcdev=2
mmcpart=1
mmcroot=/dev/mmcblk3p2 rootwait rw
netargs=setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp ${args_from_script}
netboot=echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
panel=Hannstar-XGA
script=boot.scr

Outcomes