ネームスペース cec


説明

コア・イベント管理

アプリケーション・プログラム用のコア・イベント管理名前空間。 Blackfinコアの各イベントに対応するイベント・ハンドラをこの名前空間 におく。通常は割込みに対応するイベント・ハンドラを置く。

cecの中のイベント・ハンドラ内部には処理の実体をおかず、各デバイスの サービス・ルーチンを呼ぶようにする。サービス・ルーチン内部は 呼び出されたら自分が担当する割り込みが発生しているかを調べ、 発生しているなら処理を行って真を返す。発生していないなら 偽を返す。 cec内部のイベント・ハンドラ内部では

 if ( デバイス1の割り込みサービス・ルーチン() ) 
     return; 
 if ( デバイス2の割り込みサービス・ルーチン() ) 
     return; 
 if ( デバイス3の割り込みサービス・ルーチン() ) 
     return; 
のようにサービス・ルーチンを並べることで、同じイベント順位に複数のデバイスからの割り込みが 同居している場合も記述を簡潔に行える

また、cecinit()ではSIC_IARxの初期化も行う。この部分もユーザーが必要に応じて書き換える。 詳細は cec::init()のコメントを参照。


関数

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内部のイベントハンドラをシステムに登録する

cec.cpp118 行で定義されています。

参照先 ivg10(), ivg11(), ivg12(), ivg13(), ivg14(), ivg7(), ivg8(), と ivg9().

参照元 main().

00119     {
00120             // 割込みの順位設定。必要に応じて各デバイスにIVG7..15を設定する。
00121             // コメント欄の[]内はデフォルト順位
00122             // ()内はDMAにデフォルトで割り当てられているデバイス
00123         *pSIC_IAR0 =  
00124                   P0_IVG(7)     //[7] PLL Wakeup
00125                 | P1_IVG(7)     //[7] DMA Error
00126                 | P2_IVG(7)     //[7] Peripheral Error
00127                 | P3_IVG(8)     //[8] RTC
00128                 | P4_IVG(8)     //[8] DMA0 (PPI)
00129                 | P5_IVG(9)     //[9] DMA3 (SPORT0 RX)
00130                 | P6_IVG(9)     //[9] DMA4 (SPORT0 TX)
00131                 | P7_IVG(9);    //[9] DMA5 (SPORT1 RX)
00132 
00133         *pSIC_IAR1 =  
00134                   P8_IVG(9)     //[9] DMA6 (SPORT1 RTX)
00135                 | P9_IVG(8)     //[10] TWI. **** IVG8に割り当てなおしている ***
00136                 | P10_IVG(10)   //[10] DMA7 (SPI)
00137                 | P11_IVG(10)   //[10] DMA8 (UART0 RX)
00138                 | P12_IVG(10)   //[10] DMA9 (UART0 TX)
00139                 | P13_IVG(10)   //[10] DMA10 (UART1 RX)
00140                 | P14_IVG(10)   //[10] DMA11 (UART1 TX)
00141                 | P15_IVG(11);  //[11] CAN RX
00142 
00143         *pSIC_IAR2 =  
00144                   P16_IVG(11)   //[11] CAN TX
00145                 | P17_IVG(11)   //[11] DMA1 (MAC RX), PORTH IRQ A
00146                 | P18_IVG(11)   //[11] DMA2 (MAC TX), PORTH IRQ B
00147                 | P19_IVG(12)   //[12] TIMER0
00148                 | P20_IVG(12)   //[12] TIMER1
00149                 | P21_IVG(12)   //[12] TIMER2
00150                 | P22_IVG(12)   //[12] TIMER3
00151                 | P23_IVG(12);  //[12] TIMER4
00152 
00153         *pSIC_IAR3 =  
00154                   P24_IVG(12)   //[12] TIMER5
00155                 | P25_IVG(12)   //[12] TIMER6
00156                 | P26_IVG(12)   //[12] TIMER7
00157                 | P27_IVG(12)   //[12] PORTF IRQ A, PORTG IRQ A
00158                 | P28_IVG(12)   //[12] PORTG IRQ B
00159                 | P29_IVG(13)   //[13] MDMA 0
00160                 | P30_IVG(13)   //[13] MDMA 1
00161                 | P31_IVG(13);  //[13] Watchdog, PORTF IRQ B
00162 
00163         interrupt( SIGIVG14, ivg14 );     // IVG14ハンドラの登録
00164         interrupt( SIGIVG13, ivg13 );     // IVG13ハンドラの登録
00165         interrupt( SIGIVG12, ivg12 );     // IVG12ハンドラの登録 
00166         interrupt( SIGIVG11, ivg11 );     // IVG11ハンドラの登録
00167         interrupt( SIGIVG10, ivg10 );     // IVG10ハンドラの登録 
00168         interrupt( SIGIVG9, ivg9 );     // IVG9ハンドラの登録
00169         interrupt( SIGIVG8, ivg8 );     // IVG8ハンドラの登録 
00170         interrupt( SIGIVG7, ivg7 );     // IVG7ハンドラの登録
00171     };

