驱动课程包课堂章节内核模块与应用.pdfVIP

驱动课程包课堂章节内核模块与应用.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

【难度系数】:★★★☆☆

一、为什么使用内核模块。

二、内核模块?

三、设计一个简单的内核模块

四、内核模块与应用程序区别

五、Makefile

六、printk函数

七、内核模块参数

八、编译多个内核模块

九、内核符号表——全局共享函数接口与变量

十、多个源文件组合为内核模块

一、为什么使用内核模块

宏内核:简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程、线程管理、内存管理外,文件系统,驱动,网络协议等等

都在内核里面。优点是效率高,缺点是稳定性稍差,开发过程中的bug经常会导致整个系统挂掉。做驱动开发的应该经常有按电源键强行关机的经历。

微内核:内核中只有最基本的调度、内存管理。驱动、文件系统等都是用户态的守护进程去实现的。优点是稳定,驱动等的错误只会导致相应进程死

掉,不会导致整个系统都,做驱动开发时,发现错误,只需要kill掉进程,修正后重启进程就行了,比较方便。缺点是效率低。

Linux是一个宏内核,也就是说,Linux内核运行在单独的内核地址空间。不过,Linux汲取了微内核的精华:其引以为豪的是模块化设计、抢占式

内核、支持内核线程以及动态装载内核模块的能力。不仅如此,Linux还避免其微内核设计上性能损失的,让所有事情都运行在内核态,直接调用函

数,无需消息传递。至今,Linux是模块化的、多线程的以及内核本身可调度的操作系统,实用主义再次占了上风。

同时内核模块的这一特点也有助于减小内核镜像文件的体积,自然也就减少了内核所占的内存空间(因为整个内核镜像将会被加载到内存中运行)。不必

把所有的驱动都编译内核,而是以模块的形式单独编译驱动程序,这是基于不是所有的驱动都会同时工作原理,因为不是所有的硬件都要同时接入系统。

二、内核模块?

驱动程序在内核中,都是独立的模块,例如led驱动、蜂鸣器驱动,它们驱动之间没有相互的联系,可以通过应用程序将两个驱动联系在一起,例如

以下的代码,led驱动和蜂鸣器驱动各自都是一个独立的模块(module)。

1intmain(intargc,char**argv)

2{

3fd_led=open(“/dev/led_drv”,O_WRONLY);

4fd_beep=open(“/dev/beep_drv”,O_WRONLY);

5fd_lcd=open(“/dev/fb0”,O_RDWR);

6fd_ts=open(“/dev/input/event0”,O_RDONLY);

7

8}

【系数】:★★★☆☆

一、为什么使用内核模块。

二、内核模块?

三、设计一个简单的内核模块

四、内核模块与应用程序区别

五、生成文件

六、printk函数

七、内核模块参数

八、编译多个内核模块

九、内核符号表——全局共享函数接口与变量

十、多个源文件组合为内核模块

一、为什么使用内核模块

宏内核:简单来说,就是把很多东西都集成进内核,比如linux内核,除了线索的进程、线程管理、内存管理外,文件系统、驱动、网络协议等等都

在内核里面。优点是效率高,缺点是稳定性稍差,开发过程中的bug经常会导致整个系统挂掉。做驱动开发的应该经常按电源键强行关机的经历。

微内核:内核中只有的调度、内存管理。驱动、文件系统等都是用户态的进程去实现的。优点是稳定,驱动等的错误容易导致相应进程死掉,

不会导致整个系统都,做驱动开发时,发现错误,只需要kill掉进程,修改后重启进程就行了,比较。缺点是效率低。

Linux是一个宏内核,同样,Linux内核运行在单独的内核地址空间。不过,Linuxik获得了微内核的精华:引以为豪的自定义设计、抢占式内核、

以及支持内核线程以及动态加载内核模块的能力。不仅如此,Linux还避免了其微内核设计上性能损失的,所有事情都运行在内核状态,直接让调用

函数,消耗传递。到目前为止,Linux是其优先消息的、多线程的以及内核可调度的操作系统,实用主义又占上风了。

同时内核模块的这一特点也有利于缩小内核镜像文件的体积,自然减少了内核所占用的内存空间(因为整个内核镜像都会被加载到内存中运行)。不需要把

所有的驱动都编译内核,而是以模块的形式

文档评论(0)

153****2416 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档