helloworld驱动加强版
来源:互联网 发布:声卡变音软件 编辑:程序博客网 时间:2024/05/01 15:00
helloworld——加强版
这篇文章相比上一篇文章主要是增加了一个模块参数
运行环境:TQ2440开发板,内核版本2.6.30.4
开发环境:Window下的Source Insight以及PC机上的红帽企版5虚拟机
实验环境前提条件:拥有一个制作好的NFS文件系统
/**********************************hellop.c*************************************/#include<linux/init.h>#include<linux/module.h>#include<linux/moduleparam.h>static char *who="world";static int howmany=1;module_param(who, charp, S_IRUGO);module_param(howmany,int,S_IRUGO);static int __init hello_init(void){ int i; for(i=0;i<howmany;i++) { printk(KERN_WARNING "(%d) hello,%s\n",i,who); } return 0;}static void __exit hello_exit(void){ printk(KERN_WARNING "goodbye world\n");}module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("lwj");MODULE_DESCRIPTION("Just a simple module for hello world");
正如你所见,相比上一篇文章仅多了红色部分。模块参数拥有非常大的价值,日后你将会发现的啦,这里简单介绍一下怎么使用模块参数。
1、我们可以使用下面的命令来装载该模块
insmod hellop howmany=10 who="lwj"
2、在insmod改变模块参数之前,模块必须让这些参数对insmod命令可见,所以我们使用了module_param宏来声明,这个宏在moduleparam.h中定义,module_param需要三个参数,如:module_param(who, charp, S_IRUGO);
第一参数是变量的名称、第二个参数是变量的类型、第三个是访问权限,S_IRUGO是任何人均可读,但不能修改。
3、内核支持的模块参数类型有bool、invbool、charp(字符指针)、int、long、short、uint、ulong、ushort
4、模块装载器还支持数组参数,但是比较特殊,需要用下面这个宏来声明
module_param_array(name,type,num,perm);
其中,name是数组的名称,type是数组元素的类型,num是一个整数变量,而perm是常见的访问权限
Makefile编写与上一篇文章基本相同,只需修改obj-m :=hello.o改为obj-m :=hellop.o即可。
实验操作步骤:
一、虚拟机上的操作
1、建立一个单独的文件夹用于存放hellop模块以及Makefile(方便开发)
2、编译模块,拷贝模块到制作好的NFS文件系统。
二、开发板上的操作
[\u@\h \W]# insmod hellop.ko howmany=10 who="lwj"(0) hello,lwj(1) hello,lwj(2) hello,lwj(3) hello,lwj(4) hello,lwj(5) hello,lwj(6) hello,lwj(7) hello,lwj(8) hello,lwj(9) hello,lwj[\u@\h \W]# rmmod hellopgoodbye world
结束语:
在这里先给大家说明点,这二节都比较简单,陆续的文章将会呈现难度逐渐增加的驱动分析。只要大家坚持下来,一定能学会驱动,最后,祝大家学习愉快。
- helloworld驱动加强版
- helloworld驱动加强版
- 驱动版HelloWorld
- HelloWorld驱动
- linux驱动教程加强整理版
- tornado开发学习之1.HelloWorld和它加强版版本
- 驱动之HelloWorld
- HelloWorld模块加载--驱动
- ubuntu 调试HelloWorld 驱动
- ubuntu 调试HelloWorld 驱动
- linux设备驱动--HelloWorld
- ubuntu 调试HelloWorld 驱动
- HelloWorld 驱动详解
- linux设备驱动--HelloWorld
- 设备驱动之一---Helloworld
- linux设备驱动--HelloWorld
- OpenRisc 驱动之helloworld
- helloworld - linux驱动
- JDK 1.5 新特性之枚举值与枚举类
- c++第二次实验1.4
- Linux rmdir --删除空目录
- emacs debug
- C++字符串转数值
- helloworld驱动加强版
- windows上nodejs的大坑
- C++ map的基本操作和使用
- Linux route --显示和操作IP路由表
- Maven仓库管理之Nexus
- HashMap源码注解 之 成员变量(二)
- 如何测试是否有某个权限
- Features2D + Homography物体识别
- 02. Macbook经验积累