當我在VxWorks Real Time Targets環境下使用多個Wait on IRQ節點時,為何會得到假的回傳值?



主要軟體:
主要軟體版本: 2.3
主要軟體修正版本: N/A
次要軟體: N/A
硬體: CompactRIO>>Controllers>>cRIO-9012, CompactRIO>>Controllers>>cRIO-9014

問題: NI-RIO 2.3搭配LabVIEW 8.5的使用可以支援在單一VI中使用多個Wait on IRQ節點。然而,當我使用CRIO-901x控制器時,會從"Wait on IRQ" 節點得到假的回傳值。這個現象並不會發生在cRIO-9000x或其他Pharlap的Real-Time控制器。這個問題發生的緣由為何呢?

解答:

在LabVIEW 8.2及更早之前的版本,一個host interface VI中只能有一個Wait on IRQ節點。NI-RIO 2.3搭配LabVIEW 8.5的使用可以支援在單一VI中使用多個Wait on IRQ節點。然而,如果應用程式使用多個"Wait on IRQ"節點,同時又發生time-outs的狀況,那麼有時候你會看到"Wait on IRQ"節點會因為其他的節點收到信息而跟著被啟動。這個問題的的另一個特徵是如果你使用多個"Wait on IRQ"節點,而且這些節點在等待不同的IRQs,如果其中有一個發生times out的狀況,你可能會看到當已經timed out的節點最終啟動時,其他的節點有假的回傳值。下面的執行順序會導致一個假的回傳值:

任務A在等待IRQ X時發生一次以上的time out狀況
任務A在等待IRQ Y
IRQ X有回應,接著啟動在等待其他IRQ的任務A

這個問題只會發生在VxWorks Real-Time targets,同時錯誤已經在NI-RIO 2.3.1被修正。



相關連結: KnowledgeBase 4E2GSKLX: List of Bug Fixes for NI-RIO 2.3.1

附加檔案:





報告日期: 08/15/2007
最後更新: 12/09/2007
文件偏號: 4CEFMFLX