当前位置: 首页 > article >正文

【Linux-驱动开发-模块的加载和卸载】

Linux-驱动开发-模块的加载和卸载

  • ■ Linux-驱动模块的加载和卸载
    • ■ 1. 驱动编译进 Linux 内核中
    • ■ 2. 驱动编译成模块(Linux 下模块扩展名为.ko)

■ Linux-驱动模块的加载和卸载

■ 1. 驱动编译进 Linux 内核中

这样当 Linux 内核启动的时候就会自动运行驱动程序。

■ 2. 驱动编译成模块(Linux 下模块扩展名为.ko)

在Linux 内核启动以后使用“insmod”命令加载驱动模块。在调试驱动的时候一般都选择将其编译为模块,这样我们修改驱动以后只需要编译一下驱动代码即可,不需要编译整个 Linux 代码。

module_init(xxx_init); //注册模块加载函数 当使用“insmod”命令加载驱动的时候, xxx_init 这个函数就会被调用
module_exit(xxx_exit); //注册模块卸载函数 当使用“rmmod”命令卸载具体驱动的时候, xxx_exit 函数就会被调用。

示例一:
在这里插入图片描述
第15行,调用函数module_init 来声明 xxx_init 为驱动入口函数,当加载驱动的时候 xxx_init函数就会被调用。
第16行,调用函数module_exit来声明xxx_exit为驱动出口函数,当卸载驱动的时候xxx_exit函数就会被调用。

关键字功能作用说明
加载驱动insmodinsmod 是最简单的模块加载命令 例如 insmod drv.ko ,
insmod 命令不能解决模块的依赖关系,
比如 drv.ko 依赖 first.ko 这个模块,就必须先使用insmod 命令加载 first.ko 这个模块,然后再加载 drv.ko 这个模块。
加载驱动modprobemodprobe 会分析模块的依赖关系,然后会将所有的依赖模块都加载到内核中,
因此modprobe 命令相比 insmod 要智能一些。
推荐使用 modprobe 命令来加载驱动。
modprobe 命令默认会去/lib/modules/目录中查找模块,
卸载驱动modprobe -r例如 modprobe -r drv.ko
使用 modprobe 命令可以卸载掉驱动模块所依赖的其他模块,前提是这些依赖模块已经没有被其他模块所使用,否则就不能使用 modprobe 来卸载驱动模块。
卸载驱动rmmod例如 rmmod drv.ko
推荐使用 rmmod 命令。

http://www.kler.cn/a/613722.html

相关文章:

  • 【深度学习】训练集、测试集、验证集、过拟合、欠拟合详解
  • WebRTC简介及应用
  • 【Git】--- Git远程操作 标签管理
  • Anaconda Jupyter 默认启动位置修改
  • javaWeb Router
  • Python面试题库-持续更新中
  • Android 图片裁剪 压缩等处理记录
  • Stable Diffusion vue本地api接口对接,模型切换, ai功能集成开源项目 ollama-chat-ui-vue
  • java对pdf文件分页拆分
  • [特殊字符] 2025蓝桥杯备赛Day14——P8752 [蓝桥杯 2021 省 B2] 特殊年份
  • 使用QT画带有透明效果的图
  • Linux 配置NFS服务器
  • 自动化发布工具CI/CD实践Jenkins部署与配置教程
  • 算法 | 2024最新算法:鳑鲏鱼优化算法原理,公式,应用,算法改进研究综述,matlab代码
  • Android Gradle 插件问题:The option ‘android.useDeprecatedNdk‘ is deprecated.
  • 浙江大学|DeepSeek系列专题公开课|第一季|PDF+视频(全)
  • word光标一直闪的解决办法
  • linux协议栈网卡接收数据到tcp缓冲区
  • 3.1go流程控制语句
  • 深度学习笔记19-YOLOv5-C3模块实现(Pytorch)