Linux设备驱动之《构造和运行模块》

    下面的代码是一个完整的最简单的“hello world”模块

    C代码名称hello.c

 

 

    下面是交叉编译所需的Makefile

    其中的KERNELDIR = /home/wanxiao/code/tools/utu-linux_for_s3c2440_V1.5.3 是根据自己的内核文件地址来修改相应的路径,这里我的内核使用的是utu-linux_for_s3c2440_V1.5.3

 

    然后make,生成hello.ko,直接将其发送到开发板中。

 

    修改权限 chmod +x hello.ko

 

    添加模块 insmod hello.ko

 

    查看已添加模块 lsmod

 

    卸载模块 rmmod hello.ko

 

    见下图所示

 

 

    下面对这个模块中的C代码进行修改,添加参数

    其中的一下几条语句实现了模块中参数的添加,尤其是 module_param(name,type,perm);函数

    static char *whom = "world";
    static int howmany = 1;
    module_param(howmany,int,S_IRUGO);
    module_param(whom,charp,S_IRUGO);

 

    他的前2个参数实际上都很好理解,第三个参数最后的 module_param 字段是一个权限值; 你应当使用 <linux/stat.h> 中定义的值. 这个值控制谁可以存取这些模块参数在 sysfs 中的表示.如果 perm 被设为 0, 就根本没有 sysfs 项. 否则, 它出现在 /sys/module下面, 带有给定的权限. 使用 S_IRUGO 作为参数可以被所有人读取, 但是不能改变; S_IRUGO|S_IWUSR 允许 root 来改变参数. 注意, 如果一个参数被 sysfs 修改, 你的模块看到的参数值也改变了, 但是你的模块没有任何其他的通知. 你应当不要使模块参数可写, 除非你准备好检测这个改变并且因而作出反应.

 

    编译-发送到开发板-添加模块-卸载模块

    见下图所示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值