Linux设备驱动动态插入内核与直接集成到内核方式的利弊分析
2013-05-12 16:41
381 查看
引子:公司做了一款基于Linux的以太网接口板,目前由我来进行维护,该板主CPU采用PowerPC,运行Linux系统,外接两块DPRAM,DPRAM是用字符设备驱动程序的方式写的,直接集成在了内核源代码中,通过和内核一块编译来进行烧录,接手该板的相关程序后,我和同事探讨了一下DPRAM的驱动为什么采用集成到内核随内核整体编译而没有采用单独编译动态加载的方式的问题,今天自己又简单的总结了一下,于是有了此篇BOLG。
正文:
在Linux环境开发设备驱动程序,要使驱动能共正常工作,主要有两种方式,
第一种是集成到内核,随内核一起编译。即将开发完的设备驱动程序文件(C、H文件)直接放在Linux内核源代码的相关目录下(比如开发的网络设备驱动程序,可以放在/net目录下),在编译内核的时候直接随内核一块编译。
第二种是单独编译,动态插入内核。即将开发完成的设备驱动程序文件(C、H文件)直接用gcc工具(或交叉工具链)进行编译,然后通过insmod(插入内核)或者(rmmod)从内核卸载的方式进行使用或删除,在做最后的产品时,一般会通过写一个脚本文件,使得系统在上电的时候能够自动的insmod相关驱动程序。
好了,介绍完了Linux设备驱动程序常见的两种开发、加载方式,下面对这两种方式进行一下对比,还是采用表格的形式吧,更加直观明了。
以上就是我自己对这两种方式的一点总结,初学设备驱动程序,有不对的地方还望各位大牛指正,多谢:)
正文:
在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内核文件外,还要单独烧录设备驱动程序文件,工序复杂,不适合量产。 |
相关文章推荐
- Linux设备驱动动态插入内核与直接集成到内核方式的利弊分析
- Linux设备驱动动态插入内核与直接集成到内核方式的利弊分析
- 编译时向内核添加新设备 模块的方式动态的将驱动加入内核,但这种方式加入的驱动程序,当系统重新启动时, 还需要重新用模块的方式进行插入,如果是系统内常用的设备驱动采用这种方式进行加载, 就会很不方便。
- 浅谈直接插入排序算法思想以及时间复杂度分析
- spring boot 集成quartz 2.0 实现前端动态配置(获取spring上下文)的两种方式,启动数据库中已开启定时任务
- PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
- 工作中交流的方式的利弊分析
- LCDS2.6不再集成webtier方式的集成(动态访问mxml和jsp嵌入mxml的tag)。需要通过集成webtier.war来处理
- map容器插入数据之 map[] 和 insert 方式的分析
- 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据
- Dubbo源码分析(六):Dubbo内核实现之动态编译
- 强类型的数据集,在处理以直接附加方式的SQLServer的MDF文件时无法更新数据-原因分析
- 排序算法:直接插入排序算法实现及分析
- 排序分析之直接插入排序
- Android4.4.2从内核logo到init logo到动态logo的分析及定制
- 直接插入排序分析
- 工作中交流的方式的利弊分析
- Android动态修改图片颜色的实现方式分析
- 三种插入排序的分析(直接插入-二分插入-Shell排序)
- linux驱动的动态加载和编译内核的方式加载