Linux 3.5 内核模块开发编程

2019-07-20 04:36发布

1.1 Linux内核模块介绍1.1.1 Linux内核模块概述嵌入式设备驱动开发中将驱动程序以模块的形式发布,更是极大地提高了设备使用的灵活性——用户只需要拿到相关驱动模块,再插入到用户的内核中,即可灵活地使用你的设备。1.1.2 使用Linux模块的优点1.        用户可以随时扩展Linux系统的功能。2.        当要修改当前Linux系统的驱动时,只需要卸载旧模块,编译目标驱动模块,重新安装插入即可。3.        系统中如果需要使用新模块,不必重新编译内核,只要插入相应的模块即可。4.        减小Linux内核的体积,节省flash。1.2 Linux模块入门1.2.1 模块相关命令1.2.1.1 Linux模块命令详细介绍1.      模块安装命令:insmodinsmod xxxx.ko2.      查看当前已经安装模块:lsmodlsmod 不需要参数3.      模块卸载命令:rmmodrmmod xxxxx.ko4.      查看模块信息:modinfo X86上操作:[root@zhifachen linux-3.5]# modinfo/root/work/rootfs/home/mod/tiny4412_hello_module.kofilename:      /root/work/rootfs/home/mod/tiny4412_hello_module.kolicense:        GPLdepends:        intree:         Yvermagic:      3.5.0-FriendlyARM SMP preempt mod_unload ARMv7 p2v8[root@zhifachen linux-3.5]#1.2.1.2 Linux模块命令测试示例注意:模块的编译是依赖具体一份源码,并且这份被编译过,并且没有使用mrproper,distclean清除的源码工程。  1.2.2 使用makemodules编译内核源码树中的模块1.      添加内核菜单2.      make menuconfig 配置为 M3.      在顶层目录终端输入makemodules直接make 也可生成模块文件(.ko),也会生成zImage,当你只想编译模块而不想编译zImage时候使用 make modules 命令会更加快速。1.2.3 把内核源码树中模块源文件编译到内核映像中如果不需要配置菜单只想编译代码到内核zImage,Makefile可以这样写obj-y += xxxx.o如果不需要配置菜单只想编译代码为外部模块,Makefile可以这样写 obj-m+= xxxx.o1.2.4 在内核源码中添加自定义的模块并且编译1.2.5 外部独立Makefile编译模块在驱动开发阶段,接触到新驱动机率非常高,如果都要去修改内核源码Makefile, 太过于繁杂,也不利于移植,实际开发中会使用另外一种方法来编译模块文件。1.2.5.1 Linux内核模块代码文件模板可以直接复制内核源码中自带的示例模板来测试:drivers/char/tiny4412_hello_module.c1.2.5.2 Linux内核模块编译Makefile模板编译模块Makefile文件: obj-m +=  xyd_hello_module.o all:       @make -C /root/work/linux-3.5/  M=$(PWD)    modules       @rm -rf *.o *.mod.c modules.order Module.symvers  *~   *.bak clean:       @rm -rf *.o *.mod.c modules.order  Module.symvers *.ko  *~  *.bak
0条回答

一周热门 更多>