这篇文章重点在于探讨移植linux2.6.32和busybox到TQ2440开发板上可能出现的问题分析
对于移植过程,请按照指导书上的内容按部就班操作
问题1. 卡死
描述 文件系统不能加载
Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kernel to SDRAM done,NOW, Booting Linux......
Uncompressing Linux................................................................................................................................. done, booting the kernel.,
然后,在此处卡死了
可能的解决方案:
查看Uboot传递的参数,可能是bootargs参数错误,比如root=/dev/mtdblockx x的值不对,比如文件系统rootfstype=yaffs2 内容书写错误
问题2: Kernel panic
描述:文件系统加载成功后
Free init memory :140k
Kernel paic -not syncing: Attempted to kill init!,然后卡死
可能的解决方法:
1. 在内核编译时候,注意打开对EABI,OABI的支持,2440的指导文档上着重提到了这一点
需要增加如下选项:
Kernel Features------->
【*】use the ARM EABI to Complile the kernel
【*】Allon old ABI binaries to run with kernel
则可以运行支持EABI的编译器编译的应用程序了
2. 查看busybox的属性
your rootfs #readelf /bin/busybox -A
Tag_CPU_name: "4T"
Tag_CPU_arch: v4T
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align8_needed: Yes
Tag_ABI_enum_size: int
看支持的CPU架构Tag_CPU_arch是否为V4T,因为S3C2440是V4T的,一些编译器版本比如codesourrce出品的arm-2009q1是默认支持armv5t的
如果显示的 CPU架构是Tag_CPU_arch: xxx xxx不为V4T
请修改busybox的Makefile
#vi Makefile
设置工具链
修改
CC=$(CROSS_COPILE)gcc
为
CC=$(CROSS_COPILE)gcc -march=armv4t
问题3: 不能进控制台
描述
一直打印
cant'open /dev/s3c2410_serial: No such file or director
可能的解决方案
修改 etc/inittab
#vi /etc/inittab
s3c2410_serial::askfirst:/bin/sh修改为
console::askfirst:/bin/sh