澳门威尼斯人官网手机网 > 接口/总线/驱动 > 正文

驱动的概念和分类及安全性

2018年11月04日 11:44 次阅读

1、驱动的概念

狭义上,驱动程序专指操作系统中的用来操控硬件的代码。

2、linux体系架构

(1)分层思想;

(2)驱动的上层是API(即应用程序调用API,API调用驱动),驱动的下层是硬件(硬件抽象为寄存器);

驱动的概念和分类及安全性

(3)驱动本身也是分层的。

3、微内核和宏内核

(1)宏内核(又称为单内核)

将内核从整体上作为一个大过程(整体看做一个程序)实现,并同时运行在一个单独的地址空间。

所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。

耦合,动一发而动全身。

(2)微内核

功能被划分成独立的过程程序(独立的模块),过程间通过IPC(进程间通信)进行通信。

模块化程度高,一个服务失效不会影响另外一个服务。

典型如windows。但效率低。

(3)linux本质上是宏内核,但是又吸收了微内核的模块化特性,提现在2个层面。

静态模块化:在编译时实现可裁剪,特征是想要功能裁剪,改变必须重新编译(需要关机重启)动态模块化:

zImage可以不重新编译烧录,甚至可以不关机重启就实现模块的安装和卸载,比如驱动的安装。

4、linux设备驱动分类

(1)驱动分类

字符设备驱动、块设备驱动、网络设备驱动;

分类原则是设备读写操作的特征差异;

(2)三类驱动程序详细对比分析

字符设备,即“字节设备”。软件操作设备时,以字节为单位进行的。典型的如LCD、串口、LED、蜂鸣器、触摸屏。

块设备,相对于字符设备定义的。软件操作设备时,以块(多个字节构成的一个单位)为单位的。设备的块大小是设备本身设计时定义好的,软件不能去更改,但不同设备的块大小可以不一样。常见的块设备都是存储类设备,如硬盘、NandFlash、iNand、SD。

网络设备,网络设备是专为网卡设计的驱动模型。linux中网络设备驱动主要目的是为了支持API中socket相关函数的工作。

(3)为什么字符设备驱动最重要?

常见大量设备都属于字符设备

5、驱动程序的安全性要求

(1)驱动是内核的一部分

驱动已经成为内核中最庞大的组成部分;

内核会直接以函数调用的方式调用驱动代码;

驱动的动态安装和卸载都会“更改”内核。

(2)驱动对内核的影响

驱动程序崩溃甚至会导致内核崩溃;

驱动的效率会影响内核的整体效率;

驱动的漏洞会造成内核安全漏洞。

(3)常见驱动安全性问题

未初始化指针;

恶意用户程序;

缓冲区溢出;

竞争状态。

学习驱动要点

1、先学好C语言

2、硬件操作方面

3、应用层API
       
       4、

(1)注重实践,一步一步写驱动

(2)框架思维,多考虑整体和上下层

(3)先通过简单设备学linux驱动框架

(4)学会总结、记录,这会有助于理解

技术专区

下载发烧友APP

打造属于您的人脉电子圈

关注澳门威尼斯人官网手机微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

在Linux内核中添加驱动程序的详细步骤

首先在drivers目录下面创建GPIO文件夹,,文件夹下面创建三个文件,分别是:gpio.c,Kc...

发表于 2018-11-04 11:37 4次阅读
在Linux内核中添加驱动程序的详细步骤

如何来手动修复max transition和ma...

对于这种情况,我们可以选择在该instance的右边插入一个buffer,由于buffer的驱动较强...

发表于 2018-11-02 17:06 143次阅读
如何来手动修复max transition和ma...

快速上手Linux

发表于 2018-11-02 16:29 72次阅读
快速上手Linux

纬图HOLLONG BLE SNIFFER支持Linux系统

发表于 2018-11-02 15:21 22次阅读
纬图HOLLONG BLE SNIFFER支持Linux系统

如何在linux上与USB UART通信

发表于 2018-11-02 14:33 35次阅读
如何在linux上与USB UART通信

