项目:安卓系统移植
1.什么是Android?
而这只是书面用语,并不能让我们更清楚的认识what is 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写的第一篇博客,不足之处请大家见谅。若文章有任何错误的地方,欢迎大家指出。共同进步,共同努力!
未完待续!