
linux内核支持动态加载模块,内核模块以.ko为后缀,在Linux系统中,内核模块放在/lib/modulex/x.x.x目录中,其中x.x.x为linux版本号
加载模块
insmod xxx.ko
如果带参数 insmod xxx.ko a=1
卸载模块
rmmod xxx.ko
支持的数据类型
bool :布尔类型
invbool:颠倒了值的bool类型
charp :字符指针类型,内存为用户提供的字符串分配
int:整型
long :长整型
short :短整型
uint :无符号整型
ulong :无符号长整型
ushort :无符号短整型
内核模块源码Makefile编写格式和linux源码的格式一样
在OpenWrt系统中,内核模块编译和应用层的package编译类似
make package/模块名/compile V=s
比如:
make package/hello_kernel/compile V=s
编译完成后会生成.ko文件,目录文件在build_dir中,但和应用层的build目录有点区别,内核模块的package放在linux目录,如(X86平台):
build_dir/target-x86_64_musl/linux-x86_64/
将编译完成的ko文件传输到OpenWrt系统中,注意编译平台和开发板平台的系统架构要一致。
gcc -Wall adc.c -o adc.o或者在makefile中写下:
adc.o:
gcc -Wall adc.c -o adc.o
然后make,注意adc.o:下面的空格必须用Tab键
linux 编译安装驱动有两种,动态加载与静态加载动态加载
一,编译,在指点内核树下编译,生成.o文件或.ko文件
二,将生成的.o或.ko文件拷到相应目录,一般是/lib/module/kernel下面
三,用insmod命令加载,用rmmod命令卸载
静态加载
静态加载主要就是编译内核。就是将编写好的驱动放进内核相应的目录下面。然后编译内核。然后运行编译好的内核。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)