アプリケーション・プログラム用のコア・イベント管理名前空間。 Blackfinコアの各イベントに対応するイベント・ハンドラをこの名前空間 におく。通常は割込みに対応するイベント・ハンドラを置く。
cecの中のイベント・ハンドラ内部には処理の実体をおかず、各デバイスの サービス・ルーチンを呼ぶようにする。サービス・ルーチン内部は 呼び出されたら自分が担当する割り込みが発生しているかを調べ、 発生しているなら処理を行って真を返す。発生していないなら 偽を返す。 cec内部のイベント・ハンドラ内部では
if ( デバイス1の割り込みサービス・ルーチン() ) return; if ( デバイス2の割り込みサービス・ルーチン() ) return; if ( デバイス3の割り込みサービス・ルーチン() ) return;
関数 | |
void | spuriousIRQ (void) |
未定義割り込みの処理 | |
void | ivg14 (int sig) |
IVG14イベントの処理 | |
void | ivg13 (int sig) |
IVG13イベントの処理 | |
void | ivg12 (int sig) |
IVG12イベントの処理 | |
void | ivg11 (int sig) |
IVG11イベントの処理 | |
void | ivg10 (int sig) |
IVG10イベントの処理 | |
void | ivg9 (int sig) |
IVG9イベントの処理 | |
void | ivg8 (int sig) |
IVG8イベントの処理 | |
void | ivg7 (int sig) |
IVG7イベントの処理 | |
void | init (void) |
コア・イベント・ハンドラの登録 | |
void | start (void) |
処理の開始 |
void cec::init | ( | void | ) |
コア・イベント・ハンドラの登録
cec内部のイベントハンドラをシステムに登録する
参照先 ivg10()・ivg11()・ivg12()・ivg13()・ivg14()・ivg7()・ivg8()・ivg9().
参照元 main().
00114 { 00115 // 割込みの順位設定。必要に応じて各デバイスにIVG7..15を設定する。 00116 // コメント欄の[]内はデフォルト順位 00117 // ()内はDMAにデフォルトで割り当てられているデバイス 00118 *pSIC_IAR0 = 00119 P0_IVG(7) //[7] PLL Wakeup 00120 | P1_IVG(7) //[7] DMA Error 00121 | P2_IVG(7) //[7] Peripheral Error 00122 | P3_IVG(8) //[8] RTC 00123 | P4_IVG(8) //[8] DMA0 (PPI) 00124 | P5_IVG(9) //[9] DMA3 (SPORT0 RX) 00125 | P6_IVG(9) //[9] DMA4 (SPORT0 TX) 00126 | P7_IVG(9); //[9] DMA5 (SPORT1 RX) 00127 00128 *pSIC_IAR1 = 00129 P8_IVG(9) //[9] DMA6 (SPORT1 RTX) 00130 | P9_IVG(10) //[10] TWI 00131 | P10_IVG(10) //[10] DMA7 (SPI) 00132 | P11_IVG(10) //[10] DMA8 (UART0 RX) 00133 | P12_IVG(10) //[10] DMA9 (UART0 TX) 00134 | P13_IVG(10) //[10] DMA10 (UART1 RX) 00135 | P14_IVG(10) //[10] DMA11 (UART1 TX) 00136 | P15_IVG(11); //[11] CAN RX 00137 00138 *pSIC_IAR2 = 00139 P16_IVG(11) //[11] CAN TX 00140 | P17_IVG(11) //[11] DMA1 (MAC RX), PORTH IRQ A 00141 | P18_IVG(11) //[11] DMA2 (MAC TX), PORTH IRQ B 00142 | P19_IVG(12) //[12] TIMER0 00143 | P20_IVG(12) //[12] TIMER1 00144 | P21_IVG(12) //[12] TIMER2 00145 | P22_IVG(12) //[12] TIMER3 00146 | P23_IVG(12); //[12] TIMER4 00147 00148 *pSIC_IAR3 = 00149 P24_IVG(12) //[12] TIMER5 00150 | P25_IVG(12) //[12] TIMER6 00151 | P26_IVG(12) //[12] TIMER7 00152 | P27_IVG(12) //[12] PORTF IRQ A, PORTG IRQ A 00153 | P28_IVG(12) //[12] PORTG IRQ B 00154 | P29_IVG(13) //[13] MDMA 0 00155 | P30_IVG(13) //[13] MDMA 1 00156 | P31_IVG(13); //[13] Watchdog, PORTF IRQ B 00157 00158 interrupt( SIGIVG14, ivg14 ); // IVG14ハンドラの登録 00159 interrupt( SIGIVG13, ivg13 ); // IVG13ハンドラの登録 00160 interrupt( SIGIVG12, ivg12 ); // IVG12ハンドラの登録 00161 interrupt( SIGIVG11, ivg11 ); // IVG11ハンドラの登録 00162 interrupt( SIGIVG10, ivg10 ); // IVG10ハンドラの登録 00163 interrupt( SIGIVG9, ivg9 ); // IVG9ハンドラの登録 00164 interrupt( SIGIVG8, ivg8 ); // IVG8ハンドラの登録 00165 interrupt( SIGIVG7, ivg7 ); // IVG7ハンドラの登録 00166 };
void cec::ivg10 | ( | int | sig | ) |
IVG10イベントの処理
BlackfinコアのIVG10イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00075 { 00076 spuriousIRQ(); // 未定義割り込みの処理 00077 }
void cec::ivg11 | ( | int | sig | ) |
IVG11イベントの処理
BlackfinコアのIVG11イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00066 { 00067 spuriousIRQ(); // 未定義割り込みの処理 00068 }
void cec::ivg12 | ( | int | sig | ) |
IVG12イベントの処理
BlackfinコアのIVG12イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00057 { 00058 spuriousIRQ(); // 未定義割り込みの処理 00059 }
void cec::ivg13 | ( | int | sig | ) |
IVG13イベントの処理
BlackfinコアのIVG13イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00048 { 00049 spuriousIRQ(); // 未定義割り込みの処理 00050 }
void cec::ivg14 | ( | int | sig | ) |
IVG14イベントの処理
BlackfinコアのIVG14イベントの処理を行う。通常、このイベントはソフトウェア・割り込みに割り当てる。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00039 { 00040 spuriousIRQ(); // 未定義割り込みの処理 00041 }
void cec::ivg7 | ( | int | sig | ) |
IVG7イベントの処理
BlackfinコアのIVG7イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00106 { 00107 spuriousIRQ(); // 未定義割り込みの処理 00108 }
void cec::ivg8 | ( | int | sig | ) |
IVG8イベントの処理
BlackfinコアのIVG8イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00097 { 00098 spuriousIRQ(); // 未定義割り込みの処理 00099 }
void cec::ivg9 | ( | int | sig | ) |
IVG9イベントの処理
BlackfinコアのIVG9イベントの処理を行う。このイベントには、 オーディオ・フレームワークの割り込みが割り当てられているので afw::ISR() を呼び出す。イベントの処理方法については cecを参照。
参照先 afw::ISR()・spuriousIRQ().
参照元 init().
00086 { 00087 if ( afw::ISR() ) // オーディオ・フレームワーク割り込み 00088 return; // 処理が行われたら即リターン 00089 spuriousIRQ(); // 未定義割り込みの処理 00090 }
void cec::spuriousIRQ | ( | void | ) |