ok6410 linux驱动 二 hello驱动
来源:互联网 发布:基于java的web服务器 编辑:程序博客网 时间:2024/05/29 18:14
在linux下驱动模块可以分为静态和动态。
静态编译的话要在linux内核编译的时候加载进去,而动态的话可以随时加载和卸载,两个编写的程序相同,所以在测试时采用动态编译比较方便。
这里可以通过nfs挂载文件测试文件。
1、编写linux下hello驱动
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
static int __init hello_init(void)
{
printk("hello world!");
return 0;
}
static int __exit hello_exit(void)
{
printk("goodbye world! \n");
return 0;
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
2、编写Makefile文件(注意Makefile的书写格式)
obj-m:=hello.o
KDIR:=/wyl/linux-3.0.1
all:
make -C $(KDIR) M=$(shell pwd) modules
clean:
make -C $(KDIR) M=$(shell pwd) clean
note:KDIR为linux内核的路径,根据自己的存放位置进行修改。
3、执行make 命令
完成后可以在文件目录中看到新生成的文件:hello.ko,这个就是我们想要的驱动模块
4、测试模块
将hello.ko复制到/nfs/root目录中
在dnw窗口中进入mnt 目录,可以看到 hello.ko文件,复制到/tmp文件夹下面
执行insmod hello.ko命令进行装载
输入lsmod看是否装载成功
可以看到hello装载成功,但是为什么没有输出呢?
这就是printk和printf的区别:
printk根据日记的级别,将消息打印到当前的控制台上面;
可以将上面的两个printk改写为:
printk("<0>""goodbye world! \n");//最高级别
printk("<0>""goodbye world! \n");
重新按照上面的步骤编译加载。
可以看到现在已经有输出了,说明挂载成功了!
- ok6410 linux驱动 二 hello驱动
- OK6410 linux LED驱动
- OK6410 Linux DS18B20驱动
- OK6410 linux LED驱动
- linux OK6410 LED驱动
- OK6410 Linux DS18B20驱动
- ok6410 linux驱动三 led驱动
- OK6410 驱动
- Linux 驱动----hello
- linux的hello驱动
- Linux hello world 驱动
- linux 驱动 hello world
- arm-linux驱动:hello
- OK6410学习之第一个驱动hello world
- linux下SPI驱动----OK6410(一)
- OK6410的linux的LED驱动,GPIO驱动
- Linux驱动开发-OK6410-LED字符设备驱动实现过程
- OK6410 linux第一个字符型设备驱动:LED驱动
- linux图形界面基本概念
- Android之SQLite操作与升级
- js特效功能脚本使用大全
- JPA执行原生SQL截断Char类型问题
- hadoop返回json格式所有监控值
- ok6410 linux驱动 二 hello驱动
- 北京航空航天大学2014第三次上机解题报告
- java内部类的作用(一)----解决函数参数返回的问题
- codevs (wikioi)1029遍历问题
- leetcode Unique Binary Search Trees
- expdp中使用连接字符串和network_link的区别
- JPA执行原生SQL截断Char类型问题
- java获取cpu、内存、硬盘信息
- Ubuntu下安装给firefox安装flash插件