网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 设备驱动 > 文章  
如何编写Linux操作系统的设备驱动程序
文章来源: 赛迪网技术社区 文章作者: Roy G 发布时间: 2006-01-01   字体: [ ]  
 

int init_module(void)
{
int result;

result = register_chrdev(0, "test", &test_fops);
if (result < 0) {
printk(KERN_INFO "test: can't get major number ");
return result;
}
if (test_major == 0) test_major = result; /* dynamic */
return 0;
}

  在用insmod命令将编译好的模块调入内存时,init_module 函数被调用。在这里,init_module只做了一件事,就是向系统的字符设备表登记了一个字符设备。register_chrdev需要三个参数,参数一是希望获得的设备号,如果是零的话,系统将选择一个没有被占用的设备号返回。参数二是设备文件名,参数三用来登记驱动程序实际执行操作的函数的指针。如果登记成功,返回设备的主设备号,不成功,返回一个负值。

void cleanup_module(void)
{
unregister_chrdev(test_major, "test");
}

  在用rmmod卸载模块时,cleanup_module函数被调用,它释放字符设备test在系统字符设备表中占有的表项。

  一个极其简单的字符设备可以说写好了,文件名就叫test。c吧。下面编译

$ gcc -O2 -DMODULE -D__KERNEL__ -c test。c

  得到文件test。o就是一个设备驱动程序。如果设备驱动程序有多个文件,把每个文件按上面的命令行编译,然后:

ld -r file1。o file2。o -o modulename。

  驱动程序已经编译好了,现在把它安装到系统中去。

$ insmod -f test

  如果安装成功,在/proc/devices文件中就可以看到设备test,并可以看到它的主设备号,要卸载的话,运行

$ rmmod test

  下一步要创建设备文件。

mknod /dev/test c major minor

  c 是指字符设备,major是主设备号,就是在/proc/devices里看到的。用shell命令

$ cat /proc/devices | awk "\$2=="test" {print \$1}"

  就可以获得主设备号,可以把上面的命令行加入你的shell script中去。minor是从设备号,设置成0就可以了。我们现在可以通过设备文件来访问我们的驱动程序。写一个小小的测试程序。

 
推荐文章
·让arm-linux支持普通USB摄像头
·Linux设备驱动编程之结构化设备
·Linux设备驱动编程之复杂设备驱
·深入浅出Linux设备驱动之并发控
·深入浅出Linux设备驱动之字符设
·深入浅出Linux设备驱动编程之内
·深入浅出Linux设备驱动编程之引
·Linux设备驱动编程之定时器
·Linux设备驱动编程之中断处理
·Linux设备驱动编程之异步通知
·Linux设备驱动编程之阻塞与非阻
·Linux设备驱动编程之内存与I/O操
·摄像头(WebCam)在Linux操作系
·中星微芯片(301,302)USB 摄像头
 

 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·摄像头(WebCam)在Linu
·在Linux中使用中星微301
·中星微芯片(301,302)USB
·Linux设备驱动编程之内
·深入浅出Linux设备驱动
·Linux培训园地:Linux下
·Linux的I2C驱动架构
·让arm-linux支持普通USB
相关文章
·深入浅出分析Linux设备
·让微软汗颜的XGL-Linux
·Linux桌面环境下载利器N
·Linux培训园地:Linux下
·Qt/Embedded在嵌入式Lin
·Linux培训园地:Linux下
·Linux设备驱动编程之结
·Linux培训园地:Linux下
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统