Chinaunix首页 | 论坛 | 博客
  • 博客访问: 149897
  • 博文数量: 18
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 222
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-24 22:24
个人简介

电子民工

文章存档

2011年(1)

2009年(16)

2008年(1)

我的朋友

分类: LINUX

2009-06-30 22:19:07

前言
 
今天开始第一个驱动模块编写,终于在自己搭建的环境上可以编写驱动,下面就从最基本的hello world开始吧
 

#include
#include
#define __license__      "GPL"
 
static int __init hello_init(void)
{
 printk("Hello ,cool world!\n");
 return 0;
}
 
static void __exit hello_exit(void)
{
 printk("Goodbye,cruel world\n");
}
 
MODULE_LICENSE(__license__);
 
module_init(hello_init);
module_exit(hello_exit);

 
驱动结构分析:从上面的程序可以发现,linux驱动包括一下几部分
1)基本头文件,如init.h等,具体用到哪些要根据具体代码添加;
2)MODULE_LICENSE,必须加入"GPL"规则;
3)必须包含init和exit还数,前者负责设备初始化注册等,后则在卸载模块释放资源;
4)如果不用module_init和module_exit,则必须使用函数名init_module和cleanup_module;
 
如何编译模块在开发板上运行:包括以下步骤
1)拷贝函数至linux/drivers/char目录下;
2)修改该目录下Makefile文件,在里面添加obj-m     += hello.o;
3)在linux根目录执行命令make modules,在linux/drivers/char目录下生成hello.ko文件;
4)设置NFS服务挂载PC上的/home/nfs目录,该目录下拷贝有刚生成的文件hello.ko,NFS设置见
5)开启超级终端,启动单板已经移植好的系统,然后在/mnt/nfs目录使用mount 挂载PC的/home/nfs目录
6)进入/mnt/nfs目录,这是可以看到hello.ko文件,执行insmod和rmmod命令就可以看到如下信息了
 

# ls
hello.ko         led_test         s3c24xx_leds.ko
# insmod hello.ko
Hello ,cool world!
# lsmod
Module                  Size  Used by
hello                   1248  0
# rmmod hello.ko
Goodbye,cruel world

到此,第一个驱动模块就顺利编写完了......

阅读(3334) | 评论(4) | 转发(1) |
给主人留下些什么吧!~~

whbarm92009-07-11 22:45:46

可以啊,我的QQ是274667374,可以加我吧,著名是嵌入式学习

knight20462009-07-08 23:09:17

你编译成功了?我怎么这么不幸? 能联系我吗? 59985768

chinaunix网友2009-07-05 15:50:02

你也在南山呀  做什么的?  请加 qq5980382 交个朋友

chinaunix网友2009-07-03 17:47:07

www.duwuzhe.cn/bbs