如何编写Linux操作系统下的设备驱动程序.doc
《如何编写Linux操作系统下的设备驱动程序.doc》由会员分享,可在线阅读,更多相关《如何编写Linux操作系统下的设备驱动程序.doc(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LinuxUnix 版 (精华区)发信人:Roy_G(想去西藏的小巴郎),信区:LINUX标题:如何编写Linux操作系统下的设备驱动程序(3)发信站:中国科大BBS站(SatOct319:02:461998)转信站:DUT!ustcnews!ustcbbs如何编写Linux操作系统下的设备驱动程序RoyG三设备驱动程序中的一些具体问题。1.I/OPort.和硬件打交道离不开I/OPort,老的ISA设备经常是占用实际的I/O端口,在linux下,操作系统没有对I/O口屏蔽,也就是说,任何驱动程序都可以对任意的I/O口操作,这样就很容易引起混乱。每个驱动程序应该自己避免误用端口。有两个重要的k
2、ernel函数可以保证驱动程序做到这一点。1)check_region(intio_port,intoff_set)这个函数察看系统的I/O表,看是否有别的驱动程序占用某一段I/O口。参数1:io端口的基地址,参数2:io端口占用的范围。返回值:0没有占用,非0,已经被占用。2)request_region(intio_port,intoff_set,char*devname)如果这段I/O端口没有被占用,在我们的驱动程序中就可以使用它。在使用之前,必须向系统登记,以防止被其他程序占用。登记后,在/proc/ioports文件中可以看到你登记的io口。参数1:io端口的基地址。参数2:io端口
3、占用的范围。参数3:使用这段io地址的设备名。在对I/O口登记后,就可以放心地用inb(),outb()之类的函来访问了。在一些pci设备中,I/O端口被映射到一段内存中去,要访问这些端口就相当于访问一段内存。经常性的,我们要获得一块内存的物理地址。在dos环境下,(之所以不说是dos操作系统是因为我认为DOS根本就不是一个操作系统,它实在是太简单,太不安全了)只要用段:偏移就可以了。在window95中,95ddk提供了一个vmm调用_MapLinearToPhys,用以把线性地址转化为物理地址。但在Linux中是怎样做的呢?2内存操作在设备驱动程序中动态开辟内存,不是用malloc,而是k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 编写 Linux 操作系统 设备 驱动程序
限制150内