如何在redhat9中使用CGT编译TMS320F28335

发表于 2018-11-02 14:17 44次阅读
如何在redhat9中使用CGT编译TMS320F28335

基于嵌入式Linux视频的网络监控系统设计详解

随着计算机技术及网络技术的迅猛发展,公安、安防行业的发展趋势必然是全面数字化、网络化。传统的模拟闭路...

发表于 2018-11-01 17:30 74次阅读
基于嵌入式Linux视频的网络监控系统设计详解

如何在嵌入式Linux中截屏

在桌面级操作系统中,下载一个截图软件就能实现截屏操作,但在嵌入式Linux系统中,要实现小小的截图功...

发表于 2018-11-01 16:10 175次阅读
如何在嵌入式Linux中截屏

8550U Linux屏幕故障

发表于 2018-11-01 16:01 19次阅读
8550U Linux屏幕故障

P4510系列硬盘上的硬件加密?

发表于 2018-11-01 10:40 31次阅读
P4510系列硬盘上的硬件加密?

第1部分:Arduino兼容不仅仅是渴望

大多数制造商社区都来自像Arduino这样的Bare Metal * 8位平台的快速原型设计背景,并...

发表于 2018-11-01 06:06 68次阅读
第1部分:Arduino兼容不仅仅是渴望

基于嵌入式Linux系统的电力远程自动抄表装置详...

我国社会经济的快速增长直接促进了电力工业的迅猛发展,电力需求不断增加,供应日趋紧张,如今的电力系统已...

发表于 2018-10-31 17:44 89次阅读
基于嵌入式Linux系统的电力远程自动抄表装置详...

以嵌入式系统作为移动终端的软件平台浅析

实时操作系统()是嵌入式应用软件的基础和开发平台,应用程序都是建立在它之上。实时嵌入式操作系统的种类...

发表于 2018-10-31 17:36 62次阅读
以嵌入式系统作为移动终端的软件平台浅析

IPC-M10R800-A3399C 六核工业级行业平板

发表于 2018-10-31 16:37 77次阅读
IPC-M10R800-A3399C 六核工业级行业平板

SinA332.0开发板怎样从VGA输出改到LCD输出 

发表于 2018-10-31 16:34 120次阅读
SinA332.0开发板怎样从VGA输出改到LCD输出 

Linux系统误删除系统文件怎么办

