7.23.2007

int - sysirq map

OAL\Bspintr.c 中 OEMInterruptHandler( )在處理interrupt 時。非即時性的,都呼叫 OALIntrTranslateIrq( ),把Hardware IRQ Number 變成 Software Irq Number。

OALIntrTranslateIrq( )利用內部的Table,查表找出Hardware IRQ對應的software Irq 值。

"表"是怎麼產生?

找一下 OALIntrTranslateIrq( )在哪裡...

在 \PLATFORM\COMMON\SRC\COMMON\INTR\BASE\map.c 中

C:\WINCE500\PLATFORM\COMMON\SRC\COMMON\INTR\BASE\sources 看出這個folder 的 target 是 oal_intr.lib。

再找哪一個folder 的sources 有link oal_intr.lib ...
在 platform 的 Kernel\Kern folder 有 link 。
在 platform 的 common\intr 也有link,但是因為 copy 到 oal 下,所以 common\intr 實際沒有在 common/dir 中。

oal folder 的target 是 oal.lib。 Kernel\Kern\sources 中 也有 link 到 oal.lib ,而且 target 是 "Program" ,所以...應該是在這裡把 oal_intr.lib 的map.c 和 oal.lib link 在一起。

所以map.c 就是關鍵:

沒有留言: