一、.ko 文件介绍.ko文件是kernel object文件(内核模块),该文件的意义就是把内核的一些功能移动到内核外边, 需要的时候插入内核,不需要时卸载。 二、优点(1)这样可以缩小内核体积; (2)使用方便。 三、.ko文件一般的用处(1)作为一个功能模块,需要使用时,直接插入运行就行。如在imx6上连接模拟摄像头,先运行模拟摄像头对应的驱动模块 camera.ko文件,然后对应的工程执行文件运行就行。 四、使用.ko 文件1、加载驱动模块test.ko(1)方法一 (2)方法二 uname -r后显示的内核版本及名称,例如mini2440中#uname-r#就是2.6.32.2-FriendlyARM。 然后 depmod(会在/lib/modules/#uname -r#/目录下生成modules.dep和modules.dep.bb文件,表明模块的依赖关系) 最后 modprobe test(注意这里无需输入.ko后缀) 即可 注:两种方法的区别 modprobe和insmod类似,都是用来动态加载驱动模块的,区别在于modprobe可以解决load module时的依赖关系,它是通过/lib/modules/#uname - r/modules.dep(.bb)文件来查找依赖关系的;而insmod不能解决依赖问题。也就是说,如果你确定你要加载的驱动模块不依赖其他驱动模块的话,既可以 insmod也可以modprobe,当然insmod可以在任何目录下执行,更方便一些。而如果你要加载的驱动模块还依赖其他ko驱动模块的话,就只能将模块拷贝到上 述的特定目录,depmod后再modprobe。 2、查看已加载的驱动模块列表在任何目录下输入命令 3、卸载驱动模块在任何目录下, 输入命令 注:“module_name”是lsmod显示的模块名称,而不是对应的ko文件名
五、编写生成.ko 文件Linux下hello.ko内核模块制作的全过程 1. linux系统用的是Redflag 6.0 SP1 下载地址:ftp://ftp.redflag-linux.com/pub/redflag/dt6sp1/SP1/redflag-6-sp1.iso, 系统安装很容易,安提示做就好。 所用的内核源码目录树下载地址:ftp://ftp.redflag-linux.com/pub/redflag/dt6sp1/SP1/redflag-6-tool-sp1-src1.iso,将此iso文件挂载到/mnt下,安装其中的内核rpm 包。 挂载方法:mount -t iso9660 redflag-6-tool-sp1-src1.iso /mnt/ -o loop 内核目录树安装方法:cd /mnt/RedFlag/SRMPS/
3. 编写hello模块代码,源码如下: hello.c
4. 编写hello模块的Makefile文件,Makefile内容如下:
5. 编译模块 6. 安装hello模块 命令行下执行命令
可以看到下面这样的信息:“Aug 6 13:37:59 localhost kernel: Hello, world”,说明模块加载成功了。
|
|