1Android系统移植与驱动开发概述
1、Android系统架构分为四层,从下至上依次为Linux内核层,C/C++代码库、Android SDK API、应用程序,要熟悉每一层的内容以及功能;
2、Android移植分为应用移植和系统移植,系统移植的主要工作是移植Linux驱动和移植HAL,Android移植的基本原则是尽可能找到驱动和HAL的源代码,在源代码的基础上修改要容易得多,如果实在找不到源代码,只能从头开始编写。Android移植很大程度上是Linux内核移植,Linux内核移植主要是移植驱动程序,不同Linux版本的驱动程序不能通用,需要修改源代码,并且要在新的Linux内核下重新编译才可以运行在新的Linux内核版本下;
3、驱动开发与内核版本的依赖程度很高,所以做驱动开发之前,要明确Linux内核版本,目前Linux内核主要维护的三个版本是:Linux2.4、Linux2.6和Linux3.x;查看Linux系统内核版本的方法有2种:使用命令【uname -a】或者【cat /proc/version】;需要注意的是,/proc不是普通的文件系统,而是系统内核的映象,该目录中的文件是存放在系统内核之中的,它以文件系统的方式为访问系统内核数据的操作提供接口;
4、Linux内核版本好的组成:主版本号、次版本号、修订版本号、微调版本号、为特定的Linux系统特别调校的描述;
5、要想学习好Linux驱动开发,要做到以下几点:
(1) 准备一个自己熟悉的Linux操作系统,用于开发和测试Linux驱动;
(2) 准备一块开发板;
(3) 学习GUN C;
(4) 学习相关硬件知识;
(5) 不断地实践;
6、Linux设备驱动的作用:对硬件进行抽象,降低应用程序与硬件的耦合度;
7、Linux设备分为:
(1) 字符设备:必须以串行顺序依次进行访问的设备;
(2) 块设备:可以以任意顺序进行访问,以块为单位进行操作;
(3) 网络设备
8、任何的Linux驱动都有一个装载函数(装载驱动时调用)和一个卸载函数(卸载驱动时调用),装载函数和卸载函数分别通过module_init和module_exit宏指定;
9、Linux驱动只与Linux内核有关,与Linux系统无关,只要使用相同的内核,驱动就可以通用;判断内核是否相同的方法就是Linux内核版本号,只有组成内核版本号的五部分完全相同,才能说明两个Linux系统的内核是相同的;
10、 Android驱动与Linux驱动的区别就是Android增加了HAL,一般的Android驱动都会有对应的HAL,但也不是必须的,通过NDK可以直接访问Linux驱动,但Google建议最好为Linux驱动编写对应的HAL程序库;
转载于:https://www.cnblogs.com/mch0dm1n/p/5443202.html
1Android系统移植与驱动开发概述相关推荐
- Android系统移植与驱动开发概述
1.Android系统架构分为四层:linux内核,Android是基于linux内核的. c/c++代码库,包括C/C++编写的代码库,包括dalivk虚拟机的运行时. Android SDK AP ...
- 学习ARM架构,系统移植和驱动开发总结
本次结束了对ARM架构,系统移植和驱动开发的学习,它们都是属于底层,难度想对都比较的难一点,但先学习arm架构之后去学习系统移植和驱动开发,会使自己对系统移植和驱动开发容易理解点. arm架构 arm ...
- Android系统移植与驱动开发--第四章
第四章 源代码的下载和编译 一个android内核相当于4G,而一个Linux内个只有几百M,Linux内核相对于android内核来说实在是小巫见大巫.了解android源代码不一定要详细了解,只去 ...
- Linux驱动开发概述
第 1 章 Linux驱动开发概述 设备驱动程序是计算机硬件与应用程序的接口,是软件系统与硬件系统沟通的桥梁.如果没有设备驱动程序,那么硬件设备就只是一堆废铁,没有什么功能.本章将对Linux驱动开发 ...
- Linux设备驱动开发概述
作者:宋宝华 email:author@linuxdriver.cn 在过去这些年,Linux已经成功应用于服务器和桌面系统,而近年来,随着嵌入式系统应用的持续升温,Linux也开始广泛应用于嵌入式领 ...
- zedboard移植linux内核,[干货]手把手教你用Zedboard学习Linux移植和驱动开发
作者:殷建飞 本文是昨天发的文章<龙芯杯CPU设计竞赛与ZYNQ设计流程介绍>接续部分.重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种. 部分硬件设计 ...
- Android系统移植:驱动篇
[导语]在Android系统移植中,有很重要的一个部分工作,就是为新平台上的硬件设备移植驱动程序.因为Android系统是基于Linux kernel内核构建,所以这里说的移植驱动程序,其实就是基于A ...
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)...
第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统
第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...
最新文章
- qt 连接mysql数据库_QT连接MYSQL数据库教程
- ExpandableListView用法的一个简单小例子
- js模版引擎handlebars.js实用教程——with-终极this应用
- Unity3D学习笔记之七创建自己的游戏场景
- java正则表达式非贪婪_正则表达式中的贪婪与非贪婪匹配模式
- jeewx-api 1.0.5 版本发布,微信SDK接口封装(支持微信第三方开放平台)
- 《大型网站技术架构》1.大型网站架构演练
- vue下使用axios应用
- (10)FPGA面试题多位信号同步问题
- 区间dp讲解之石子合并问题 区间dp的分析方法
- 如何让图片变得更清晰(汇总中)
- 房地产开发建设项目管理(全程房地产典范企业案例)
- word2vec使用说明
- How to install VMware workstation15pro on Manjaro
- 如何更改CSDN博客皮肤
- 利用傅里叶变换去除图像中有规律的噪声
- PRML 读书笔记 chapter1 Introduce
- 刘易远:普通人该如何改变自己的阶层?
- Unity调用USB摄像头开启与关闭
- Windows常用快捷键(提高您的工作效率轻松完成日常工作)