Linux设备驱动动态插入内核与直接集成到内核方式的利弊分析
来源:互联网 发布:微电影软件 编辑:程序博客网 时间:2024/05/17 03:51
引子:公司做了一款基于Linux的以太网接口板,目前由我来进行维护,该板主CPU采用PowerPC,运行Linux系统,外接两块DPRAM,DPRAM是用字符设备驱动程序的方式写的,直接集成在了内核源代码中,通过和内核一块编译来进行烧录,接手该板的相关程序后,我和同事探讨了一下DPRAM的驱动为什么采用集成到内核随内核整体编译而没有采用单独编译动态加载的方式的问题,今天自己又简单的总结了一下,于是有了此篇BOLG。
正文:
在Linux环境开发设备驱动程序,要使驱动能共正常工作,主要有两种方式,
第一种是集成到内核,随内核一起编译。即将开发完的设备驱动程序文件(C、H文件)直接放在Linux内核源代码的相关目录下(比如开发的网络设备驱动程序,可以放在/net目录下),在编译内核的时候直接随内核一块编译。
第二种是单独编译,动态插入内核。即将开发完成的设备驱动程序文件(C、H文件)直接用gcc工具(或交叉工具链)进行编译,然后通过insmod(插入内核)或者(rmmod)从内核卸载的方式进行使用或删除,在做最后的产品时,一般会通过写一个脚本文件,使得系统在上电的时候能够自动的insmod相关驱动程序。
好了,介绍完了Linux设备驱动程序常见的两种开发、加载方式,下面对这两种方式进行一下对比,还是采用表格的形式吧,更加直观明了。
方式 优点 缺点 集成到内核1、直接随内核一块编译,过程相对简单,可以通过Linux的menuconfig进行配置。
2、不需要写初始化脚本。
3、对于开发完成的比较稳定的设备驱动程序,可以随内核编译成一个内核文件,便于量产时的烧录。
1、对Linux内核进行了一定的修改,使得系统的不稳定性增加。
2、每次设备驱动程序发生改变后都要重新编译内核,效率较低,不适合开发、调试阶段。
动态插入到内核1、设备驱动程序可以动态的插入、卸载,一旦驱动程序出现问题,方便了驱动程序的调试。
2、没有改变内核的配置文件,对系统的稳定性影响较小。
1、需要对设备驱动程序进行单独编译,还要写系统上电的初始化脚本,工作量较大。
2、在实际的生产过程中,除了要烧录Linux内核文件外,还要单独烧录设备驱动程序文件,工序复杂,不适合量产。
以上就是我自己对这两种方式的一点总结,初学设备驱动程序,有不对的地方还望各位大牛指正,多谢:)
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- Linux设备驱动动态插入内核与直接集成到内核方式的利弊分析
- linux内核杂项设备驱动源码分析
- Linux内核---32.I2C设备驱动分析
- linux内核杂项设备驱动源码分析
- Linux内核部件分析--设备驱动模型的基石kobject
- Linux内核部件分析 设备驱动模型的基石kobject
- Linux内核部件分析 设备驱动模型的基石kobject
- LINUX内核设备驱动
- linux内核驱动设备
- 面向对象地分析Linux内核设备驱动(2)——Linux内核设备模型与总线
- 面向对象地分析Linux内核设备驱动(2)——Linux内核设备模型与总线
- Linux 2.6内核 动态加载字符设备驱动模块
- Linux内核之设备驱动
- Linux内核驱动之设备
- Linux设备驱动---内核定时器
- Linux内核设备驱动注册
- Linux内核调用设备驱动
- Linux设备驱动&&内核开发
- 用Python写的简单UDP Mock服务
- win7下搭建cocos2d-x androi开发环境不用cygwin的方法
- 设计模式之Builder模式 (C++实现)
- 开源项目
- 逆序对数 题目
- Linux设备驱动动态插入内核与直接集成到内核方式的利弊分析
- 设计模式(二)---工厂模式
- Mac osx 可设置环境变量的位置、查看和添加PATH环境变量
- 连载:有限状态机以及维特比(Viterbi)译码器(一)
- Objective-C中协议和委托
- 移动信息终端基带芯片的开发与产业化
- 编程从业五年的十四条经验,句句朴实
- 讲师秀之7:林仕鼎谈架构设计与架构师
- Android环境的搭建的一些思考