您的位置:首页 > 移动开发 > Android开发

Android系统移植(一)

2016-01-27 13:27 295 查看

项目:安卓系统移植

1.什么是Android?

百度百科:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机平板电脑,由Google公司和开放手机联盟领导及开发。

而这只是书面用语,并不能让我们更清楚的认识what is Android? 就像android开源和兼容性技术负责人danmorrill在android开发手册兼容性部分所解释的,“android并不是传统的linux风格的一个规范或分发版本,也不是一系列可重用的组件集成,android是一个用于连接设备的软件块。”



what is Android?

而我个人认为安卓更像是应用系统或者应用程序,只不过是一种特殊的应用程序而已。

那我们又如何使用它呢?这就是我们接下来需要做的工作:Android系统移植

2.为什么需要移植Android?

Android系统移植就是为了让Android运行在特定的硬件环境,我们才能够使用它。那

怎么移植Android系统呢?首先来看看Android系统整体架构,以便于更清晰的认识它。

Android从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。



Linux内核和应用程序框架层之间的HAL层主要是对linux内核驱动的封装,将硬件抽象化,屏蔽掉了底层的实现细节。HAL规定了一套应用层对硬件层读写和配置的统一接口,本质上就是将硬件的驱动分为用户空间内核空间两个层面;Linux内核驱动程序运行于内核空间,硬件抽象层运行于用户空间。

了解了Android的整体架构,大家是不是更迷惑了?这不就是linux操作系统么?也有linux内核,也有库,框架等等。android开源和兼容性技术负责人dan morrill:“android并不是传统的linux风格的一个规范或分发版本”,Android并不是linux:

1. 它没有本地窗口系统

2. 它没有glibc支持

3. 它并不包括一整套标准的Linux使用程序

4. Android专有的驱动程序

虽然Android不是linux,但是它是基于linux内核的“操作系统”。因此我们移植Android也和linux的关系比较大。接下来回到我们的主题:怎么移植Android呢?

大家先想想当按下Android设备电源键时都做了什么工作?

当你按下电源开关后Android设备执行了以下步骤:



从这幅图上面,我们可以看到Android启动流程。

而Android操作系统运行所需要的三大重要部分:bootlader,kernel,ramdisk

Bootlader 作为引导程序,引导linux内核的加载。如uboot

Kernel linux内核,选用linux-3.5

Ramdisk 文件系统

有了这三个重要部分,我们的Android才能正常运行于目标硬件上。

接下来,我们就正式开始Android系统的移植的准备工作。

3.移植前奏

正式开始之前我们当然要准备好所需要的软硬件了:

目标硬件:TINY4412

开发环境:ubuntu 12.04.1-64位

编译器:arm-none-linux-gnueabi- 4.5.1

Android源码:Android4.2.2

Bootlader和kernel和Android4.2.2源码均由友善之臂提供

接下来可以开始准备移植前的工作了:

3.1 Bootlader模块

3.2 Kernel模块

3.3 Ramdisk模块

具体过程省略,见另一篇文档。

4.LED驱动测试

在移植Android完成成功启动Android后,编写LED驱动并测试。

此过程省略,见另一篇文档。

5.总结

1. 官方文档的重要性

2. 还是没有把握好项目整个流程,思路比较野

3. 解决问题的思路有点乱,没有理解清楚问题产生的根源便急于去解决而造成大量时间的浪费

这是我在CSDN写的第一篇博客,不足之处请大家见谅。若文章有任何错误的地方,欢迎大家指出。共同进步,共同努力!

未完待续!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: