驱动的动态加载指的是利用了linux的module特性,能够在系统启动后经过insmod或modprobe命令挂载.ko内核目标文件,对模块进行加载,成功后可经过mknod指令进行挂载节点,在不须要的时候可经过rmmod命令来卸载模块。
操做方法: 在驱动文件mydrv.c和makefile目录下执行make编译出mydrv.ko文件,而后复制到目标板,执行insmod命令加载驱动,而后就能够在应用层调用了,不使用能够使用rmmod命令卸载驱动模块。linux
驱动的静态加载指的是直接把驱动程序编译进内核,在系统启动后可直接调用,不须要任何加载卸载命令。
操做方法:web
Config MYDRV ------对应驱动 bool “support for mydrv” ------选项 default y -----定义开始为yes
obj-$(CONFIG_MYDRV) += mydrv.o
编译内核后,驱动就被静态加载到内核了。svg
动态加载的模块自己没有被编译进内核映像,控制内核的大小;同时,模块一旦被加载,它就和内核中的其余部分彻底同样,使用灵活。可在每次调用时都须要经过命令进行加载与卸载,操做麻烦。
静态加载驱动模块直接编译进内核映像,伴随系统的启动自动加载,使用方便,不须要任何加载卸载命令。可是把模块编译进内核使得生成的内核很大,若是咱们要在现有的内核中新增长或删除功能,将不得不从新编译内核,效率较低。
嵌入式linux驱动开发时,能够使用动态加载方式,这样调试方便,开发完成后能够是静态加载方式,这样使用方便。调试