标签:
Android是当前智能手机操作系统的老大,它之所以发展神速,在很大程度上取决于任何人都可以利用Android的源代码定制完全属于自己的嵌入式系统。这就需要我们队Android系统架构有更深层次的了解。Android系统架构分为4层:Linux内核,C/C++代码库,Android SDK API,应用程序。Android移植都是指Android操作系统的移植,其可分为两部分:应用移植和系统移植。因Linux内核本身已经支持很多常用的CPU架构,因此无需做太多改动,但Android在不同平台上正常运行,只支持CPU架构还不行,必须要让Android可以识别平台上各种硬件,其主要也是由Linux内核完成,其中主角是Linux驱动。因此,系统移植除了移植CPU架构外,最主要的就是移植Linux驱动。
HAL(Android所特有的)表示硬件抽象层,是普通的Linux程序库,只是Android SDK通过HAL直接访问Linux驱动,即如果为Android增加了新的驱动或修改原来的驱动代码,HAL中的代码就要做相应的调整。不过HAL也不是必需的,通过NDK也可以直接访问Linux驱动,但Google建议最好为Linux驱动编写对应的HAL程序库,因此,Android移植的主要工作如下:移植Linux驱动;移植HAL.
Linux系统的内核版本(只有组成内核版本号的五部分完全相同,才能说明两个Linux系统的内核是相同的),可使用下面两种方法:1.在Linux终端执行下面命令。Uname -a,如果当前系统是Ubuntu Linux11.10,会在Linux终端输出信息,白框内是Linux内核的版本。
2.在Linux终端执行下面命令。Cat /proc/version.在Linux终端输出信息,白框内是Linux内核的版本。
学习Linux驱动需要做以下几点:
1.准备一个自己熟悉的Linux操作系统,用于开发和测试Linux驱动,建议使用Ubuntu Linux10.04及以上版本
2.准备一块开发版
3.学习GNU C
4.学习相关的硬件知识
5.不断地实践
驱动是直接与硬件交互的一类程序,负责对硬件进行抽象。驱动针对的对象是存储器和外设(包括CPU内部集成的存储器和外设),而不是针对CPU内核。Linux将存储器和外设分为3大类:1.字符设备,2块设备,3.网络设备。其字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲,这两者并没有明显的界限。http://i.cnblogs.com/EditPosts.aspx?opt=1
标签:
原文地址:http://www.cnblogs.com/zhangyuye/p/5432228.html