3. 嵌入式linux驱动-驱动加载的两种方式


  linux驱动的加载有动态加载和静态加载两种方式。

1. 动态加载

  驱动的动态加载指的是利用了linux的module特性,可以在系统启动后通过insmod或modprobe命令挂载.ko内核目标文件,对模块进行加载,成功后可通过mknod指令进行挂载节点,在不需要的时候可通过rmmod命令来卸载模块。
  操作方法: 在驱动文件mydrv.c和makefile目录下执行make编译出mydrv.ko文件,然后复制到目标板,执行insmod命令加载驱动,然后就可以在应用层调用了,不使用可以使用rmmod命令卸载驱动模块。

2. 静态加载

  驱动的静态加载指的是直接把驱动程序编译进内核,在系统启动后可直接调用,不需要任何加载卸载命令。
  操作方法:

  • 将驱动文件驱mydrv.c复制到目标板内核源码树drivers/char(假设是字符型驱动)下。
  • 在char目录的Kconfig文件中添加新源代码对应项目的编译配置选项
Config  MYDRV                   ------对应驱动
     bool “support for mydrv”   ------选项
     default  y                  -----定义开始为yes
  • 在char目录的Makefile文件中添加编译脚本
obj-$(CONFIG_MYDRV) += mydrv.o

  编译内核后,驱动就被静态加载到内核了。

3. 两种方式的优缺点

  动态加载的模块本身没有被编译进内核映像,控制内核的大小;同时,模块一旦被加载,它就和内核中的其他部分完全一样,使用灵活。可在每次调用时都需要通过命令进行加载与卸载,操作麻烦。
  静态加载驱动模块直接编译进内核映像,伴随系统的启动自动加载,使用方便,不需要任何加载卸载命令。但是把模块编译进内核使得生成的内核很大,如果我们要在现有的内核中新增加或删除功能,将不得不重新编译内核,效率较低。
  嵌入式linux驱动开发时,可以使用动态加载方式,这样调试方便,开发完成后可以是静态加载方式,这样使用方便。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值