Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257108
  • 博文数量: 22
  • 博客积分: 707
  • 博客等级: 上士
  • 技术积分: 458
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-28 20:45
文章分类

全部博文(22)

文章存档

2011年(12)

2010年(7)

2008年(3)

我的朋友

分类: 嵌入式

2010-06-02 23:38:19

最近一直在构建基本系统,基本步骤就是之前遵循CLFS的步骤,不过中间总会出现一些问题,本次出现的问题算是比较难发现点的,这里总结下


1. undefined reference to 'usleep', 这个是编译uClibc的时候配置项没有勾全,UCLIBC_SUSV3_LEGACY没有打开,所以没有编译进去,在编译busybox的时候最后链接阶段就会出错。

2. Freeing init memory: 140K
Kernel panic - not syncing: Attempted to kill init!

注意这里不是说找不到init,而是执行出错,开始怎么都找不到原因,后面google偶尔看到一个跟这个情况不一样的邮件列表,里面有说 arm-none-linux-gnueabi-readelf -A file 可以查看这个文件的二进制架构信息,所以对自己的busybox看了下发现:
[dang@DANG bin]$ armv4l-microha-linux-uclibceabi-readelf -A busybox
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "ARM10TDMI"
  Tag_CPU_arch: v5T
  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
原来架构错了,我的2440是v4架构的,这显然不行,所以想给gcc传递mcpu=arm920t来解决。不过后来发现不行,原来gcc4.5默认只支持v5及其以上版本,后面用-with-cpu=arm9tdmi 重新构建gcc,解决问题。

3. 顺便记下arch linux的 nfs让我吃的亏:
uboot,kernel的nfs用的v1或者v2版本,而arch的默认这两个直接关掉,所以就无法挂载,正如网上所述,问题基本都是nfs配置有问题。

4. 内核的底层架构代码原来现在基本都是platform driver 模型,只要熟悉下模型代码就很好修改。
阅读(3673) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

stone110102014-12-29 17:34:38

及其受用,太感谢了