Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4465
  • 博文数量: 1
  • 博客积分: 55
  • 博客等级: 民兵
  • 技术积分: 14
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-06 14:29
文章分类
文章存档

2014年(1)

我的朋友
最近访客

分类: 嵌入式

2014-12-29 17:26:32

最近一直在构建基本系统,基本步骤就是之前遵循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 模型,只要熟悉下模型代码就很好修改。
阅读(1121) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~