x4412开发板&ibox卡片电脑项目实战16-将hello x4412驱动编译成模块
来源:互联网 发布:淘宝开店认证要多久 编辑:程序博客网 时间:2024/05/20 23:59
在内核根目录执行make menuconfig,进入Device Drivers-> Character devices菜单界面,找到hello X4412 driver配置选项,按空格键将它配置成模块[M],保存退出。
执行如下指令,保存配置好的内核配置文件:
cp .config arch/arm/configs/x4412_android_defconfig
再在整个源码包根目录下执行./mk –k指令编译内核,这时在kernel/drivers/char/x4412目录下将生成模块文件hello-x4412.ko。
这时我们就可以使用“insmod hello-x4412.ko”和“rmmod hello-x4412.ko”指令来加载和卸载驱动了。
[root@x4412 mnt]# insmod hello-x4412.ko[ 46.564020] hello,x4412![root@x4412 mnt]# lsmodModule Size Used by Not taintedhello_x4412 628 0[root@x4412 mnt]# rmmod hello-x4412.ko[ 56.572305] Goodbye,x4412![root@x4412 mnt]# lsmodModule Size Used by Not tainted[root@x4412 mnt]#
从上面清单可以看出,当加载模块后,使用lsmod指令可以查出当前被加载的模块,当我们卸载后,使用lsmod指令将查不到对应的模块了。事实上,lsmod命令是通过读取/proc/modules文件来实现的:
[root@x4412 mnt]# insmod hello-x4412.ko[ 426.168724] hello,x4412![root@x4412 mnt]# lsmodModule Size Used by Not taintedhello_x4412 628 0[root@x4412 mnt]# more /proc/moduleshello_x4412 628 0 - Live 0xbf008000[root@x4412 mnt]# rmmod hello-x4412.ko[ 447.343765] Goodbye,x4412![root@x4412 mnt]# more /proc/modules[root@x4412 mnt]#
值得注意的是,在加载驱动模块后,在/sys/module目录将会自动生成hello-x4412目录,这里记录驱动的一些相关信息,如驱动版本等。
[root@x4412 hello_x4412]# pwd/sys/module/hello_x4412[root@x4412 hello_x4412]# lsholders/ initstate notes/ refcnt sections/ srcversion version[root@x4412 hello_x4412]# cat version1.0[root@x4412 hello_x4412]#
这里查询的版本,和我们驱动中加入的模块信息正好匹配。我们还可以使用modinfo指令来查询模块信息。在驱动模块目录下执行modinfo指令可以查询:
[root@x4412 mnt]# modinfo hello-x4412.kofilename: hello-x4412.kolicense: GPLauthor: www.9tripod.comdescription: hello x4412 driverversion: 1.0alias: a Character driver samplesrcversion: 9AA89552671F02D3DF6316Cdepends: vermagic: 3.0.15-9tripod SMP preempt mod_unload ARMv7 p2v8[root@x4412 mnt]#
使用modprobe指令也可以加载模块。它的功能要比insmod要强大,前面我们做过单个模块使用modprobe加载的实验,现在我们将hello-x4412.ko和hello-beep.ko两个模块使用modprobe指令加载。
确保存在/lib/modules/$(uname -r)目录,并将hello-x4412.ko和hello-beep.ko拷贝到该目录下,执行depmod指令更新module.dep文件:
[root@x4412 3.0.15-9tripod]# depmod[root@x4412 3.0.15-9tripod]# cat modules.depx4412-beep.ko:hello-x4412.ko:[root@x4412 3.0.15-9tripod]#
然后在任意目录下执行modprobe指令依次加载两个驱动:
[root@x4412 ~]# ls /lib/modules/3.0.15-9tripod/hello-x4412.ko* modules.dep x4412-beep.ko*modules.alias modules.symbols[root@x4412 ~]# modprobe hello-x4412.ko[ 40.782080] hello,x4412![root@x4412 ~]# modprobe x4412-beep.ko[ 48.020448] x4412 beep driver[root@x4412 ~]#
- x4412开发板&ibox卡片电脑项目实战16-将hello x4412驱动编译成模块
- x4412开发板&ibox卡片电脑项目实战16-将hello x4412驱动编译成模块
- x4412开发板&ibox卡片电脑项目实战15-移植第一个hello x4412内核驱动
- x4412开发板&ibox卡片电脑项目实战15-移植第一个hello x4412内核驱动
- x4412开发板&ibox卡片电脑项目实战17-模块传参实验
- x4412开发板&ibox卡片电脑项目实战17-模块传参实验
- x4412开发板&ibox卡片电脑项目实战11-linux驱动的调试方法
- x4412开发板&ibox卡片电脑项目实战12-linux驱动的加载方法
- x4412开发板&ibox卡片电脑项目实战14-linux驱动的编写步骤
- x4412开发板&ibox卡片电脑项目实战18-驱动中导出符号
- x4412开发板&ibox卡片电脑项目实战12-linux驱动的加载方法
- x4412开发板&ibox卡片电脑项目实战11-linux驱动的调试方法
- x4412开发板&ibox卡片电脑项目实战12-linux驱动的加载方法
- x4412开发板&ibox卡片电脑项目实战14-linux驱动的编写步骤
- x4412开发板&ibox卡片电脑项目实战18-驱动中导出符号
- x4412开发板&ibox卡片电脑项目实战1-uboot编译脚本解析
- x4412开发板&ibox卡片电脑项目实战2-内核编译脚本解析
- x4412开发板&ibox卡片电脑项目实战3-文件系统编译脚本解析
- http://www.cnblogs.com/wengzilin/p/3530712.html
- OK6410 TFTP的安装以及TFTP下载zImage映像
- mysql中unique key与auto_increment的性能分析
- checkbox复选框全选及全不选操作,attr无效解决办法
- Centos搭建SVN服务器三步曲
- x4412开发板&ibox卡片电脑项目实战16-将hello x4412驱动编译成模块
- 命题真值判断代码
- C++中引用和指针的区别
- 留学垃圾--葡桃
- poj3667 (线段树区间合并)
- [Java Web]Hibernate基础总结(二)
- gcc学习(一)[第二版]
- Linux文件系统十问,你知道吗?
- Android] ImageView.ScaleType设置图解