QNX 4.25设备驱动程序的编写

时间:2020-10-09 12:22:26 理工毕业论文 我要投稿

QNX 4.25设备驱动程序的编写

摘要:介绍实时操作系统QNX4.25下编写设备驱动程序的大体框架、底层细节以及诸多注意点。针对使用较为普遍的PCI设备作为较为详细的描述。 关键词:驱动程序 QNX 实时操作系统 PCI引言QNX是一个多任务、多用户、分布式、可嵌入式符合POSIX标准的微内核的主流实时操作系统,广泛用于实时性能、开发灵活性、网络灵活性要求较高的场合,如电信系统、医疗仪器、航空航天、工业自动化、交通运输、POS机、信息家电等。QNX是一个适合软件/硬件定制的实时操作系统。如果你曾经试图在传统的UNIX或Windows平台下开发设备驱动程序,那么,QNX下开发驱动程序一定会让你受宠若惊。由于QNX的微内核结构,QNX下的系统进程和用户所写的进程没有什么不同,甚至没有私有的隐藏起来的以至用户不能使用的界面。正是这种结构给QNX带来了无与伦比的可扩展性,使得在QNX下写驱动程序如同写其它程序一般方便。设备驱动程序能够获取普通程序所能获得的`任务服务。在QNX中增加一个新的驱动程序不会影响操作系统其它程序的任何部分,QNX环境所需的唯一改变是实现地启动新的驱动程序。当然,我们会遇到形形色色的硬件设备,某些驱动程序可能将以特殊方式控制设备的存在和配置。本文只想集中讨论QNX下如何进入、控制设备级的通用硬件,对所有驱动程序来讲这是一个共性问题。其中,将对使用较多的PCI设备作较为详细的叙述。以下是硬件驱动程序的编写。1 探测硬件首先,需要判断设备是否存在,然后查询该设备的配置(例如,设备基地址、中断号等)。对于某类设备,一般会有一大相应的标准机制来判断其配置。每块设备的基地址、中断号等是编程必须的资源,例如,常用的ISA及PCI硬件设备。对于ISA设备,一般由板上手工跳线设定,不言自明;对于常用的PCI设备,这些资源会由系统自动分配,特别是添减设备,可能会发生变化。因此,在驱动程序中能够动态查找这些资源显得比较重要。对于诸如A/D、D/A、定时卡、I/O板卡这类设备,对照硬件手册编写一些简单的驱动程序并不困难。如果有DOS下驱动程序的C源码,移值应该更容易一些。为了实现对PCI总线设备的控制和管理,必须访问PCI设备的配置空间。配置空间是一容量为256字节并具特定纪录结构的地址空间。该地址空间的结构如图1所示。NQX4.25pp sys/pci.h中对应的结构体定义。

每个PCI设备具有唯一的厂商标识(vendor id)和设备标识(device id),这些信息由硬件手册提供或系统启动时可以看到。下面一段代码展示了于一个给定的PCI设备如何调用QNX相关的函数、侦测设备的存在以及系统分配的资源。其中,标识(index)用来支持和区分具有同样厂商标识和设备标识的几块同样的设备。Index从0开始,如果指定为1,将标识第二块同型号的设备。本例中,YOUR_PCI_DEVICE_ID、YOUR_PCI)CENDOR)OD值是研华的PCL-1713采集卡,可以根据所使用的硬件填以合适的值。以根据所使用的硬件填以合适的值。#include

【QNX 4.25设备驱动程序的编写】相关文章:

1.对于设备驱动程序通知应用程序的几种方法

2.最简单的Linux驱动程序

3.简历内容的编写方式

4.监理通知编写的误区

5.编导编写故事的技巧

6.简单的Java程序编写

7.论文提纲的正确编写

8.简历编写技巧

9.编写JavaScript函数