アプリケーション・プログラム用のコア・イベント管理名前空間。 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().
00118 { 00119 // 割込みの順位設定。必要に応じて各デバイスにIVG7..15を設定する。 00120 // コメント欄の[]内はデフォルト順位 00121 // ()内はDMAにデフォルトで割り当てられているデバイス 00122 *pSIC_IAR0 = 00123 P0_IVG(7) //[7] PLL Wakeup 00124 | P1_IVG(7) //[7] DMA Error 00125 | P2_IVG(7) //[7] Peripheral Error 00126 | P3_IVG(8) //[8] RTC 00127 | P4_IVG(8) //[8] DMA0 (PPI) 00128 | P5_IVG(9) //[9] DMA3 (SPORT0 RX) 00129 | P6_IVG(9) //[9] DMA4 (SPORT0 TX) 00130 | P7_IVG(9); //[9] DMA5 (SPORT1 RX) 00131 00132 *pSIC_IAR1 = 00133 P8_IVG(9) //[9] DMA6 (SPORT1 RTX) 00134 | P9_IVG(8) //[10] TWI. **** IVG8に割り当てなおしている *** 00135 | P10_IVG(10) //[10] DMA7 (SPI) 00136 | P11_IVG(10) //[10] DMA8 (UART0 RX) 00137 | P12_IVG(10) //[10] DMA9 (UART0 TX) 00138 | P13_IVG(10) //[10] DMA10 (UART1 RX) 00139 | P14_IVG(10) //[10] DMA11 (UART1 TX) 00140 | P15_IVG(11); //[11] CAN RX 00141 00142 *pSIC_IAR2 = 00143 P16_IVG(11) //[11] CAN TX 00144 | P17_IVG(11) //[11] DMA1 (MAC RX), PORTH IRQ A 00145 | P18_IVG(11) //[11] DMA2 (MAC TX), PORTH IRQ B 00146 | P19_IVG(12) //[12] TIMER0 00147 | P20_IVG(12) //[12] TIMER1 00148 | P21_IVG(12) //[12] TIMER2 00149 | P22_IVG(12) //[12] TIMER3 00150 | P23_IVG(12); //[12] TIMER4 00151 00152 *pSIC_IAR3 = 00153 P24_IVG(12) //[12] TIMER5 00154 | P25_IVG(12) //[12] TIMER6 00155 | P26_IVG(12) //[12] TIMER7 00156 | P27_IVG(12) //[12] PORTF IRQ A, PORTG IRQ A 00157 | P28_IVG(12) //[12] PORTG IRQ B 00158 | P29_IVG(13) //[13] MDMA 0 00159 | P30_IVG(13) //[13] MDMA 1 00160 | P31_IVG(13); //[13] Watchdog, PORTF IRQ B 00161 00162 interrupt( SIGIVG14, ivg14 ); // IVG14ハンドラの登録 00163 interrupt( SIGIVG13, ivg13 ); // IVG13ハンドラの登録 00164 interrupt( SIGIVG12, ivg12 ); // IVG12ハンドラの登録 00165 interrupt( SIGIVG11, ivg11 ); // IVG11ハンドラの登録 00166 interrupt( SIGIVG10, ivg10 ); // IVG10ハンドラの登録 00167 interrupt( SIGIVG9, ivg9 ); // IVG9ハンドラの登録 00168 interrupt( SIGIVG8, ivg8 ); // IVG8ハンドラの登録 00169 interrupt( SIGIVG7, ivg7 ); // IVG7ハンドラの登録 00170 };
void cec::ivg10 | ( | int | sig | ) |
IVG10イベントの処理
BlackfinコアのIVG10イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00077 { 00078 spuriousIRQ(); // 未定義割り込みの処理 00079 }
void cec::ivg11 | ( | int | sig | ) |
IVG11イベントの処理
BlackfinコアのIVG11イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00068 { 00069 spuriousIRQ(); // 未定義割り込みの処理 00070 }
void cec::ivg12 | ( | int | sig | ) |
IVG12イベントの処理
BlackfinコアのIVG12イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00059 { 00060 spuriousIRQ(); // 未定義割り込みの処理 00061 }
void cec::ivg13 | ( | int | sig | ) |
IVG13イベントの処理
BlackfinコアのIVG13イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00050 { 00051 spuriousIRQ(); // 未定義割り込みの処理 00052 }
void cec::ivg14 | ( | int | sig | ) |
IVG14イベントの処理
BlackfinコアのIVG14イベントの処理を行う。通常、このイベントはソフトウェア・割り込みに割り当てる。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00041 { 00042 spuriousIRQ(); // 未定義割り込みの処理 00043 }
void cec::ivg7 | ( | int | sig | ) |
IVG7イベントの処理
BlackfinコアのIVG7イベントの処理を行う。イベントの処理方法については cecを参照。
参照先 spuriousIRQ().
参照元 init().
00112 { 00113 spuriousIRQ(); // 未定義割り込みの処理 00114 }
void cec::ivg8 | ( | int | sig | ) |
IVG8イベントの処理
BlackfinコアのIVG8イベントの処理を行う。このイベントには、 初期化時にTWIの割り込みを割り当て直している。 twi::ISR() を呼び出す。イベントの処理方法については cecを参照。
参照先 twi::ISR()・spuriousIRQ().
参照元 init().
00101 { 00102 if ( twi::ISR() ) // TWI割り込み 00103 return; // 処理が行われたら即リターン 00104 spuriousIRQ(); // 未定義割り込みの処理 00105 }
void cec::ivg9 | ( | int | sig | ) |
IVG9イベントの処理
BlackfinコアのIVG9イベントの処理を行う。このイベントには、 オーディオ・フレームワークの割り込みが割り当てられているので afw::ISR() を呼び出す。イベントの処理方法については cecを参照。
参照先 afw::ISR()・spuriousIRQ().
参照元 init().
00088 { 00089 if ( afw::ISR() ) // オーディオ・フレームワーク割り込み 00090 return; // 処理が行われたら即リターン 00091 spuriousIRQ(); // 未定義割り込みの処理 00092 }
void cec::spuriousIRQ | ( | void | ) |