Android系统移植(一)

项目:安卓系统移植


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写的第一篇博客,不足之处请大家见谅。若文章有任何错误的地方,欢迎大家指出。共同进步,共同努力!

未完待续!

 

  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值