android 移植s3c2410/2440(armv4t)教程

By | 01月02日
Advertisement

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!

原文地址:http://www.androidin.com/bbs/viewthread.php?tid=2741&extra=page%3D1

Similar Posts:

  • s3c2410/2440(armv4t) 移植android

    http://blog.csdn.net/java211/archive/2009/02/02/3857586.aspx [本教程版权以及image属于Androidin 转载和使用请注明出处并附带链接] Androidin首发 Androidin Dev.Team 熊猫哥哥 ARMv4移植简单教程: 相信国内很多朋友手上都有s3c2410/2440的片子,基于armv4t(arm920t)的指令架构.在之前,因为android的一些底层代码含有armv5t的指令, 所以以前无法移植到这样的平台

  • [转]s3c2410/2440(armv4t) 移植android

    Androidin首发 Androidin Dev.Team 熊猫哥哥 ARMv4移植简单教程: 相信国内很多朋友手上都有s3c2410/2440的片子,基于armv4t(arm920t)的指令架构.在之前,因为android的一些底层代码含 有armv5t的指令, 所以以前无法移植到这样的平台. 在这里也放出移植教程和已经编译好的image. 让更多的朋友可以在自己的开发板上亲身体验android.教程基于勤研qt2410以及扬创utu2440完成. 注意,移植是到armv4而不是armv4t

  • Android平台Qt开发入门教程——1

    Android平台Qt开发入门教程--1 http://www.wanshua.com/forum.php?mod=viewthread&tid=16006 很多人会问,Android平台可以不使用Java开发应用程序?? 我做Android平台native开发之前,也有这么想过,但是我又想,底层系统全是c/c++代码,用c/c++开发Android平台程序是可能的,只是需要使用系统非公开的API(就是android源代码,而非NDK里面提供的头文件),比如libui和skia. 好了,由于我的

  • android用户界面之PopupWindow教程实例汇总

    android用户界面之PopupWindow教程实例汇总

  • s3c6410 android 移植

    主要过程: . 安装lunux 环境 . 安装编译工具 . 下载Linux kernel . 安装Android SDK . 获得root file system . 修改Linux kernel 源码 . 配置Linux kernel . 修改root file system . 编译Linux kernel . 下载kernel Image 1.安装linux 环境 安装Ubuntu Linux 系统,从网站上下载操作系统安装光盘映像,地址: http://mirror.lupaworld.

  • 国外有机油把google手机操作系统Android移植到HTC Touch Diamond上了!

    如题:国外有机油把google的手机操作系统Android移植到了HTC Touch Diamond上了,听说采用Android操作系统的 HTC Dream 手机也会在四月份发布,不知道国内有人在做这个移植工作没有?现在google的Android很热啊,很多ppc智能机都在做移植工作,Windows Mobile体积也太大.太复杂了,这也应该是容易死机的原因吧,下面是在HTC Touch Diamond上运行Android的一段视频 Android移植到HTC Touch DiamondAn

  • Cocos2d-x Mac下环境搭建&Android移植

    准备工作 下载:Cocos2d-x 2.2.1 目前2.x的最新版本,ADT 22,NDK r9 一. 新的创建项目的方式 2.1.5之前是使用模板,现在是使用py脚本生产跨平台的所有工程(方便了很多) 进入 /cocos2d-x-2.2.1/tools/project-creator/ 目录下执行命令 如下: python ./create_project.py -project TestGame -package com.MyCompany.TestGame -language cpp 会在

  • [转]u-boot-2010.12移植到2440(五,支持内核引导)

    u-boot-2010.12移植到2440(五,支持内核引导) 转自 http://my.chinaunix.net/space.php?uid=24319701&do=blog&id=147909 为了让U-boot支持内核引导,需要涉及u-boot和linux内核的配合,u-boot传递启动参数给linux内核.其中以machine ID最为重要,是内核能够正确引导的先决条件.其他参数则通过gd->bd数据结构传递给内核. 1.u-boot的配置和修改 首先需要在include/

  • 电脑怎么安装安卓(Android)x86 不使用U盘安装Android x86 4.4详细教程

    Android x86是什么?安卓(Android) x86是安装在Intel/AMD等PC平台上的安卓系统,也就是说不用安卓虚拟机你也在电脑上玩安卓软件和游戏了,这对喜欢用电脑玩安卓版游戏的朋友真真是极好的. Android x86 是Google为PC平台提供一套完整的Android系统解决方案,可以支持大部分安卓程序在电脑中运行.很多朋友还不怎么会安装Androidx86,下面小编就让教大家怎么在电脑上不使用U盘来安装Androidx86教程,一起详情来看看了解一下! 不使用U盘安装And

  • Cocos2d-x 3.x 全平台(Android,iOS)新手开发配置教程攻略

    本文为Cocos2d-x 3.x 全平台(Android,iOS)新手开发配置教程攻略,希望对大家有所帮助.因为这篇文章是面对新手的.所以有些地方会啰嗦一些,请勿见怪.如果教程中有错误,欢迎指正.如果在配置开发平台时还遇到问题,欢迎大家讨论. 本文所使用的环境是PC(Win7),HTC G18,MacBook Air 以及 Mini iPad. 一.通用准备工作 1.安装Cocos2d-x 3.1 在Cocos2d官网上下载Cocos2d-x 3.1引擎,下载后解压缩. 2.安装Eclipse与

Tags: