物联网之内核及驱动开发初级二(驱动模块开发)
Linux驱动开发之ko模块开发
驱动模块开发:
1,参数传递
加载ko: insmod hello.ko myname="george" myvalue=33
用途: wifi驱动,wifi硬件中内部也运行内部代码,原厂开发,这些代码叫做固件--firmware.bin
装载wifi驱动,必须告诉固件的文件在哪里
insmod rtxxx.ko path=/lib/modules/firmware/xxx.bin
在代码如何处理参数:
module_param(name, type, perm)
参数1:表示参数的名字,比如myname, myvalue
参数2:参数到类型, charp, int
参数3: /sys/modules/表示文件到权限: 0666
用法:
module_param(myvalue, int, 0666);
module_param(myname, charp, S_IRUGO|S_IWUGO|S_IXUGO);
2,符号导出
#include <linux/module.h>
#include <linux/init.h>
//不需要模块加载和卸载到入口声明,直接定义好一些封装的函数
int my_add(int a, int b)
{
return a+b;
}
EXPORT_SYMBOL(my_add);
int my_sub(int a, int b)
{
return a-b;
}
EXPORT_SYMBOL(my_sub);
MODULE_LICENSE("GPL");