Hi,
I want to run uClinux on my Samsung s3c44b0 board. I chose
uClinux-dist-20070130.tar.bz2, linux 2.6.14 with patches from
http://opensrc.sec.samsung.com/ and cross compiler
(arm-uclinux-tools-base-gcc3.4.0-20040713.sh) from
http://opensrc.sec.samsung.com/download.html.
The system crashed when starting:
## Starting application at 0x0C008000 ...
Linux version 2.6.14-hsc0 ([EMAIL PROTECTED]) (gcc version 3.4.0) #48 Sat
Dec 8 21:01:02 EST 2007
CPU: Samsung-S3C44B0x [44b07700]
Machine: S3C44B0X Development Board
Memory management: Non-Paged(unused/noMMU)
CPU0: D no cache
Built 1 zonelists
Kernel command line: root=/dev/ram0 initrd=0x0c600000,1024k keepinitrd
PID hash table entries: 128 (order: 7, 2048 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 16MB = 16MB total
Memory: 13588KB available (1406K code, 107K data, 72K init)
Mount-cache hash table entries: 512
checking if image is initramfs...it isn't (bad gzip magic numbers);
looks like an initrd
Internal error: Oops - undefined instruction: 0 [#1]
CPU: 0
pc : [<0c021740>] lr : [<0c03fc38>] Not tainted
sp : 0c1cdd80 ip : 00000000 fp : 0c1cde14
r10: 00001000 r9 : 0c600000 r8 : 00000000
r7 : 00000000 r6 : 00001000 r5 : 00001000 r4 : 0c199b80
r3 : eaffffe7 r2 : fffffffc r1 : 0c601000 r0 : 00000000
Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment user
Process swapper (pid: 1, stack limit = 0x0c1cc194)
Stack: (0x0c1cdd80 to 0x0c1ce000)
dd80: 0c1cddac 0c1c4994 0c17fd64 0c1c4a34 0c1db970 00000001 0c1cdeac 00000000
dda0: 00000000 0c1cdf44 2d1cddcc 00000001 00000000 0c199b80 00000001 00000000
ddc0: 15752a00 0c1cddf4 0c1cddf0 0c1cddd8 0c02c03c 0c1c4994 00000001 00000001
dde0: 0c1cddf4 0c1cde18 0c1cddf4 00000000 0c1c4994 00100000 00000000 0c1cde50
de00: 0c1db970 0c1cdf44 0c1cdea8 0c1cde1c 0c0403d8 0c03f88c 00000000 00000000
de20: 0c1cdf98 00100000 00000000 0c1cde2c 0c1cde2c 00100000 00000000 00000000
de40: 0c1cdf98 0c1cdeac 00000001 00100000 00000000 00000000 0c0228c8 0c022878
de60: 0c17e08c 000004a9 0c1cde90 0c1cde78 0c0274d8 0c0228a8 000004b6 0c17e3f8
de80: 0c1cdeac 00000000 00000000 0c1db970 0c1c4a34 00000000 0c1cdf98 0c1cdf3c
dea0: 0c1cdeac 0c040510 0c03fee8 60000013 fffffb4a 00000000 00000001 ffffffff
dec0: 0c1db970 0c17d3c4 00000000 0c1296f8 00000000 00100000 0c1873cd 0c1c8cc0
dee0: 00000000 00000000 0c027a8c 0c027c04 0c129758 0c1cdf8c 0c600000 0c1873cd
df00: 00000010 0c1c8cc0 0c03a2b0 0c1cdf0c 0c1cdf0c 0c1cdf20 0c027c40 0c02758c
df20: 0c1264a8 0c1c4a04 00000000 0c1c4994 0c1cdf70 0c1cdf40 0c040750 0c040498
df40: 00000000 0c600000 00100000 0c1db970 00000000 00100000 0c1cdf98 0c600000
df60: 00000000 0c1cdf94 0c1cdf74 0c04eb28 0c040704 0c1db990 0c1db970 0c600000
df80: 00100000 fffffff7 0c1cdfc4 0c1cdf98 0c04ecc4 0c04ea5c 00000000 00000000
dfa0: 00000000 0c185680 0c18567c 00000000 00000000 00000000 0c1cdfe0 0c1cdfc8
dfc0: 0c00ef6c 0c04ec58 00000000 00000000 00000000 0c1cdff4 0c1cdfe4 0c01a098
dfe0: 0c00ee84 00000000 00000000 0c1cdff8 0c0298fc 0c01a07c 5a5a5a5a a55a5a5a
Backtrace:
Function entered at [<0c03f87c>] from [<0c0403d8>]
Function entered at [<0c03fed8>] from [<0c040510>]
Function entered at [<0c040488>] from [<0c040750>]
r6 = 0C1C4994 r5 = 00000000 r4 = 0C1C4A04
Function entered at [<0c0406f4>] from [<0c04eb28>]
Function entered at [<0c04ea4c>] from [<0c04ecc4>]
r8 = FFFFFFF7 r7 = 00100000 r6 = 0C600000 r5 = 0C1DB970
r4 = 0C1DB990
Function entered at [<0c04ec48>] from [<0c00ef6c>]
r8 = 00000000 r7 = 00000000 r6 = 00000000 r5 = 0C18567C
r4 = 0C185680
Function entered at [<0c00ee74>] from [<0c01a098>]
r6 = 00000000 r5 = 00000000 r4 = 00000000
Function entered at [<0c01a06c>] from [<0c0298fc>]
r4 = 00000000
Code: 0c186560 0c127960 0c17d9a0 e3a00000 (ee070f17)
<0>Kernel panic - not syncing: Attempted to kill init!
I went through the kernel source code, and found the crash point
is in the file init/initramfs:
void __init populate_rootfs(void)
{
char *err = unpack_to_rootfs(__initramfs_start,
__initramfs_end - __initramfs_start, 0);
if (err)
panic(err);
#ifdef CONFIG_BLK_DEV_INITRD
if (initrd_start) {
int fd;
printk(KERN_INFO "checking if image is initramfs...");
err = unpack_to_rootfs((char *)initrd_start,
initrd_end - initrd_start, 1);
if (!err) {
printk(" it is\n");
unpack_to_rootfs((char *)initrd_start,
initrd_end - initrd_start, 0);
free_initrd();
return;
}
printk("it isn't (%s); looks like an initrd\n", err);
fd = sys_open("/initrd.image", O_WRONLY|O_CREAT, 700);
if (fd >= 0) {
sys_write(fd, (char *)initrd_start,
initrd_end - initrd_start);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This sys_write function is the crash point.
sys_close(fd);
free_initrd();
}
}
#endif
}
I have no idea about this error. Do you have any suggestion?
Thanks!
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev