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 

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