首先在重新开机时当出现下面这个接界面时按esc进入到Boot Menu。(ps:手速要快,在进度条满...

发表于 2018-10-31 15:38 97次阅读
Linux系统误删除系统文件怎么办

hx711 linux驱动读不了数据

发表于 2018-10-31 11:20 140次阅读
hx711 linux驱动读不了数据

让我们开始2018年最好的Linux发行版清单吧

轻量级的发行版有其特殊的用途:给予一些老旧或是性能低下的机器以新生。但是这不意味着这些特别的发行版仅...

发表于 2018-10-30 17:39 277次阅读
让我们开始2018年最好的Linux发行版清单吧

将Pi连接到PC

发表于 2018-10-30 14:16 45次阅读
将Pi连接到PC

解答香橙派是什么

Orange Pi ,也就是香橙派是由Linux驱动的单板计算机家族的一员,与 Raspberry ...

发表于 2018-10-30 11:38 47次阅读
解答香橙派是什么

树莓派菜鸟入门攻略

树莓派,也就是Raspberry Pi,是一款基于Linux 系统的只有一张扑克牌、名片大小的单片机...

发表于 2018-10-30 10:33 90次阅读
树莓派菜鸟入门攻略

解答树莓派上用什么编程

树莓派,英文为Raspberry Pi,也会被缩写称之为RPi,是一种只有扑克牌大写的为计算机编程教...

发表于 2018-10-30 09:28 58次阅读
解答树莓派上用什么编程

在英特尔ComposerXE 2015中进行英特...

Taylor系列:在英特尔®ComposerXE 2015中测试英特尔®线程构建模块

发表于 2018-10-30 07:06 143次阅读
在英特尔ComposerXE 2015中进行英特...

使用显式矢量编程测试英特尔ComposerXE ...

Dijkstra的最短路径:使用显式矢量编程测试英特尔®ComposerXE 2015

发表于 2018-10-30 06:57 429次阅读
使用显式矢量编程测试英特尔ComposerXE ...

DPDK的设计方法与API应用介绍

了解DPDK的设计方法及其常见用例,并概述DPDK在VNF / NFV系统中的使用方式。

发表于 2018-10-30 06:02 181次阅读
DPDK的设计方法与API应用介绍

Android平板电脑的ConsoleTab功能...

在美国推出首款采用Windows 10和Android平板电脑的ConsoleTab平板电脑。

发表于 2018-10-30 06:01 276次阅读
Android平板电脑的ConsoleTab功能...

离心泵的工作原理

离心泵是利用叶轮旋转而使水产生的离心力来工作的。离心泵在启动前,必须使泵壳和吸水管内充满水,然后启动...

发表于 2018-10-29 16:20 152次阅读
离心泵的工作原理

监控网络使用情况的Linux命令行工具

本文介绍了一些可以用来监控网络使用情况的Linux命令行工具。这些工具可以监控通过网络接口传输的数据...

发表于 2018-10-29 10:49 254次阅读
监控网络使用情况的Linux命令行工具

浅谈ARM嵌入式系统如何学习与入门

关于ARM嵌入式系统的开发,一直是it行业人员关注的热点,也是属于一个高门槛的行业,目前也有很多的开...

发表于 2018-10-26 15:26 245次阅读
浅谈ARM嵌入式系统如何学习与入门

Linus Torvalds将再次重返Linux...

不仅如此,向来不是“好欺负”的 Linus Torvalds 对看不惯的事情一直“口下不留情”,甚至...

发表于 2018-10-26 10:42 562次阅读
Linus Torvalds将再次重返Linux...

作为一个Linux程序员,我们Linux中的10...

mkfs.ext4一般会把小分区的block size格式化为1024,大分区的block size...

发表于 2018-10-25 11:43 364次阅读
作为一个Linux程序员,我们Linux中的10...

利用JTAG OCD加速Linux设备软件调试的...

传统上,调试嵌入式Linux产品需要将硬件和软件工具结合起来,如用JTAG工具进行硬件bring-u...

发表于 2018-10-24 16:31 80次阅读
利用JTAG OCD加速Linux设备软件调试的...

微软加入OIN,为OIN带来超过6万项已发布的开...

微软于今日宣布正式加入OIN(开放式发明网络)社区,为 OIN 带来超过6万项已发布的开放源码的专利...

发表于 2018-10-24 16:26 172次阅读
微软加入OIN,为OIN带来超过6万项已发布的开...

Arm宣布将其DesignStart项目进一步升...

通过将Cortex-A5纳入到DesignStart项目,开发人员将能够在业界最大的技术生态系统支持...

发表于 2018-10-24 15:19 333次阅读
Arm宣布将其DesignStart项目进一步升...

Linux之父Linus Torvalds回来了...

当他们进入我们的社区时,他们不像我们这些人这样已经拥有的多年经验和内在知识。如果没有这种经验,他们就...

发表于 2018-10-24 09:20 319次阅读
Linux之父Linus Torvalds回来了...

最实用也最容易被遗忘的Linux 命令行使用技巧

在写这篇文章之前,我特地搜索了一下。在 Google 上,很多人都在问如何实现命令重复执行直至成功这...

发表于 2018-10-23 16:58 689次阅读
最实用也最容易被遗忘的Linux 命令行使用技巧

Arm DesignStart加速基于Linux...

Arm DesignStart使开发者得以不须承担评估的授权费用,就可透过此计划授权进行先期开发,甚...

发表于 2018-10-23 10:17 259次阅读
Arm DesignStart加速基于Linux...

黑客linux入侵常用命令汇总

其中Usepam yes可能用来建立pam方式login,比如从其它linux主机ssh到服务端,如...

发表于 2018-10-22 17:35 998次阅读
黑客linux入侵常用命令汇总

Linux ACL权限详细分析

ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问...

发表于 2018-10-22 10:00 205次阅读
Linux ACL权限详细分析

Linux服务器被入侵后的检测过程详细资料分享

故事是这样的,大年初一,客户反应他们服务器无法访问,查看路由,发现某oracle+tomcat服务器...

发表于 2018-10-20 11:53 394次阅读
Linux服务器被入侵后的检测过程详细资料分享

GitHub贡献第一的公司竟然是微软

提起微软公司,不少人第一反应是老牌巨头专注于私有化软件盈利模式,这大抵是源于微软前CEO Steve...

发表于 2018-10-20 11:01 436次阅读
GitHub贡献第一的公司竟然是微软

网上流传的一份没有答案的Linux运维面试题详细...

近网上流传了一份没有答案的Linux运维面试题。趁工作之余,利用自己三年的运维经验交出了一份答卷。欢...

发表于 2018-10-20 10:05 314次阅读
网上流传的一份没有答案的Linux运维面试题详细...

三大鼠标厂商驱动对比评测 哪家最好用

其实想做驱动横评很久了,一直没找着机会,现在终于能有时间细细的和大家聊聊外设驱动的事。为什么想做驱动...

发表于 2018-10-19 10:38 336次阅读
三大鼠标厂商驱动对比评测 哪家最好用

如何用iPhone远程管理Linux服务器

Workflow 如它名字一样是工作流的意思,它是一款 iOS 平台的神级自动化流程应用。简单的说就...

发表于 2018-10-17 17:25 628次阅读
如何用iPhone远程管理Linux服务器

穿有不同外衣的Linux发布版无处不在

Herbert.xu,两年前来西邮兴趣小组与大家有过面对面的交流,也就是在那次交流中,得知其14岁开...

发表于 2018-10-17 14:23 315次阅读
穿有不同外衣的Linux发布版无处不在

Linux身份鉴别机制技术方案及原理

在Linux系统中,系统设置了多个帐号和组来进行管理,每个帐号都具有不同的权限,例如超级用户root...

发表于 2018-10-17 14:17 289次阅读
Linux身份鉴别机制技术方案及原理

若忘记了Linux系统的root密码,该怎么办?

很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?

发表于 2018-10-15 16:49 280次阅读
若忘记了Linux系统的root密码,该怎么办?

微软宣布加入一个为保护Linux免于诉讼而设立的...

事实上,Azure客户广泛使用Linux,微软也在Windows之外,向Linux提供SQL Ser...

发表于 2018-10-15 14:48 822次阅读
微软宣布加入一个为保护Linux免于诉讼而设立的...

嵌入式Linux C的基本知识点详解

嵌入式系统专业是综合了计算机硬件技术、计算机软件技术以及电子电路技术的一门综合学科,所涉及的内涵和知...

发表于 2018-10-15 09:20 706次阅读
嵌入式Linux C的基本知识点详解

资深linux运维工程师的工作经验分享

本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧

发表于 2018-10-15 09:20 451次阅读
资深linux运维工程师的工作经验分享

Linux磁盘管理好坏或有什么影响

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩...

发表于 2018-10-14 09:52 333次阅读
Linux磁盘管理好坏或有什么影响

Linux系统vi(vim)编辑器命令使用教程

vi(vim)是上Linux非常常用的代码编辑器,很多Linux发行版都默认安装了vi(vim)。v...

发表于 2018-10-12 16:53 455次阅读
Linux系统vi(vim)编辑器命令使用教程

大数据的学习中你需要掌握的十二大技术

大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是P...

发表于 2018-10-11 17:46 295次阅读
大数据的学习中你需要掌握的十二大技术

你应该知道的27个Linux文档编辑命令

在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符">"和">>",把说明文...

发表于 2018-10-11 16:43 325次阅读
你应该知道的27个Linux文档编辑命令

符合汽车级要求的Linux系统,AGL呼之欲出!

Linux是一个操作系统,类似于大家常见的Windows、Mac OS,区别于后者主要在于Linux...

发表于 2018-10-11 10:01 681次阅读
符合汽车级要求的Linux系统,AGL呼之欲出!

Linux常用命令的全拼整理

本文整理了常用命令的全拼,好像混进了什么奇怪的东西。

发表于 2018-10-10 17:19 617次阅读
Linux常用命令的全拼整理

为什么大部分手机供应商都不更新Linux内核?

相比消费者级的电子产品,企业级Linux系统供应商通常会及时更新内核。

发表于 2018-10-10 15:53 381次阅读
为什么大部分手机供应商都不更新Linux内核?

在Linux上如何配置基于密钥认证的SSH?

众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和...

发表于 2018-10-09 17:28 302次阅读
在Linux上如何配置基于密钥认证的SSH?

如何检测Linux系统是否被黑客入侵?

俗称“脚本小鬼”的家伙 是属于那种很糟糕的黑客,因为基本上他们中的许多和大多数人都是如此的没有技巧。

发表于 2018-10-06 09:13 248次阅读
如何检测Linux系统是否被黑客入侵?

一文详解Linux内核的栈回溯与妙用

网上或多或少都能找到栈回溯的一些文章,但是讲的都并不完整,没有将内核栈回溯的功能用于实际的内核、应用...

发表于 2018-10-05 10:02 329次阅读
一文详解Linux内核的栈回溯与妙用

看看Linux中形形色色的接口

如果将内核比作一座工厂,那么Linux中众多的接口就是通往这个巨大工厂的高速公路。

发表于 2018-10-04 09:19 279次阅读
看看Linux中形形色色的接口

如何快速入门运维?了解Linux中的10个命令链...

Linux命令中链接的意思是,通过操作符的行为将几个命令组合执行。Linux中的链接命令,有些像你在...

发表于 2018-10-03 19:33 331次阅读
如何快速入门运维?了解Linux中的10个命令链...

linux常用命令缩写和全拼资料免费下载

pwd:print work directory 打印当前目录 显示出当前工作目录的绝对路径 ps...

发表于 2018-10-03 10:58 515次阅读
linux常用命令缩写和全拼资料免费下载

可用于管理进程的整个生命周期的八个Linux命令

一般来说,应用程序进程的生命周期有三种主要状态:启动、运行和停止。如果我们想成为称职的管理员,每个状...

发表于 2018-10-02 17:22 642次阅读
可用于管理进程的整个生命周期的八个Linux命令

ACL是什么?ACL有什么用?

常见的文件操作命令 cp 和 mv 等都支持 ACL 权限,只是 cp 命令需要加上 -p 参数。但...

发表于 2018-09-30 16:52 505次阅读
ACL是什么?ACL有什么用?

Linux引发争议,贡献者能否删除上传的代码?

多位贡献者和社区成员对 COC 进行批判和反对,甚至有人在邮件列表发起了撤销贡献代码的讨论。

发表于 2018-09-30 14:46 406次阅读
Linux引发争议,贡献者能否删除上传的代码?

Linus Torvalds宣布暂时退出Linu...

“专注于技术的优势在于你可以拥有一些主要的客观衡量标准,这样一些共识才有可能达成,而社区也会非常健康...

发表于 2018-09-30 09:05 450次阅读
Linus Torvalds宣布暂时退出Linu...

你想知道的Ocaml语言

关于OCaml,最早称为Objective Caml,是Caml编程语言的主要实现,开发工具包含交互...

发表于 2018-09-29 14:23 155次阅读
你想知道的Ocaml语言

资深linux运维工程师的经验分享

这个阶段就是用已知软件架构大规模集群方案以及实现各种技术方案

发表于 2018-09-27 10:59 451次阅读
资深linux运维工程师的经验分享

3分钟搞定Linux正则表达式!

正则表达式是一种字符模式,用于在查找过程中匹配制定的字符。

发表于 2018-09-26 16:04 346次阅读
3分钟搞定Linux正则表达式!

AM4379 AM437x ARM Cortex...

TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...

发表于 2018-09-25 11:51 22次阅读
AM4379 AM437x ARM Cortex...