第一章 Android系统与嵌入式开发
从系统移植和驱动开发者的角度来讲,Android底层的开发移植和传统嵌入式系统开发保持了很多的一致,所以要从事Android系统的开发必须了解嵌入式开发的基础知识。本章就嵌入式和Android系统进行了简单的介绍。
Android系统的架构分为四层:
第一层,Linux内核:主要包括程序以及管理内存、进程、电源等资源的程序
第二层,C/C++代码库:主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码
第三层,Android SDK API:直接面向应用程序的JAVA API
第四层,应用程序:直接面向用户的应用程序(APK程序)
Android移植可分为两部分:应用移植和驱动移植(除了移植CPU架构外,最重要的就是移植Linux驱动);Android不能像其他Linux系统一样由应用程序直接访问驱动,而是中间隔了一层HAL,可以讲Linux驱动的业务逻辑放于其中。所以如果为了增加新的驱动或者修改原来的驱动代码,HAL需要有所调整,那么Android一致的主要工作有以下:移植Linux驱动;移植HAL。
查看Linux内核版本号有以下两种方法:uname -a;cat /proc/version
为了降低软件与硬件之间的耦合度,需要把硬件抽象,驱动即为直接和硬件交互的一类程序,负责对硬件进行抽象。驱动针对的对象是存储器和外设,Linux将存储器和外设分为三大类:字符设备;块设备;网络设备。任何一个驱动程序都有一个装载函数和卸载函数,分别是通过module_init和module_exit宏指定的。