After a lot of hassle I have my SD card up and running. uClinux boots and mounts the filesystem from the SD card.
As seen below I've inserted some code into init/main.c to be able to fetch return values from kernel_execve() The return value is 8, which according to errno.h is /* Exec format error */. However I've checked so that the binary is in correct format (see below).
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new SDHC card on SPI
mmcblk0: mmc0:0000 SD04G 3.69 GiB
VFS: Mounted root (ext2 filesystem) on device 179:0.
kernel_execve(/bin/init) returned 8
Failed to execute /bin/init. Attempting defaults...
Kernel panic - not syncing: No init found. Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.
I have checked that:
/bin/init is in correct binary format (bFLT)
Build Date: Tue Feb 5 13:33:00 2013
Data Start: 0x7fa0
Data End: 0x8f00
BSS End: 0x1c6e0
Stack Size: 0x1000
Reloc Start: 0x8f00
Reloc Count: 0x311
Flags: 0x9 ( Load-to-Ram Gzip-Data-Compressed )
What is going on here? I've tried to compile a simple "Hello World" and replacing init= with that binary, and I get the same results (errno 8). Shouldn't the binaries be in bFLT format? I have tried with ELF as well, but same result. Thanks in advance.