1.Android设备设计之七层结构:

第一层:HardWare  =  硬件层。

第二层:Bootloader  =  引导层。

主要包含:初始化时钟,内存等;以便引导linux内核。

第三层:Linux Kernel  =  Linux内核驱动层。

主要包含:外设驱动;内存管理;进程管理;电源管理;其实这些都是linux kernel 具有的功能。

第四层:HAL  =  Hardware Abstraction Layer  -  硬件抽象层。

主要包含linux的动态链接库*.so;以及嵌入到APK的NDK代码。

第五层:Library and Runtime  =  系统运行库层

第六层:Application FrameWork layer  =  应用框架层

主要是直接面向应用程序的Java APK。

第七层:Application  =  应用层

所谓的各种APP,包括:拍照,电话,短信,android桌面,浏览器,以及各种游戏。


2.对于和Android 移植相关的工作岗位分类:

(1)android应用移植:由于应用程序在不同的硬件平台之间是有差异的,android SDK API 也有可能有差异(因为有的平台厂商会修改原生android SDK API)

(2)android系统移植:主要针对上面的第二层部分内容,因为android的底层其实就是linux系统,而linux系统可以移植到很多硬件平台(ARM,X86,PowerPC),主要的工作还是要保证最小系统可以在特定的平台上可以跑起来,同时还要保证各种外围设备能够正常工作,例如(LCD,TP,camera,BT,WLAN,GPS等等)

PS:android系统移植外设驱动的时候,如果外设厂家提供驱动代码的话,开发难度很小;如果厂家不提供参考代码的话,需要自己根据系统驱动框架编写设备驱动,这样的话,难度还是相当大的,尤其是一些复杂的外设。


3.什么是HAL层,为什么会有HAL层?

HAL层的中文名称叫,硬件抽象层。

存在形式:HAL层的代码一般有C或C++的形式存在,最终编译生成*.so,一种linux动态链接库文件。

那么为什么会有HAL层呢?有什么好处呢?

首先说一下HAL的作用,它处在linux驱动内核层和Android Framework层之间,起着承上启下的作用。

如果没有他,Android SDK会直接和linux 驱动内核直接沟通;这样很不好,不符合很多人的利益,因为各种外设驱动属于linux,而linux又是遵循GPL开源协议,这样的话,驱动代码也要开源,但是这些驱动是很多外围设备厂家辛辛苦苦开发的,不愿意这样白白的开发给所有人,包括很多竞争对手;

那怎么办?由HAL层来解决这个困难,HAL其实就是把原来驱动的控制逻辑一部分独立出来,编译生成SO文件,这部分代码不遵循GPL协议,不需要开源,保证了外设厂家的利益,同时也不影响linux的框架设计。


4.查看linux内核版本的命令:

(1)设备启动后,等待adb口 的出现

(2)adb root

(3)adb shell uname -a   该命令不行,可以使用   adb shell cat /proc/version


5.搭建开发环境

(1)搭建软件开发环境,构建linux虚拟机(后面详细介绍)

(2)搭建硬件开发环境,开发板;不一定非要使用网上推荐的SC2440等开发板,只要是一个嵌入式设备都可以,手机或者pad等,只要你有相关的设备资料就可以。

驱动开发的最大的魅力就是软硬结合,没有硬件设备,无从谈起驱动开发;也是限制驱动学习的门槛之一。


6.要想学习Android驱动都需要哪些方面知识:

(1)硬件知识:电子通信方面的内容;主要是能看懂电路原理图基本就可以了。

(2)linux操作系统相关知识:包括linux虚拟机使用,linux基本常用命令。

(3)基本脚本知识:shell脚本,简单Makefile。

(4)了解编译系统:编译工具的选择,系统的配置过程,编译过程 -> 一般新项目开始搭建的时候会用到。

(5)核心内容,linux 系统驱动的各种框架,各种机制。

(6)个人认为,android系统的启动流程非常关键,有利于建立整个系统的宏观概念,不需要详细深挖,但要知道大概的流程。

(7)android 内核系统机制,应该是linux系统编程和网络编程的揉合。


7.闲话android

(1)开放性,android几乎所有源码都是可以免费下载的。遵循Apache开源协议。

(2)强大的SDK,Software Development Kit 软件开发套件 实现操作系统和开发者之间的接口。

android通过总结应用开发规律,提供Activity,Service,Broadcast Receiver以及Content Provide四大组件。

(3)不断改进UI,新版UI更加人性化,对于用户是最直观的艺术盛宴。

(4)逐步完善的生态系统

(5)阵营良莠不齐

(6)系统运行效率有待改善

据不完全统计,android的启动过程花费的平均时间超过了1分钟,甚至有的达到了5分钟以上。

(7)兼容性问题

8.参考文档:

(1)Android 深度探索(卷I)HAL与驱动开发 - 李宁

(2)深入理解Android内核设计思想 - 林学森

(3)深入理解Android(卷I)- 邓凡平

更多相关文章

  1. Android(安卓)NDK开发 环境搭建
  2. android合理配置PRODUCT_LOCALES为你的系统瘦身减负
  3. Android(安卓)Studio 奇技淫巧
  4. IPhone开发资料整理
  5. android 开发-系统设置界面的实现
  6. android安卓系统上运行jar文件
  7. android开发每日汇总【2011-10-09】
  8. Android开发常用调试技术大全
  9. 第四章 Android开发三大基石—Activity、Service和Handler(2)

随机推荐

  1. android listview 异步加载图片并防止错
  2. Android(安卓)Intent的用法及其传取值
  3. Android——Activity去除标题栏和状态栏
  4. android Vitamio Live 实时视频 记录
  5. android 多媒体相关代码概况—(JAVA SCOPE
  6. 某个蝰蛇音效的卡刷包代码分析
  7. Error inflating class com.google.andro
  8. Android——使用Volley+fastJson在新线程
  9. Android 中读取SD卡文件时抛出NullPointe
  10. Android 自定义WebView点击输入框不弹出