void cec::ivg10 ( int  sig  ) 

IVG10イベントの処理

BlackfinコアのIVG10イベントの処理を行う。

cec.cpp77 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

00078     {
00079         spuriousIRQ();           // 未定義割り込みの処理
00080     }

void cec::ivg11 ( int  sig  ) 

IVG11イベントの処理

BlackfinコアのIVG11イベントの処理を行う。

cec.cpp68 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

00069     {
00070         spuriousIRQ();           // 未定義割り込みの処理
00071     }

void cec::ivg12 ( int  sig  ) 

IVG12イベントの処理

BlackfinコアのIVG12イベントの処理を行う。

cec.cpp59 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

00060     {
00061         spuriousIRQ();           // 未定義割り込みの処理
00062     }

void cec::ivg13 ( int  sig  ) 

IVG13イベントの処理

BlackfinコアのIVG13イベントの処理を行う。

cec.cpp50 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

00051     {
00052         spuriousIRQ();           // 未定義割り込みの処理
00053     }

void cec::ivg14 ( int  sig  ) 

IVG14イベントの処理

BlackfinコアのIVG14イベントの処理を行う。通常、このイベントはソフトウェア・割り込みに割り当てる。

cec.cpp41 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

00042     {
00043         spuriousIRQ();           // 未定義割り込みの処理
00044     }

void cec::ivg7 ( int  sig  ) 

IVG7イベントの処理

BlackfinコアのIVG7イベントの処理を行う。

cec.cpp112 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

00113     {
00114         spuriousIRQ();           // 未定義割り込みの処理
00115     }

void cec::ivg8 ( int  sig  ) 

IVG8イベントの処理

BlackfinコアのIVG8イベントの処理を行う。このイベントには、 初期化時にTWIの割り込みを割り当て直している。 twi::ISR() を呼び出す。

cec.cpp101 行で定義されています。

参照先 twi::ISR(), と spuriousIRQ().

参照元 init().

00102     {
00103         if ( twi::ISR() )                   // TWI割り込み
00104             return;                         // 処理が行われたら即リターン
00105         spuriousIRQ();           // 未定義割り込みの処理
00106     }

void cec::ivg9 ( int  sig  ) 

IVG9イベントの処理

BlackfinコアのIVG9イベントの処理を行う。このイベントには、 オーディオ・フレームワークの割り込みが割り当てられているので afw::ISR() を呼び出す。

cec.cpp88 行で定義されています。

参照先 afw::ISR(), と spuriousIRQ().

参照元 init().

00089     {
00090         if ( afw::ISR() )       // オーディオ・フレームワーク割り込み
00091             return;             // 処理が行われたら即リターン
00092         spuriousIRQ();           // 未定義割り込みの処理
00093     }

void cec::spuriousIRQ ( void   ) 

未定義割り込みの処理

割り込みが発生したにもかかわらず規定の割り込み処理ルーチン で処理しなかった場合には、このルーチンで受け止める。

cec.cpp31 行で定義されています。

参照元 ivg10(), ivg11(), ivg12(), ivg13(), ivg14(), ivg7(), ivg8(), と ivg9().

00032     {
00033         while(1)
00034             ;
00035     }

void cec::start ( void   ) 

処理の開始

ダミー関数。何もしない。

cec.cpp173 行で定義されています。

参照元 main().

00174     {
00175     }


Flangerに対してWed Jul 25 11:10:16 2007に生成されました。  doxygen 1.5.2