前面几篇文章编写了 字符设备驱动模块加载与卸载框架代码,设置了开发板启动方式。文章地址如下:
本文学习如何加载与卸载驱动模块。
上一篇文章做了字符驱动模块加载前的工作。具体工作为:
开发板设置为 从 SD卡启动,即 SD卡内烧写了uboot,开发板 从 SD卡中启动 uboot。
通过 tftp服务从 ubuntu系统下加载 内核镜像 zImage与 .dtb设备树文件,通过 nfs服务从 ubuntu系统下加载 根文件系统 rootfs。
前面一篇文章编写了初步的字符设备驱动框架,最后,编译出了 .ko 文件,这里将编译出来的驱动文件即 .ko文件放到根文件系统 rootfs 中。
(1) 加载模块命令
加载模块命令有两种:insmod 命令和 modprobe 命令
insmod 命令
modprobe 命令
(2) 加载模块
① 创建 /lib/modules/4.1.15目录
开发板上电启动后,进入根文件系统下。首先,在开发板的根文件系统下创建 /lib/modules 目录:
进入 /lib/modules 目录下,再运行 modprobe命令:

以上提示可以看出,还需要再 /lib/modules目录下,创建目录 /4.1.15目录:
进入 /lib/modules 目录下,再运行 modprobe命令:

可以看出,这时运行 modprobe命令,已经没有任何提示了。
② 加载 字符驱动模块即 .ko文件
将前面一篇文章编译的 字符驱动模块(即 .ko文件) 存放到 开发板根文件系统下 /lib/modules/4.1.15目录下。进入 ubuntu系统下,进入 1_chrdevbase工程目录下:
在开发板根文件系统 /lib/modules/4.1.15目录下可以查看到 .ko文件。加载 chrdevbase.ko 驱动文件:

以上提示无法打开“modules.dep”这个文件。我们不用手动创建 modules.dep 这个文件,直接输入 depmod 命令即可自动生成 modules.dep,有些根文件系统可能没有 depmod 这个命令,如果没有这个命令就只能重新配置 busybox,使能此命令,然后重新编译 busybox。

注意:对于一个新的模块使用modprobe命令加载,加载时需要先调用一下depmod命令!!!
输入“depmod” 命令来解决:

运行 modprobe命令加载 驱动模块:
可以看出,加载驱动模块时,提示模块 Licence 会影响到 内核。Linux驱动源码一般需要加入 Licence信息的,而 1_chrdevbase驱动源码中没有加入 Licence信息。
“lsmod” 命令即可查看当前系统中存在的模块。查看所加载的驱动模块:
驱动模块的卸载使用 “rmmod” 命令,卸载模块驱动操作如下:
查看 .ko 模块驱动是否还存在:
可以看出,驱动模块已经不存在,说明驱动模块已经成功卸载了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/207435.html