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

- ファイル一覧
- ファイルメンバ

# cec.cpp

説明を見る。

    00001 /** \file cec.cpp
    00002  *  \brief Core Event Controller制御プログラム
    00003  *
    00004  * CECが認識するコア・イベントを処理するプログラム。
    00005  * コアイベントの順位にあわせてivg7からivg14までのハンドラを
    00006  * 用意している。ハンドラの内部はユーザーが必要に応じて埋める。
    00007  * 詳しくは \ref cec を参照。
    00008  *
    00009  *
    00010  */
    00011 /*
    00012 * 共通インクルードファイル
    00013 */
    00014 #include <signal.h>
    00015 #include <cdefBF53x.h>
    00016 #include "cec.h"
    00017
    00018 /*
    00019 * アプリケーション固有のインクルードファイル
    00020 */
    00021 #include "afw.h"
    00022 #include "twi.h"
    00023
    00024 namespace cec{
    00025
    00026 /** 未定義割り込みの処理
    00027 *
    00028 * 割り込みが発生したにもかかわらず規定の割り込み処理ルーチン
    00029 * で処理しなかった場合には、このルーチンで受け止める。
    00030 */
    00031     void spuriousIRQ(void)
    00032     {
    00033         while(1)
    00034             ;
    00035     }
    00036
    00037 /** IVG14イベントの処理
    00038 *
    00039 * BlackfinコアのIVG14イベントの処理を行う。通常、このイベントはソフトウェア・割り込みに割り当てる。
    00040 */
    00041     void ivg14( int sig )
    00042     {
    00043         spuriousIRQ();           // 未定義割り込みの処理
    00044     }
    00045
    00046 /** IVG13イベントの処理
    00047 *
    00048 * BlackfinコアのIVG13イベントの処理を行う。
    00049 */
    00050     void ivg13( int sig )
    00051     {
    00052         spuriousIRQ();           // 未定義割り込みの処理
    00053     }
    00054
    00055 /** IVG12イベントの処理
    00056 *
    00057 * BlackfinコアのIVG12イベントの処理を行う。
    00058 */
    00059     void ivg12( int sig )
    00060     {
    00061         spuriousIRQ();           // 未定義割り込みの処理
    00062     }
    00063
    00064 /** IVG11イベントの処理
    00065 *
    00066 * BlackfinコアのIVG11イベントの処理を行う。
    00067 */
    00068     void ivg11( int sig )
    00069     {
    00070         spuriousIRQ();           // 未定義割り込みの処理
    00071     }
    00072
    00073 /** IVG10イベントの処理
    00074 *
    00075 * BlackfinコアのIVG10イベントの処理を行う。
    00076 */
    00077     void ivg10( int sig )
    00078     {
    00079         spuriousIRQ();           // 未定義割り込みの処理
    00080     }
    00081
    00082 /** IVG9イベントの処理
    00083 *
    00084 * BlackfinコアのIVG9イベントの処理を行う。このイベントには、
    00085 * オーディオ・フレームワークの割り込みが割り当てられているので
    00086 * afw::ISR() を呼び出す。
    00087 */
    00088     void ivg9( int sig )
    00089     {
    00090         if ( afw::ISR() )       // オーディオ・フレームワーク割り込み
    00091             return;             // 処理が行われたら即リターン
    00092         spuriousIRQ();           // 未定義割り込みの処理
    00093     }
    00094
    00095 /** IVG8イベントの処理
    00096 *
    00097 * BlackfinコアのIVG8イベントの処理を行う。このイベントには、
    00098 * 初期化時にTWIの割り込みを割り当て直している。
    00099 * twi::ISR() を呼び出す。
    00100 */
    00101     void ivg8( int sig )
    00102     {
    00103         if ( twi::ISR() )                   // TWI割り込み
    00104             return;                         // 処理が行われたら即リターン
    00105         spuriousIRQ();           // 未定義割り込みの処理
    00106     }
    00107
    00108 /** IVG7イベントの処理
    00109 *
    00110 * BlackfinコアのIVG7イベントの処理を行う。
    00111 */
    00112     void ivg7( int sig )
    00113     {
    00114         spuriousIRQ();           // 未定義割り込みの処理
    00115     }
    00116
    00117
    00118     void init(void)
    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     };
    00172
    00173     void start(void)
    00174     {
    00175     }
    00176 };
    00177
    00178