s3c2410/2440(armv4t) 移植教程

Androidin首发
Androidin Dev.Team 熊猫哥哥

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):
        CONFIG_AEABI=y   
        CONFIG_SHMEM=y   
        CONFIG_ASHMEM=y
        CONFIG_ARM_THUMB=y
        CONFIG_ANDROID_BINDER_IPC=y
        CONFIG_ANDROID_LOGGER=y
        以下不一定重要, 但能开就开,除非移植有问题,比如power驱动:
        CONFIG_ANDROID_POWER=y
        CONFIG_ANDROID_POWER_STAT=y
        CONFIG_ANDROID_POWER_ALARM=y
        CONFIG_ANDROID_RAM_CONSOLE=y
        CONFIG_ANDROID_TIMED_GPIO=y
        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自己分析吧~ 呵呵~

简单流程就是如此,中间可能会遇到很多困难的!wish u luck!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
这是我买的广嵌GEC2410开发板里面附带的教程 目录: ARM9基础实验教程 第一章 嵌入式系统 1.1 嵌入式系统的概念 1.2 嵌入式系统的组成 1.3 嵌入式系统的发展 1.4 嵌入式系统的应用前景 第二章 ARM9 体系结构 2.1 ARM 简介 2.2 ARM 微处理器结构 2.3 寄存器组织 2.4 异常(EXCEPTIONS) 2.5 ARM 微处理器的应用选型 第三章 ARM9-2410EP开发板说明 3.1 系统概述 3.2 电路说明 3.3 FLASH 芯片的烧录 第四章 ADS 开发及 MULTI-ICE 仿真器应用 4.1 ADS 集成开发环境组成介绍 4.2 使用 ADS 创建工程 4.3 工程的调试 4.4 MULTI-ICE 仿真器及超级终端 第五章 嵌入式开发基础实验 实验一 汇编指令实验 1 实验二 汇编指令实验 2 实验三 C 语言程序实验 1 实验四 C 语言程序实验 2 第六章 基本实验 实验一 无仿真器程序下载运行实验 实验二 I/O接口实验 实验三 串口通讯实验 实验四 实时时钟实验 实验五 I²C 实验 1—EEPROM 实验 实验六 I²C 实验 2—基于 I²C 数码管扫描电路 实验七 WATCHDOG 实验 实验八 触摸屏控制实验 实验九 I/O实验——8×8发光二极管点阵试验 实验十 A/D转换实验 实验十一 D/A转换实验 实验十二 音频接口 I²S实验 实验十三 键盘中断实验 实验十四 SUPER I/O串口实验 实验十五 SUPER I/O键盘实验 实验十六 网络通信实验 实验十七 PROGRAM FLASH实验 第七章 扩展实验 实验一 GPS 实验 实验二 GPRS实验 INDEX END, 共196页
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值