驱动应该怎么学习?

模块化设计

宏内核:将内核从整体上作为一个大过程实现,并同时运行一个单独的地址空间,相互之间直接调用函数,简单高效。紧耦合。

微内核:功能被划分为独立的过程,过程间通过IPC来通信,模块化程度高, 一个服务失效不会影响另一个服务,譬如windows

 

Linux内核:本质上是宏内核,但又吸收了微内核的模块化特性,体现在两个层面。

 

驱动的分类

字符类驱动

块设备驱动

网络设备驱动

 

 

驱动安全性要求

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

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

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

 

驱动对内核的影响

(1)驱动程序崩溃甚至会导致内核崩溃

(2)驱动的效率会影响内核的整体效率

(3)驱动的漏洞会造成内核安全漏洞

 

驱动安全性问题

(1)未初始化指针

(2)恶意用户程序

(3)缓冲区溢出

(4)竞争状态

 

驱动的学习方法

(1)先学习好C语言

(2)掌握相关预备知识

硬件操作方面:裸机全集里的一些硬件操控,譬如串口,蜂鸣器,led,LCD等等

应用层API:应用编程和网络编程部分的内容,学习怎么去写应用程序,那些API就是现在驱动对其进行支持的。

(3)驱动学习阶段

注重实践,一步一步写驱动:一步一步的去增加自己的代码,一行一行的去写驱动。

 

框架思维,多考虑整体和上下层:考虑这个代码是被谁调用,上层是谁,下层是谁,

 

先通过简单设备学Linux驱动框架:Linux驱动本身是分层的,有些层次是Linux内核的,有些是个人自己写的,有些人是厂商写的,相互之间通过接口来调用

 

学会总结、记录,这会有助于理解:

 

posted on 2016-05-05 19:34  岳睿_02  阅读(914)  评论(0编辑  收藏  举报

导航