`
dazhilao
  • 浏览: 244272 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】Android2.X移植到M8步骤说明(根据原文有所修改)

阅读更多
原文地址:http://www.m8diy.com/cn/?/log/show/5/Android2XYiZhiDaoM8BuZhouShuoMing/
Android2.X移植到M8步骤说明

1. 首先我们大家都知道Android是基于Linux之上的一个软件平台,Android移植的大部分工作其实是Linux到M8的移植。所以,我们首先需要完成Linux的移植。

2. M8原本是Windows CE 6.0系统(以下简称CE),因此需要解决如何从CE引导进入Linux的问题。烧boot是不可能了,幸好有HaRET这个好工具,它运行在WM下,可以直接读取linux的zImage文件实现内核加载。
学习HaRET,主页地址: http://www.handhelds.org/moin/moin.cgi/HaRET

3. 接下来要编译一个能在M8上跑起来的linux内核文件zImage。从www.kernel.org下载下来的linux源代码编译生成的zImage是无法直接跑起来的,因为缺了对M8硬件设备的驱动支持。最好有一套能直接支持M8设备的Linux源代码,有吗?没有。如果有的话这移植工作就太没劲了。不过,我们可以找到一个好的起点。请访问链接:
http://www.handhelds.org/moin/moin.cgi/GettingHandheldKernels
handhelds是一个组织,他们的工作就是移植linux到各种PDA上面,包括HP、HTC、DELL等等,还有Asus,不过都是一些老的型号,不包括M8。这个组织似乎有一两年没什么动静了,他们的Familiar项目最后版本v0.84发布日期是06年8月20日。所以指望他们去更新支持M8是不可能了,我还尝试过发邮件想加入他们的队伍,结果没人理我:( 。

看来只能自力更生了。他们虽然不更新了,但是他们的网站依然屹立。从上面的链接,我们可以下载到他们维护的最近的linux源代码版本2.6.21。这个版本就是我们的出发点。

4. 载下来的这套源代码我们称为handheld linux2.6.21,它与官方linux2.6.21的区别在于增加了对很多PDA设备的驱动支持。虽然不包括M8,但我们可以参考其他类似设备完成对我们设备的驱动支持。

那如何知道M8使用的都是什么芯片呢?这得下点狠功夫了,拆机!而且是很彻底的那种。不狠一点怎么能体会到干底层工作的乐趣?!

5. 知道了硬件芯片型号,可又不知道管脚连接,又不可能向MEIZU要电路图,怎么办?认真学习并操练过前面几个步骤的弟兄可能已经有答案了。HaRET这个工具再次出马,所以要....

通过HaRET这个工具,我们可以知道M8中各个部件对应的GPIO,最重要的是搞清楚键盘、LCD、触摸屏,这三个硬件驱动的成功移植是我们的首要目标,这样才能体验到Android Touch操作的快感!

6. OK,这几项准备工作完成后,您就可以开始埋头苦干了,写代码、编译、调试、拷贝、粘贴,快的话几天,慢的话几周,最后炮制出一个能在自己的机器上跑起来的zImage文件。

对了,得用这个交叉编译器:
http://www.codesourcery.com/gnu_ ... c-linux-gnu.tar.bz2

7. 光有zImage最多只能进入黑漆漆的命令行界面,无法验证键盘、液晶和触摸屏是否工作正常,解决这个问题,您可以到这里:
http://familiar.handhelds.org/re ... /files/ipaq-pxa270/
下载一个rootfs系统,将下载的文件解到M8中,然后通过HaRET引导您炮制好的linux kernel,启来后执行rootfs中的初始化脚本,进入GPE或者OPIE的图形界面,这时您就可以验证您的键盘、LCD和触摸屏驱动是否正常工作了。

如果还不正常,那再埋头苦干吧,这关必须过了才能继续往下走。

8. 过了上一关,Linux的移植已经被你踩在了脚下,您一定有一点兴奋感和成就感了。别急,让我们继续往上爬。

Android SDK 2.0使用的linux版本是2.6.25,而我们刚刚完成移植的版本是2.6.21,要知道他们之间有什么不同吗?在此推荐一个非常棒的工具,Meld Diff Viewer,有了它,后面的工作将变得易如反掌。
从Kernel.org下载一份官方的2.6.25,同您刚完成的handheld 2.6.21比较一下,不比不知道,一比吓一跳!改动的地方是不是很多?不要怕,让我们一步一步搞定。

我们之前的移植是基于handheld的版本完成的,多少有点让我们感觉是踩在了别人的肩膀上爬上来的。没关系,至少我们学会了爬。现在让我们回到地上,自己爬上来。
从Kernel.org再下载一份官方的2.6.21,用Meld同前面的handheld 2.6.21比较一下,将官方版本缺少的驱动合并过来,不要一股脑全部合并过来,看看您的P535缺少什么才合并什么,这样子您就非常清楚从官方下载的linux需要增加哪些驱动才能在您的机器上跑起来。

合并完成后,编译和调试您的官方2.6.21版本,让它也能顺利的跑起来,进入GPE和OPIE图形界面。

9. 把移植成功的官方2.6.21,同前面下载的官方2.6.25进行比较,官方比官方,差别是不是没那么恐怖了?同样,将2.6.25缺少的驱动文件从2.6.21合并过来,编译调试,让2.6.25也跑起来。

10. OK,下面我们要真正开始同Android打交道了。
先下载 Android 使用的linux版本,地址在此:http://code.google.com/p/android/downloads/list
再下载Android SDK 2.0:http://code.google.com/android/download.html
照此教程从SDK中提取Android的rootfs:http://discuz-android.blogspot.c ... id-file-system.html

现在就差Android的linux zImage了。

11. 将Android linux2.6.25同前面移植完成的官方linux2.6.25比较,找出其中的异同,将官方2.6.25缺少的东东从Android linux2.6.25合并过来,注意不要搞错方向了。其中,凡是涉及QEMU、Goldfish及yaffs2的内容没有用处,不要合并过来。您会发现其实Android对linux的改动很小。
这一步的详细操作请参考这个链接:http://elinux.org/Android_on_OMAP

然后编译,又得到一个zImage. 调试它,让它能顺利引导进入Android rootfs中的初始化脚本。

12. 引导进入Android的图形界面不像进入GPE和OPIE那么顺利,因为Android对LCD驱动有特殊的要求,需要Frame Buffer驱动支持double buffering 和 pan function。您需要参考这个帖子:http://androidzaurus.seesaa.net/article/105551643.html 或者 http://www.androidrd.com/thread-9-1-1.html 完成对2.6.25自带的Frame Buffer驱动的修改。

LCD驱动完成后就可以看到闪闪发光的 Android 机器人,并进入令人激动的 Android 界面了。

13. 但等等,触摸屏还不能正常工作!再漂亮的界面,不能 Touch哪来的快感?所以,一定要挺住,完成这最后一步。
Touchscreen驱动移植的关键在于2.6.25自带的WM97XX触摸驱动在pen点击屏幕时,没有发送 BTN_TOUCH 事件给上层,这在GPE下可以正常工作,但 Android可不理你,一点反应没有,因此,修改您的驱动,让它向Android发出求爱信息吧!

此外,触摸驱动发出的X坐标是对的,Y坐标是倒过来的,您需要修改驱动纠正一下姿势。参考:http://androidzaurus.seesaa.net/article/90045743.html


分享到:
评论

相关推荐

    《android 4.X 入门到精通》配套代码

    《Android 4.X 入门到精通》是一本旨在引导初学者系统学习Android应用开发的教程,其配套代码是学习过程中极为重要的实践素材。通过这些代码,你可以深入了解Android开发的基本概念,掌握各种控件的使用,以及如何...

    STEP7 V5.X移植程序到博途TIA注意事项——绝对经典.docx

    本文档总结了从STEP7 V5.X到博途TIA的移植注意事项,以便于用户更好地理解和执行移植操作。 一、前提要求 在开始移植前,需要确保以下软件已经安装在计算机上: * STEP 7 专业版(TIA 博途)V11 或更高版本 * ...

    rtl8723ds linuxandroid 驱动 内含详细移植说明,支持android4.4 -- android10.x.zip

    在本文中,我们将深入探讨如何在Linux Android系统中移植并使用rtl8723ds WiFi和蓝牙驱动,以及它在Android 4.4到Android 10.x版本间的兼容性。rtl8723ds是一款由Realtek公司设计的无线网络控制器,常用于嵌入式设备...

    ARM Cortex-A8和Android 4.x联动报警系统

    第二部分内容,先简单讲解Android系统移植相关原理,然后一步步手把手教大家如何进行Linux内核移植、Android源码编译、以及Android到Cortex A8开发板的移植;第三部分内容,先教大家如何搭建裸机开发环境,然后带领...

    SSH移植到android系统步骤.doc

    SSH移植到Android系统步骤 SSH(Secure Shell)是一种安全的远程登录协议,常用于Linux系统中。但是,Android系统并不具备SSH功能,这篇文章将讲述如何将OpenSSH移植到Android系统中。 Step 1: 获取OpenSSH源码 ...

    V5.x移植到TIA.pdf

    总的来说,从V5.x到TIA Portal的移植是一项涉及多步骤的过程,需要对软件环境、程序一致性、硬件配置、加密和安全程序进行详尽的检查和处理。在整个过程中,确保正确备份和谨慎操作至关重要,以防止数据丢失或项目...

    OpenSSH移植到android系统externel步骤

    ### OpenSSH移植到Android系统的详细步骤 #### 一、获取OpenSSH源码 为了将OpenSSH移植到Android系统,首先需要获取适用于Android平台的OpenSSH源码。Android SDK默认并不包含OpenSSH源码,但可以通过以下步骤来...

    android ndk环境下移植libiconv方法 附源码

    5. **链接库到项目**:将生成的`libiconv.a`库添加到你的Android项目中,修改项目的`Application.mk`文件,包含`libiconv`,如下所示: ``` APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP...

    基于ARM Cortex-A8和Android 4.x的联动报警系统 (Android 、A8、Linux、驱动、NDK)

    第二部分内容,先简单讲解Android系统移植相关原理,然后一步步手把手教大家如何进行Linux内核移植、Android源码编译、以及Android到Cortex A8开发板的移植;第三部分内容,先教大家如何搭建裸机开发环境,然后带领...

    u-boot-2010.06移植到TQ2440

    u-boot-2010.06移植到TQ2440,串口可以打印出东西,支持nor flash、nand flash、DM9000.

    dropbear移植到android9.0系统

    2. **编译链工具准备**:由于Android系统使用的是定制的Linux内核,其编译环境与标准的Linux有所不同,因此需要确保你有适合Android平台的交叉编译工具链。这通常包括GCC、LD和其他构建工具。 3. **Android源码集成...

    从STM32F10x系列移植到GD32F10x系列0722.pdf

    STM32F10x 到 GD32F10x 移植指南 本文旨在指导开发者从 STM32F10x 系列移植到 GD32F10x 系列,涵盖了硬件差异、内部资源对比、软件环境设置、外设移植等方面的知识点。 硬件差异 在移植过程中,了解硬件差异对...

    Node.js在Android上的移植node4android.zip

    Node.js在Android上的移植。移植的版本是0.8.8. Node4Android是相友游戏框架的一部分。相友主要理念,是采用node.js及前端web技术来写手游, 并且做到“单机安装,多机同玩“。 核心思想是以后台启动node.js写的...

    cocos2d-x的win32工程移植到Android

    ### cocos2d-x的win32工程移植到Android详解 #### 概述 本文将详细介绍如何将基于cocos2d-x引擎开发的win32项目移植到Android平台。这一过程涉及多个步骤,包括配置Android工程生成器、创建Android工程、导入代码...

    OSG引擎在Android Studio中的移植和运行.pdf

    【摘要】介绍的是将OSG(OpenSceneGraph)引擎移植到Android Studio中进行开发和运行的实践。OSG是一个基于OpenGL的开源3D图形渲染引擎,由C++编写,提供了高级别的API接口,用于实现三维可视化。文章分析了OSG引擎...

    Cocos2d-x将win32移植到android.doc

    将Cocos2d-x开发的Win32应用移植到Android平台是一项重要的工作,这使得游戏或应用能够覆盖更广泛的用户群体。以下是详细的移植步骤和注意事项: **第一步:配置Android工程生成器** 在开始移植之前,你需要确保...

    wireless_tools.29版本Android移植完的代码

    移植`wireless_tools.29`到Android系统主要涉及以下几个步骤: 1. **源码获取**:首先,从官方或者其他可靠来源获取`wireless_tools`的源码,确保是适用于Android系统的版本,例如这里的29版本。 2. **编译环境...

    Android驱动开发与移植实战详解_android驱动_android驱动_android_

    本文将深入探讨Android驱动开发与移植的实战细节,帮助开发者理解和掌握这一关键技能。 一、Android驱动概述 Android驱动主要分为内核空间驱动和用户空间驱动两部分。内核空间驱动直接与硬件交互,而用户空间驱动则...

    将Android移植到FS2410开发板上(转

    ### 将Android移植到FS2410开发板上的详细步骤及注意事项 #### 一、项目背景与目标 本文档旨在详细介绍将Android操作系统移植到FS2410开发板的具体步骤和技术要点。FS2410开发板是基于三星S3C2410处理器的一款...

    T507 AndroidQ WIFI模块移植说明.pdf

    T507 Android Q WIFI 模块移植说明文档提供了将 WIFI 模块移植到 Android Q 系统上的详细指南。 1. WIFI 模块移植的重要性 WIFI 模块是 Android 设备中的一个核心组件,负责将设备连接到 WIFI 网络上。随着 WIFI ...

Global site tag (gtag.js) - Google Analytics