QNX 4.25设备驱动程序的编写
数-zu选项编译之。这样能够告知编译器,使得SS!=DS。
任何被中断处理程序修改的变量需要指定为volatile关键字。中断处理程序的返回值必须为0;或某个有效的代码号(proxy pid),以此来触发一个代码从而发送一则消息。
下面总结一个中断处理程序编写时的注意点:
①只能和自己的硬件对话(如,清除设备的中断状态位),千万不要对8259中断控制器编程!
②使中断处理程序尽可能的短小。如果有很多的工作需要做,必须触发一个代理,并且它唤醒一个进程完成这些工作,以保证其它进程及低优先级的中断正常运行,提高系统的实时响应能力。
③中断处理程序不能调用含有内核调用的例程。
④中断处理程序必须是一个远程(far)调用函
本文链接地址:http://www.oyaya.net/fanwen/view/168007.html
数。 ⑤中断处理程序必须在自己的模块中。 ⑥无论程序中其它模块是如何编译的,包含中断处理程序的模块必须是利用-zu和-s选项编译。(利用cc-zu-Wc-s)这些选项能够保证SS!=DS,并且关断栈检查。当然,也可使用: #pragma off(check_stack); pid_t far handler_xxx(){ return(proxy_xxx); } #pragma on(check_stack); 在试图编写执行一个中断处理程序前,务必仔细阅读在线文档。现在,可以参照硬件手册自由地对您的设备寄存器进行操作了。 结语 在HT-7U极向场电源控制系统中,我们在QNX4.25下开发了多种设备的驱动程序。这些程序工作稳定、性能优异、工作量小且易于控制。此外,QSSL公司的新版本QNX6.x下开发驱动更为方便,其原理同QNX4.25相似或者是对应的。
《QNX 4.25设备驱动程序的编写(第3页)》