免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 835 | 回复: 0
打印 上一主题 下一主题

嵌入式linux设备驱动程序之一 hello_world模块 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-30 22:19 |只看该作者 |倒序浏览
前言

今天开始第一个驱动模块编写,终于在自己搭建的环境上可以编写驱动,下面就从最基本的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设置见
         
http://blog.chinaunix.net/u2/62027/showart_1967097.html
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
到此,第一个驱动模块就顺利编写完了......


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/62027/showart_1982288.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP