Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3037554
  • 博文数量: 674
  • 博客积分: 17881
  • 博客等级: 上将
  • 技术积分: 4849
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 10:15
文章分类

全部博文(674)

文章存档

2013年(34)

2012年(146)

2011年(197)

2010年(297)

分类: LINUX

2010-07-01 23:12:33

这一周里用晚上的时间把Android 在 QQ2440 上跑起来了。

  总体来说,不算太复杂。

  --------

  整个Porting 工作包括以下几个部分。

  我是希望用 Android 的 Eclair 版本,所以对应的 kernel 版本是 2.6.29.

  升级有两种方法:

  一种是利用 QQ2440 自带的 kernel 2.6.13 版本,由于该版本已经移植了QQ2440 的相关驱动,所以只需要将标准的kernel 的 2.6.13 和 2.6.29 的差异移植过来即可.

  另一种方法是直接在 上下载标准的 2.6.29 版本, 然后把 QQ2440 的驱动移植过来.

  我想接触更多的驱动移植, 所以选择了第二种方法.

  关于驱动移植的具体步骤, 可以参考下面这篇文档, 我觉得很不错.

  虽然它是基于 MINI2440 的, 但是与 QQ2440 在硬件上基本相同.

   99.html

  由于我的 QQ2440 只有64M 的存储空间, 所以我选择了用NFS.

  关于NFS 的设置,可以参考我的一篇文章:

  首先安装Git, 并下载2.6.29版本

  git clone git://android.git.kernel.org/kernel/common.git

  [root@localhost common]# git branch -a

  android-2.6.27

  origin/HEAD

  origin/android-2.6.25

  origin/android-2.6.27

  origin/android-2.6.29

  origin/android-2.6.32

  origin/android-goldfish-2.6.27

  origin/android-goldfish-2.6.29

  git checkout origin/android-2.6.29 -b amuhong-2629

  diff 一下获得与标准2.6.29 的差异,

  git diff v2.6.29 HEAD > android.patch

  

  把patch copy 到我自己的 kernel 2.6.29目录下面,执行

  patch -p1< android.patch

  很顺利,没有任何冲突.

  下面使能一些编译选项, 包括:

  CONFIG_AEABI

  CONFIG_ANDROID_PARANOID_NETWORK

  CONFIG_ANDROID_PMEM

  CONFIG_ANDROID

  CONFIG_ANDROID_BINDER_IPC

  CONFIG_ANDROID_LOGGER

  CONFIG_ANDROID_LOW_MEMORY_KILLER

  CONFIG_SHME

  CONFIG_ASHME

  CONFIG_ARM_THUM

  由于我用的是NFS, 所以没有使能 YAFFS 的选项

  编译 kernel, 烧到 QQ2440 扳子上.

  由于S3C2440 用的是 armv4 指令集,而 Android 编译系统用的是 armv5, 我虽然看到在 build/core/combo/arch/arm/ 里有armv4t.mk 文件.

  但是我在将 build/core/combo/linux-arm.mk 里指定 armv4 后,编译时 log 显示目前这个选项不支持, 可能以后的 Andoid 版本可以支持.

  修改Eclair 以使其支持 armv4 比较复杂, 我在网上搜了一些信息, 包括一些 patch, 但是都没有成功.

  所以退而求其次, 我在下面的link 中下了一个别人编好的 armv4 的 Android 文件系统.

  

  3.1 解压该文件,把 system 目录拷贝到 root/ 下面, 覆盖空的 system.

  data 做同样的操作.

  然后把 root 作为 NFS.

  3.2 在 init.rc 中有一行如下:

  mount rootfs rootfs / ro remount

  它是将根目录变为只读, 但是 /cache 是在根目录的, 所以需要注释掉它.

  3.3 在 dev 目录下, 创建两个字符节点

  mknod -m 660 null c 1 3

  mknod -m 660 console c 5 1
阅读(1649) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~