您的位置:首页 > 其它

ubuntu12.04插入字符设备模块(不用重新编译内核)

2014-07-31 17:51 309 查看
直接上操作步骤啦!

1.写好的自己添加的模块源码(test_drv.c )

2.编写makefile文件

3. 在终端路径下以root身份编译模块

#sudo make (调用第一个命令default)

这时,在test_drv.c所在文件夹就会有test_drv.ko ,这个就是我们需要的内核模块啦

4. 插入模块,让其工作(注意必须是root权限)

#insmod test_drv.ko

完成后,再看看系统中的模块:

#lsmod

显示模块列表,发现多了一个模块“test_drv”,表示成功加载了!

5.分配次设备号

每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是从设备号,标识使用同一个设备驱动程序的不同的硬件设备。

分配前,我们必须要知道主设备号:
#cat /proc/devices

(我这里的主设备号为249.)
现在我们分配从设备号:
#mknod /dev/test_dev c 249 0

实际上就是在虚拟文件夹/dev/中加一个设备(在系统看来是文件)test_dev ,注意,这个是设备名,在测试文件中真是要利用这个设备名打开设备。最后的0表示从设备号。可以随便分配(只要不冲突)。
此时可以在/dev/目录下看到新建的设备test_dev了:
#ls /dev/

6.测试新加的字符驱动程序
附上测试程序:

编译测试程序:
#gcc -o test test.c

执行测试程序 :
#./test
之后根据提示输入字符,查看输出即可。

7.删除设备

就像删除普通文件一样:
#rm /dev/test_dev

删除后,可查看/dev/目录下已经木有test_dev 了:
#ls /dev/

8.接着删除模块
# rmmod test_drv.ko
可查模块列表中已经没有test_drv模块了:
#lsmod
这样插入字符驱动模块,并调用显示,再删除模块就都完成啦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