|
我的开发板在启动过程中,有70%左右的几率会出现一下问题:
.......
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 204
NET: Registered protocol family 1
NET: Registered protocol family 17
eth0: DSPCFG accepted after 0 usec.
eth0: link up.
eth0: Setting full-duplex based on negotiated link capability.
IP-Config: Complete:
device=eth0, addr=10.3.37.217, mask=255.255.255.0, gw=10.3.37.254,
host=iptv10, domain=, nis-domain=(none),
bootserver=10.3.37.121, rootserver=10.3.37.121, rootpath=
Looking up port of RPC 100003/2 on 10.3.37.121
Looking up port of RPC 100005/1 on 10.3.37.121
VFS: Mounted root (nfs filesystem) readonly.
Freeing unused kernel memory: 148k freed
到这里,就死机了.
若正常情况下:
接下来应该会出现以下信息:
Algorithmics/MIPS FPU Emulator v1.5
再下来就是开始执行文件系统的启动脚本了.
我用的是2.6.17内核,MIPS架构,跟踪发现,执行到
run_init_process("/sbin/init")的时候就死了(具体在init/main.c中),开始怀疑是文件系统问题,所以做了一个测试脚本test.sh.里面加了一些输出打印
然后在run_init_process("/sbin/init")之前就执行
run_init_process("/test.sh"),发现在其他板子上可以输出test信息,而这块板子不行.
所以就跟踪run_init_process代码,发现它定义如下
static void run_init_process(char *init_filename)
{
argv_init[0] = init_filename;
execve(init_filename, argv_init, envp_init);
}
但是却无法找到execve在哪里定义.无法继续往下查找
由于用 同样的kernel和文件系统,在其他板子上就不会出这个问题,所以可以确认是该板子硬件问题.
但是不知道问题出在何处,特向各位高手请教! |
|