中国卓别林:教你完成最简单的linux驱动 hello world
来源:百度文库 编辑:偶看新闻 时间:2024/05/03 09:52:10
最简单的linux驱动hello world,向你展示了一个linux驱动的框架,代码如下(来自己有linux设备驱动一书,稍做改动):
1 #include
2 #include
3 #include
4
5 MODULE_LICENSE("GPL");
6
7 static int hello_init(){
8 printk(KERN_ALERT"Hello world\n");
9 return 0;
10 }
11
12 static void hello_exit(){
13 printk(KERN_ALERT"Good bye world\n");
14 }
15
16 module_init(hello_init);
17 module_exit(hello_exit);
对于这点代码,相信大家都能看明白,不明白的可以查看一下linux设备驱动一书,我在这里向大家介绍的主要问题不在于这几行代码,而在于怎么样正确的编译这一段代码,相信这也是大家遇到问题最多的地方。
下面是我使用的Makefile文件的内容:
TARGET=hello //这一行是定义模块名
KDIR=/usr/src/linux/ //指定内核源友树所在的目录
PWD=$(shell pwd) //得到驱动代码所在的目录并存储在PWD变量 中
obj-m:=$(TARGET).o
default:
make -C $(KDIR) M=$(PWD) modules //利用内核提供的Makefile和Kconfig系统来编译驱动模块
当你make的时候,可能会出现一个问题,提示有某些头文件找不到,这种情况下是因为内核源码树还没有做好编译驱动模块的准备,这时候可以到内核源码树的目录下执行make modules_prepare命令,这样再make驱动模块的时候就不会再出现这个错误了,如果make modules_prepare命令还有错误的话,就先执行一次make menuconfig命令,生成config文件。
这样就可以正常的编译通过驱动模块了,在当前目录下会得到一个hello.ko的文件,再利用insmod命令和rmmod命令就可以把这个模块加载到系统和从系统移出(需要注意的是这两个命令只能由root用户来执行)。
接下在很多有可能会遇到一个问题,当用insmod命令把hello.ko模块加载到系统的时候会出现
insmod: error inserting 'hello.ko': -1 Invalid module format 错误。这个错误是因为你编译模块的时候采用的源码的版本同你系统现在使用的内核的版本不一致造成的,解决的方法就是使用和系统内核版本一致的内核源码树。
1 #include
2 #include
3 #include
4
5 MODULE_LICENSE("GPL");
6
7 static int hello_init(){
8 printk(KERN_ALERT"Hello world\n");
9 return 0;
10 }
11
12 static void hello_exit(){
13 printk(KERN_ALERT"Good bye world\n");
14 }
15
16 module_init(hello_init);
17 module_exit(hello_exit);
对于这点代码,相信大家都能看明白,不明白的可以查看一下linux设备驱动一书,我在这里向大家介绍的主要问题不在于这几行代码,而在于怎么样正确的编译这一段代码,相信这也是大家遇到问题最多的地方。
下面是我使用的Makefile文件的内容:
TARGET=hello //这一行是定义模块名
KDIR=/usr/src/linux/ //指定内核源友树所在的目录
PWD=$(shell pwd) //得到驱动代码所在的目录并存储在PWD变量 中
obj-m:=$(TARGET).o
default:
make -C $(KDIR) M=$(PWD) modules //利用内核提供的Makefile和Kconfig系统来编译驱动模块
当你make的时候,可能会出现一个问题,提示有某些头文件找不到,这种情况下是因为内核源码树还没有做好编译驱动模块的准备,这时候可以到内核源码树的目录下执行make modules_prepare命令,这样再make驱动模块的时候就不会再出现这个错误了,如果make modules_prepare命令还有错误的话,就先执行一次make menuconfig命令,生成config文件。
这样就可以正常的编译通过驱动模块了,在当前目录下会得到一个hello.ko的文件,再利用insmod命令和rmmod命令就可以把这个模块加载到系统和从系统移出(需要注意的是这两个命令只能由root用户来执行)。
接下在很多有可能会遇到一个问题,当用insmod命令把hello.ko模块加载到系统的时候会出现
insmod: error inserting 'hello.ko': -1 Invalid module format 错误。这个错误是因为你编译模块的时候采用的源码的版本同你系统现在使用的内核的版本不一致造成的,解决的方法就是使用和系统内核版本一致的内核源码树。
Linux的简单问题
linux 的网卡驱动
HELL的中文意思
hell !!!!
linux下载的简单问题
^_^很简单的,你做得到吗?!完成后,另补贴送100金币哦
在大学里,你感觉什么是最应该做的事(你已经完成的和没完成的)!
linux下的硬件驱动
HELL的国家中文是什么
试一试,看你的答案 是否是最简单的。
怎样用最简单的方法知道他喜不喜欢你?
你手下是什么?回答最简单的胜
你脚下是什么?回答最简单的胜
有一段歌词是“你是我最简单的快乐,你是我最简单的哭泣”的歌名
Linux最基本的操作~~~~~~
完成以下题目(很简单的)
(Linux)如何不退出Vi完成程序的编译?
Linux下的一个简单问题
红旗LINUX的驱动能用到LINUX里吗?
linux系统的网络设备驱动的程序结构
linux的usb驱动哪里有
求INTEL 945PLrn的LINUX驱动
linux 9.0安装显卡驱动的问题
linux下的数据采集驱动