In a single uImage to contain the compressed kernel and rootfs, if the uImage is greater than 16MB, the system will not boot and reports errors. Is there a size limitation on uImage? If so, is there a work around?
uImage should only contains kernel compressed. rootfs should be read through a linux partition after the kernel boots up.
Regarding the uImage's size, there is no limitation. In the other hand, a single uImage with kernel and filesystem is needed; in other words, kernel (alias uImage) needs a filesystem to work, and these are two independent systems in that sense. If u-boot, kernel and filesystem are in a single device (SD Card), the filesystem must be mounted in the first partition (SD, eMMC, etc) starting somewhere > 16M/512 sectors.
But in cases where:
* A fast boot is needed with very small rootfs
* As a intermediate (temporal) rootfs before switching to the real rootfs. The usage (actually used when flashing with the MFG tool) of this intermediate system is to load heavy modules, keeping the uImage small.
This mechanism is called initramfs and the uImage will contain the kernel and the this mini rootfs compressed as cpio archive.