中断的问题

目前我的QNX运行在一块PC-104上,数据采集程序用了中断5,这个中断并没有共用,但是奇怪的是,只要动动鼠标如打开一个窗口,与中断绑定的线程就运行不稳定,会丢数,这是什么原因呢?如果我将线程中的工作放到中断响应函数中做可以吗?在DOS下好象有中断重入的问题,向printf()之类的语句就不能用。请唐先生帮助分析以下原因。

中断响应函数中只能做很有限的操作(读写寄存器,内存什么的),不能进行内核调用。

你的问题,可以提高“与中断绑定的线程”的优先级。如果你的InterruptAttach()时的事件是一个pulse的话,可以初始化pulse到一个比较高的优先级。

我的线程优先级已经提高了30,但是没有用。

你可以确定吗?

确定

你的中断处理线程在30上运行,系统里没有别人在这么高运行吧。我想不出来还有什么可以防碍你的中断线程运行的。可以试试用 procnto-instr 来检查究竟是谁妨碍了中断处理线程的运行。

顺便提一下,目前我的线程中通过IO读取板卡的数据,CPU的占用率很高,大概60%,这有影响吗?

应该没有吧。如果你实在担心在IO读数据时(是一个循环吧)会被鼠标中断,也可以在读数的循环前后关/开中断。(InterruptDisable()/InterruptEnable())

procnto-instr 是命令吗?怎么在QNX下找不到

http://www.qnx.com/developers/docs/6.3.0SP2/instr_en/instr/introduction.html