Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25796
  • 博文数量: 7
  • 博客积分: 295
  • 博客等级: 二等列兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-24 18:39
文章分类
文章存档

2009年(7)

我的朋友
最近访客

分类: LINUX

2009-06-12 09:44:52

android 文件结构:
---bionic:基本的库
---build:编译、配置所需的脚本
---dalvik:虚拟机
---development:程序开发所需的模板和工具
---external:扩展库
---frameworks:框架层
---hardware:硬件库
---kernel:linux 2.6内核
---out:编译默认输出
---packages:应用程序
---preuilt:编译工具
---system:Android底层库

移植方案一
对cupcake 1.5进行修改,是用的Benno的armv4方案,直接禁用Thumb。
移植工作主要是在armv5 与armv4指令的差异上,涉及到的文件如下:
bionic中的libc相关,主要是syscalls下的系统调用,bx,bxne,bxeq,bxls,bxle,bxmi,bxpl换为
BX() BXNE() BXEQ() BXLS() BXLE() BXMI() BXPL()。
定义:
#define BX(reg) mov pc, reg
#define BXNE(reg) movne pc, reg
#define BXEQ(reg) moveq pc, reg
#define BXLS(reg) movls pc, reg
#define BXLE(reg) movle pc, reg
#define BXMI(reg) movmi pc, reg
#define BXPL(reg) movpl pc, reg

build中相关编译选项的更改:
更改Makefile,以及包含的arm相关的文件。
使用ext2的环境变量 TARGET_USERIMAGES_USE_EXT2=true
重要的更改在build/core/combo/linux-arm.mk中,其中加入针对armv4t编译的相关宏定义。因为Thumb指令的不支持,所以采取的方法是直接不使用Thumb指令。即编译选项取出Thumb支持。

system中Android的系统配置的更改:
将涉及到之前所述指令的地方改为宏定义,增加对于armv4的相关设置的宏定义。
init.rc针对sd启动进行更改。

dalvik虚拟机的更改:
armv4t的,针对eabi的更改,具体能不能正常还未知。

external扩展库的更改:
jpeg,opencore,skia,sonivox,yaffs库的修改,基本都是编译选项的更改。

编译工具的选择:
一个是自己编译的gcc 4.2.1的源码,一个是koolu的针对arm920t的工具链。

结果:
两个工具链均无法通过编译,错误很奇怪,依然出在万恶的libc上。

参考Benno的blog:
http://benno.id.au/blog/?tag=android

阅读(1588) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:贴份android gps应用的代码

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