- 论坛徽章:
- 0
|
平台: MIPS + linux 2.6.21 + busybox 1.4.11,内存 强制指定128M.
根文件系统是 initramfs ,
系统可以启动到,run_init_process , 但是在执行busybox 的/sbin/init时,挂住了。
通过跟踪 run_init_process -> execve-> sys_execve-> do_execve
能读到 busybox 的 elf 文件头, 就是执行不了。
做以下分析以及结论:
1. initramfs 肯定是好的, 因为能访问/sbin/init,且读出了改程序的二进制码
2. rootfs 已经mknod 了 /dev/console, 因为 open时没有报错, 这个mknod 是在vmware下做的,不知是佛需要交叉编译的mknod??
3. 网上说执行elf 需要float 支持, 在linux 编译选项中 有-msoft-floatt 的定义,所以和此项无关.
4. file vmlinux elf-32 /msb , file busybox 结果一样,不是文件格式的问题.
5 按照busybox 的建议, 讲busybox 换成 静态的helloworld 程序, 也没有打印,但是串口能输入字符
问题:
1. helloworld 执行后, 系统无打印, 串口敲回车能响应, 也不出现panic,
怀疑 系统不能执行 elf 文件,在某处将系统挂住了, 否则应该会出现panic, 难道是MMU不对?
mips的kseg0是不需要内存映射的,
应用程序 helloworld的入口是 0x00....打头的, 不知系统如何做的映射?
2. helloworld中直接调用printf, 按照busybox的说明,说printf会在串口打印 printf的内容。
可是没有打印, 如何才能打印, 需要先激活一个shell吗?
问题是执行/sbin/init 的bash 也会挂住。
各位帮忙分析下,什么原因啊 |
|