- メインページ
- ネームスペース
- ファイル

- ネームスペース一覧
- ネームスペースメンバ

# ネームスペース cec

## 説明

コア・イベント管理

アプリケーション・プログラム用のコア・イベント管理名前空間。 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内部のイベントハンドラをシステムに登録する

cec.cpp の 117 行で定義されています。

参照先 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を参照。

cec.cpp の 76 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

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

void cec::ivg11 | ( | int | sig | ) |

IVG11イベントの処理

BlackfinコアのIVG11イベントの処理を行う。イベントの処理方法については cecを参照。

cec.cpp の 67 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

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

void cec::ivg12 | ( | int | sig | ) |

IVG12イベントの処理

BlackfinコアのIVG12イベントの処理を行う。イベントの処理方法については cecを参照。

cec.cpp の 58 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

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

void cec::ivg13 | ( | int | sig | ) |

IVG13イベントの処理

BlackfinコアのIVG13イベントの処理を行う。イベントの処理方法については cecを参照。

cec.cpp の 49 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

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

void cec::ivg14 | ( | int | sig | ) |

IVG14イベントの処理

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

cec.cpp の 40 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

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

void cec::ivg7 | ( | int | sig | ) |

IVG7イベントの処理

BlackfinコアのIVG7イベントの処理を行う。イベントの処理方法については cecを参照。

cec.cpp の 111 行で定義されています。

参照先 spuriousIRQ().

参照元 init().

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

void cec::ivg8 | ( | int | sig | ) |

IVG8イベントの処理

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

cec.cpp の 100 行で定義されています。

参照先 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を参照。

cec.cpp の 87 行で定義されています。

参照先 afw::ISR()・spuriousIRQ().

参照元 init().

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

void cec::spuriousIRQ | ( | void |  | ) |

未定義割り込みの処理

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

cec.cpp の 30 行で定義されています。

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

    00031     {
    00032         while(1)
    00033             ;
    00034     }

void cec::start | ( | void |  | ) |

処理の開始

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

cec.cpp の 172 行で定義されています。

参照元 main().

    00173     {
    00174     }