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系统移植与驱动开发概述相关推荐

  1. Android系统移植与驱动开发概述

    1.Android系统架构分为四层:linux内核,Android是基于linux内核的. c/c++代码库,包括C/C++编写的代码库,包括dalivk虚拟机的运行时. Android SDK AP ...

  2. 学习ARM架构,系统移植和驱动开发总结

    本次结束了对ARM架构,系统移植和驱动开发的学习,它们都是属于底层,难度想对都比较的难一点,但先学习arm架构之后去学习系统移植和驱动开发,会使自己对系统移植和驱动开发容易理解点. arm架构 arm ...

  3. Android系统移植与驱动开发--第四章

    第四章 源代码的下载和编译 一个android内核相当于4G,而一个Linux内个只有几百M,Linux内核相对于android内核来说实在是小巫见大巫.了解android源代码不一定要详细了解,只去 ...

  4. Linux驱动开发概述

    第 1 章 Linux驱动开发概述 设备驱动程序是计算机硬件与应用程序的接口,是软件系统与硬件系统沟通的桥梁.如果没有设备驱动程序,那么硬件设备就只是一堆废铁,没有什么功能.本章将对Linux驱动开发 ...

  5. Linux设备驱动开发概述

    作者:宋宝华 email:author@linuxdriver.cn 在过去这些年,Linux已经成功应用于服务器和桌面系统,而近年来,随着嵌入式系统应用的持续升温,Linux也开始广泛应用于嵌入式领 ...

  6. zedboard移植linux内核,[干货]手把手教你用Zedboard学习Linux移植和驱动开发

    作者:殷建飞 本文是昨天发的文章<龙芯杯CPU设计竞赛与ZYNQ设计流程介绍>接续部分.重点介绍传统方式的Linux移植和Xilinx的Petalinux的快速移植开发两种. 部分硬件设计 ...

  7. Android系统移植:驱动篇

    [导语]在Android系统移植中,有很重要的一个部分工作,就是为新平台上的硬件设备移植驱动程序.因为Android系统是基于Linux kernel内核构建,所以这里说的移植驱动程序,其实就是基于A ...

  8. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)...

    第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

  9. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统

    第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

最新文章

  1. qt 连接mysql数据库_QT连接MYSQL数据库教程
  2. ExpandableListView用法的一个简单小例子
  3. js模版引擎handlebars.js实用教程——with-终极this应用
  4. Unity3D学习笔记之七创建自己的游戏场景
  5. java正则表达式非贪婪_正则表达式中的贪婪与非贪婪匹配模式
  6. jeewx-api 1.0.5 版本发布,微信SDK接口封装(支持微信第三方开放平台)
  7. 《大型网站技术架构》1.大型网站架构演练
  8. vue下使用axios应用
  9. (10)FPGA面试题多位信号同步问题
  10. 区间dp讲解之石子合并问题 区间dp的分析方法
  11. 如何让图片变得更清晰(汇总中)
  12. 房地产开发建设项目管理(全程房地产典范企业案例)
  13. word2vec使用说明
  14. How to install VMware workstation15pro on Manjaro
  15. 如何更改CSDN博客皮肤
  16. 利用傅里叶变换去除图像中有规律的噪声
  17. PRML 读书笔记 chapter1 Introduce
  18. 刘易远:普通人该如何改变自己的阶层?
  19. Unity调用USB摄像头开启与关闭
  20. Windows常用快捷键(提高您的工作效率轻松完成日常工作)

热门文章

  1. Java中三种Set的实现类的用法和区别
  2. 2017已过半,这半年,你累吗?
  3. 条件随机场 python_用条件随机场做网络小说命名实体识别
  4. php中定义css样式的好处,CSS的优点和缺点分别是什么
  5. shell 执行mysql语句
  6. element-ui表单_每日UI挑战强加-登录表单(分步教程)
  7. 听说你对 ES6 class 类还不是很了解
  8. thymeleaf th:href url传递多参数
  9. Mysql Hunter
  10. 新浪微博授权认证过程