二 Linux设备驱动的模块化编程( 三 )


查看模块信息:
hello.ko
最后再说一个细节 , 如果把再我电脑上编译的hello.ko拿到你的下能运行吗?这个是肯定不行的 , 通过命令 , 我们可以看到这个模块所依赖的内核版本信息 , 一个模块只能运行在编译这个模块对应的那个内核环境中 。
6. 模块传递参数
顾名思义 , 就是在系统启动或者加载模块的时候 , 为参数指定相应的值 , 在驱动程序里 , 参数的用法如同全局变量 , 这样可以使模块具有更大的灵活性以及扩展性 。
例如下面的例子:
给xxx.ko对应的驱动程序里面的path传递"/lib///xxx.bin"这个字符串
insmod xxx.kopath="/lib/module/firmware/xxx.bin"
驱动程序需按照以下步骤实现:
(1)定义接收参数的变量 , 并初始化
static int intarg = 100;
(2)(参数名,参数类型,参数读/写权限)来声明这个参数可以用来接收外部传入
module_param(intarg, int ,0600);
(3)可选:
MODULE_PARM_DESC (intarg, "A integer");
这样声明后 , 通过可查看相应的信息
(4)执行命令时传递参数
sudo insmod hello.kointarg=200