当前位置: 技术问答>linux和unix
请教高手,有关字符设备驱动程序问题
来源: 互联网 发布时间:2016-07-26
本文导语: 我们的上机实验要编写一个简单的模块化字符设备驱动程序 实验指导书上是这样写的: (1)编写初始化和注销函数:scull_init() 和 scull_exit(); (2)编写5个基本的设备接口函数,包括scull_open(),scull_write(),scull_rea...
我们的上机实验要编写一个简单的模块化字符设备驱动程序
实验指导书上是这样写的:
(1)编写初始化和注销函数:scull_init() 和 scull_exit();
(2)编写5个基本的设备接口函数,包括scull_open(),scull_write(),scull_read(),scull_ioctl()和scull_release();
(3)编写一个测试程序来测试所编写的字符设备驱动程序。
除了上面这三句,其他的什么也没有,我看到半天也没看懂是什么。
字面上理解,这几个函数应该是初始设备,注销设备, 打开设备 读设备 设备io控制 释放设备
可这到底怎样写呢?redhat9 linux下的设备驱动程序到底是怎样的结构呢? 是怎样控制设备的呢?
怎样检验所写的驱动程序能正确的控制设备呢?
我初学linux真搞不懂这东西怎样弄,在线等各位高手帮我解答一下,谢谢!
实验指导书上是这样写的:
(1)编写初始化和注销函数:scull_init() 和 scull_exit();
(2)编写5个基本的设备接口函数,包括scull_open(),scull_write(),scull_read(),scull_ioctl()和scull_release();
(3)编写一个测试程序来测试所编写的字符设备驱动程序。
除了上面这三句,其他的什么也没有,我看到半天也没看懂是什么。
字面上理解,这几个函数应该是初始设备,注销设备, 打开设备 读设备 设备io控制 释放设备
可这到底怎样写呢?redhat9 linux下的设备驱动程序到底是怎样的结构呢? 是怎样控制设备的呢?
怎样检验所写的驱动程序能正确的控制设备呢?
我初学linux真搞不懂这东西怎样弄,在线等各位高手帮我解答一下,谢谢!
|
看《LDD》第3版,书中有现成的例子,源代码都有下
URL: http://lwn.net/Kernel/LDD3/
URL: http://lwn.net/Kernel/LDD3/
|
驱动一般要实现以下接口.
init();
open();/* 在这里注册IRQ */
ctrl();
read();
write();
close();/* 注销IRQ */
release();
当系统运行后,我们可以用系统调用 fopen()来打开设备文件(/dev/下全部为设备文件),不过网络通讯要用socket API,而不是文件系统API,读写也是文件系统API, 这点跟我们访问正规文件是一样的.