在linux中添加一个模块驱动,并手动加载和卸载

参考《linux设备驱动程序》第三版,写一个简单的hello.c文件,然后放到linux源码目录下
的/drivers/char/目录下,并修改该目录下的Makefile文件,在适当的位置添加一项:

“obj-m   += hello.o”保存即可。


然后在内核源码的顶层目录下执行:make M=drivers/char/ modules,然后会看到在drivers/char/
目录下,会生成hell0.ko文件,这就是模块文件,把该文件copy到SD卡中。在real6410开发板中的
/mnt/目录下,找到sd卡的挂载文件sdcard,然后找到hello.ko文件,直接用命令 insmod 
hello.ko,即可在看到终端上显示的打印消息,手动加载起来后可以使用命令lsmod查看当前挂在起

来的模块,最后使用rmmod hello(没有.ko)即可卸载模块。

# insmod hello.ko //加载hello.ko模块

# lsmod //查看当前加载模块

# rmmod hello //卸载模块,没有.ko

在编译模块时,可能会遇到“*****没有规则可以创建目标“....”****”的错误,只要先执行一

下make distclean,然后再上面的方法编译模块就好了。
这种编译成模块的方法有点投机取巧的感觉,接下来要在drivers/目录下自己建一个文件夹,并自
己写Makefile来编译添加驱动,这样能更好的理解系统的编译的流程。

你可能感兴趣的:(linux学习)