您的位置 首页 传感器

s3c2440 android 移植

ARMv4移植简单教程:相信国内很多朋友手上都有s3c2410/2440的片子,基于armv4t(arm920t)的指令架构。在之前,因为android的一些底层代码…

ARMv4移植简略教程:

信任国内许多朋友手上都有s3c2410/2440的片子,根据armv4t(arm920t)的指令架构。在之前,我们android的一些底层代码含有armv5t的指令,所以曾经无法移植到这样的渠道。在这里也放出移植教程和现已编译好的image。让更多的朋友能够在自己的开发板上亲自体会android。教程根据勤研qt2410以及扬创utu2440完结。
留意,移植是到armv4而不是armv4t, 原因应该是不开thumb支撑会比较好移植一些(改动未触及的库仍然会用thumb代码,所以kernel仍然要开thumb支撑)。
kernel移植及nfs装备的具体部分等请自行查阅相关文档,本文只做提点,别的需求些git的操作。
现在的image仅仅暂时计划。主要是根据openmoko的benno一些没有正式发布的patch,全体来说现已比较完善和clean,我仅做了点小修正就能运用,我们部分库用c完成替换掉了arm完成,一起一些critical的armv5指令被armv4的替换,速度或许有点慢,尤其是2410上速度很慢。。关于乱用的android开发组来说,这些patch部分没有提交,部分在reviewing,还需求一些周期才会被承受进官方git。等这些patch被官方承受后,我会收拾另一套正式一些的版别,一起或许会供给些优化计划。

A. kernel的移植
1. 移植,两个计划能够选。
1). 将android的官方kernel的补丁打到自己的kernel上,这个办法关于kernel版别比较新的朋友比较适宜,也很简略。比方2.6.24或以上。
a. 下载android kernel,碑文 git diff v2.6.25 HEAD > android.patch
b. 进入你自己的kernl,碑文 git apply android.patch
c. 一般都会出error,手动兼并一切带error的文件,假如你是2.6.25的话很简略,2.6.24会费点曲折,我们kobject/kset的一些改动形成android power/ipv4等驱动不太好合。。
2). 将自己kernel上的bsp移植到android官方kernel。适用于kernel比较旧的朋友。
我们2410/2440是linux原生支撑,所以基本上只需求移植lcd/touchpanel/网卡等等的驱动,并翻开2410/2440支撑选项即可。
2. 这些过程完结后,查看如下选项是否都现已翻开(make menuconfig):

显现代码打印
1 CONFIG_AEABI=y

2 CONFIG_SHMEM=y

3 CONFIG_ASHMEM=y

4 CONFIG_ARM_THUMB=y

5 CONFIG_ANDROID_BINDER_IPC=y

6 CONFIG_ANDROID_LOGGER=y

以下不一定重要, 但能开就开,除非移植有问题,比方power驱动:

显现代码打印
1 CONFIG_ANDROID_POWER=y

2 CONFIG_ANDROID_POWER_STAT=y

3 CONFIG_ANDROID_POWER_ALARM=y

4 CONFIG_ANDROID_RAM_CONSOLE=y

5 CONFIG_ANDROID_TIMED_GPIO=y

6 CONFIG_ANDROID_PARANOID_NETWORK=y

3. 按需求make zImage,再生成uImage,烧写到nand。

B. 制造android nfs root
1. 下载我做好的android_armv4 image包,见帖子下方
2. 准备好能发动的nfs root,设置好拜访权限(重要!).
3. 劳动包中的system目录到nfs_root/system, data目录到nfs_root/data, root目录到nfs_root/ (其他.img文件能够模拟器运用,一起也能够做实在文件体系,后话了)
4. 设置nfs发动参数中的init=/init,既指向nfs_root下的init
5. 删去nfs_root/init.rc,去掉除mount tmpfs tmpfs /sqlite_stmt_journals size=4m之外一切的mount指令

C. 运转!
跑跑看吧,进入android console之后能够运转logcat查看log。第一次发动会创立许多的数据,会比较慢,2410几乎是折磨了。。往常的发动速度2440大概在1分多钟,2410要5分钟了。看到美丽的大手表,你就搞定了!!

常见问题:

1. lcd不显现, 查看framebuffer..假如正常,查看nfs权限。
2. 不合法指令,查看thumb,eabi选项。
3. servicemanager反常退出,查看binder & ashmem选项。
其他的看kernel log和logcat自己剖析吧.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/264496.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部