
最近对 Android 颇感兴趣,因此买了一块 OMAP3530 来移植 Android2.2,OMAP3530 所选的板子为英码的 SBC3530,
移植下来感觉优缺点都有,如下:
优点:
1. kernel 的代码在高版本包含了 SBC3530(omap3_stalker)的板型配置和初始化,有助于移植 Android
缺点:
1. 板上按键设计不合理,复位键在板子的中间,7 寸的触摸屏盖上去之后就无法按复位了
2. 板上的测试用例和指导过少,很多功能都无法测试,只能自己移植,给移植 Android 带来不少麻烦,像音频测试,
触摸屏测试,自定义按钮测试等
这次移植在 Fedora13 上使用最新的 Android 主干代码,所以不具有通用性,只能给大家做一个参考~
由于时间原因,以下 2 个主要功能没做:
1. ALSA 音频的 Android 移植
2. SD 卡的 Android 自动挂载
我的环境搭建如下:
2 台电脑,SBC3530 一台,使用一个路由器来互相联网
电脑 A 跑 XP 系统,提供 TFTPD 服务,使用 SecureCRT 来登陆 SBC3530 的串口,使用 Source Insight 来检索 kernel
和 android 的源代码,使用 SFU 提供 NFS 服务来在电脑 AB 之间进行文件共享
电脑 B 跑 Frdora13,负责编译 Android,并为 SBC3530 提供 NFS 的 ROOT 挂载服务
移植过程如下:
1. 获取 Android 代码的更新工具 repo
curl http://android.git.kernel.org/repo > ./repo
2. 给 repo 增加可执行权限
chmod a+x ./repo
3. 使用 repo 更新 Android 的主干代码,我更新的时候下了 4G 的文件.....
repo init -u git://android.git.kernel.org/platform/manifest.git
repo sync
4. 编译 Android 只要执行 make 即可
5. 我下载的 Android 主干使用 JDK6,并且需要 64 位环境,如在 32 位下编译需要修改如下文件
external/clearsilver/cgi/Android.mk
external/clearsilver/java-jni/Android.mk
external/clearsilver/util/Android.mk
external/clearsilver/cs/Android.mk
将 ifneq 改为 ifeq 可暂时规避问题
# This forces a 64-bit build for Java6
ifneq ($(filter 1.6%,$(java_version)),)
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
endif
6. 编译过程中会缺少一些系统组件,用 yum 下载安装即可