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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之堆排序

1 堆排序 堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点,我们可以理解构建的堆是 完全二叉树 ,它们的下标有如下性质 完全二叉树还有这…

ArcGIS实验教程——实验一:ArcGIS软件的认识与使用

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 实验目录 第一节 Esri简介 1.1 ESRI简介 1.2 Esri产品发展历程 第二节 ArcGIS简介 2.1 ArcGIS简介 2.2 ArcGIS产品体系 第三节 Desktop简介 3.1 Desktop简介…

10分钟学会vue滚动行为

滚动行为 什么是路由的滚动行为 当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样 注意: 这个功能只在 HTML5 history 模式下可用。在这个模式下我们需要启动一个服务 我们用scrollBehavior 方法来做路由滚…

php基础教程 第三步 学习字符串及相关函数

字符串 上一节中我们学习了 php 变量、常量以及数据类型的一些概念。这一节中进一步学习数据类型中的字符串类型及其相关操作方法。 字符串指一串字符的合集。例如单个字符 a,单个字符 b,单个字符 c…这些 a、b、c 皆是字符;当把这些字符连…

冲刺第五天

今天做了什么? 今天学习了一下jQuery的元素获取,操作,attribute方法。 明天要做什么? 明天我准备调出程序算法进行测试。 遇到的困难? 还不懂jQuery的一些ui操作。 转载于:https://www.cnblogs.com/kt97458/p/5444148.…

ASP.NET CORE MVC使用SCD(独立部署)发布

简介Self-contained deployments (SCD), 生成一个可自己执行的文件以及所有依赖, 比如一个xxx.exe和一大堆dll, 直接运行即可, 不需要操作系统安装.net core 运行时步骤1、首先创建一个ASP.NET CORE MVC项目2、右击项目&#xff0c;点击编辑xxx.csproj&#xff0c;在下编辑<…

Mirantis OpenStack fuel web 安装 使用

2019独角兽企业重金招聘Python工程师标准>>> MirantisOpenStack-4.0.iso的下载地址&#xff1a;http://pan.baidu.com/s/1dDsuzXf。下载之后使用虚拟机或者物理机安装都可以&#xff0c;我使用的是vmware。需要把NAT的自动分配ip功能关闭 1、创建虚拟机 &#xff08…

word2vec需要去标点吗_word2vec学习笔记(应用篇)(金庸武侠)

写在前面本来是想写“实战篇”的&#xff0c;感觉实验语料库不大&#xff0c;就算是一个"应用篇"吧。选取了中文语料&#xff0c;主要简单介绍jieba分词的使用&#xff0c;以及Gemsim模块中Word2Vec的使用。word2vec的原理可以参考之前的文章&#xff1a;华夏狼崽&am…

ArcGIS实验教程——实验四:数字化属性数据的采集

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 目录 一、实验内容 二、实验目的 三、实验数据 四、实验过程 【实验描述】 属性数据是GIS空格数据的重要组成部分。属性数据采集的基本操作由于地理实体(如建筑物) 位于地块之内成者与地…

[图] DevOps:提速从研发到交付流程

你的产品要让用户等多久&#xff1f;制定需求、排期开发、部署调试……这些流程都再跑一遍&#xff1f;传统产品发布流程长&#xff0c;多分支、环境不一、人工操作导致容易出错。面对这些传统发布难题&#xff0c;DevOps才是正确的出路。

php基础教程 第四步 学习运算符

在前面的章节中&#xff0c;以及了解了一些运算法&#xff0c;接下来再讲解一些常规运算法。 加运算法&#xff0c;用来使左右两边的值或表达式进行加法计算。例如有一个变量$a&#xff0c;一个变量$b&#xff0c;它们的值都为9&#xff0c;$a$b为99等于10.。输出使用echo&…

JavaScript基础学习(七)—BOM

BOM(Browser Object Model): 浏览器对象模型。提供了独立于内容而与浏览器窗口交互的对象&#xff0c;BOM主要用于管理窗口和窗口之间的通讯。 一、Navigator对象 navigator对象通常用于获取浏览器和操作系统的信息。 navigator对象是window对象的属性&#xff0c;中文是&…

ArcGIS实验教程——实验五:空间数据编辑

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 【实验描述】 利用ArcGIS进行数字化之后,需要对采集的空间数据进行编辑,包括图形编辑和属性编辑。常用的编辑工具有:编辑折点、延续要素、打断线、连接线、自动完成面、剪切面,整形面等等。 一…

Spring初识

从上学期开始决心开始学习Spring&#xff0c;自己总是利用不好时间&#xff0c;到处瞎忙&#xff0c;结果浪费了好多时间。想着利用暑假的时间&#xff0c;专心看会儿书。最初我在Spring官网下载jar包的时候&#xff0c;忙会儿了半天愣是没找到下载的链接&#xff0c;瞬间觉得学…

batchsize和数据量设置比例_Keras - GPU ID 和显存占用设定步骤

初步尝试 Keras (基于 Tensorflow 后端)深度框架时, 发现其对于 GPU 的使用比较神奇, 默认竟然是全部占满显存, 1080Ti 跑个小分类问题, 就一下子满了. 而且是服务器上的两张 1080Ti.服务器上的多张 GPU 都占满, 有点浪费性能.因此, 需要类似于 Caffe 等框架的可以设定 GPU ID …

Blazor University (17)使用 RenderFragments 模板化组件

原文链接&#xff1a;https://blazor-university.com/templating-components-with-renderfragements/使用 RenderFragments 模板化组件源代码[1]到目前为止&#xff0c;我们已经创建了基于参数生成 100% 渲染输出的组件&#xff0c;但组件并不总是那么简单。有时我们需要创建将…

OpenGL® ES 3.0 Programming Guide - Book Website

OpenGL ES 3.0 Programming Guide - Book Website http://opengles-book.com sample codes in GitHub: https://github.com/danginsburg/opengles3-book/

ArcGIS实验教程——实验六:空间数据格式转换

ArcGIS实验视频教程合集:《ArcGIS实验教程从入门到精通》(附配套实验数据) 【实验描述】 空间数据从一个GIS平台跨到另一个GIS,必须经过格式转换,才能实现数据信息共享。本实验主要讲述空间数据矢栅互转、CAD(DWG)数据和Shapefile数据互转、栅格数据与ASCII文件之间的转换…

php基础教程 第五步 逻辑控制

逻辑判断 在开发项目时&#xff0c;竟然会出现逻辑控制。例如当用户输入“hello”时你需要自动回复“hello 欢迎”&#xff0c;当用户设置的定时时间到达时&#xff0c;你需要提醒用户时间已经结束&#xff1b;再举个例子&#xff0c;在玩网络游戏时&#xff0c;用户控制的角色…

在春意盎然的季节里初识GIT

Git 与 SVN 区别 GIT不仅仅是个版本控制系统&#xff0c;它也是个内容管理系统(CMS),工作管理系统等。 如果你是一个具有使用SVN背景的人&#xff0c;你需要做一定的思想转换&#xff0c;来适应GIT提供的一些概念和特征。 Git 与 SVN 区别点&#xff1a; 1、GIT是分布式的&…