cec.cpp

説明を見る。
00001 /** \file cec.cpp
00002  *  \brief コア・イベント管理ライブラリ
00003  *  \author アナログ・デバイセズ株式会社
00004  *
00005  * コア・イベント・ハンドラ管理用のファイルである。内部はスケルトンになっているので
00006  * 必要に応じてユーザーが改変して使う。関数ivg7()からivg14()まではユーザー定義の割り込み
00007  * ハンドラである。 \ref cecの説明を参照。 cec::init()はSIC_IARxを初期化し、すべての
00008  * 割り込みハンドラを登録する。SIC_IARxは必要に応じてユーザーが変更する。
00009  */
00010 /*
00011 * 共通インクルードファイル
00012 */
00013 #include <signal.h>
00014 #include <cdefBF53x.h>
00015 #include "cec.h"
00016 
00017 /*
00018 * アプリケーション固有のインクルードファイル
00019 */
00020 #include "afw.h"
00021 
00022 namespace cec{
00023 /** 未定義割り込みの処理
00024 *
00025 * 割り込みが発生したにもかかわらず規定の割り込み処理ルーチン
00026 * で処理しなかった場合には、このルーチンで受け止める。
00027 */
00028     void spuriousIRQ(void)
00029     {
00030         while(1)
00031             ;
00032     }
00033 
00034 /** IVG14イベントの処理
00035 *
00036 * BlackfinコアのIVG14イベントの処理を行う。通常、このイベントはソフトウェア・割り込みに割り当てる。イベントの処理方法については \ref cecを参照。
00037 */
00038     void ivg14( int sig )
00039     {
00040         spuriousIRQ();           // 未定義割り込みの処理
00041     }
00042 
00043 /** IVG13イベントの処理
00044 *
00045 * BlackfinコアのIVG13イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00046 */
00047     void ivg13( int sig )
00048     {
00049         spuriousIRQ();           // 未定義割り込みの処理
00050     }
00051 
00052 /** IVG12イベントの処理
00053 *
00054 * BlackfinコアのIVG12イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00055 */
00056     void ivg12( int sig )
00057     {
00058         spuriousIRQ();           // 未定義割り込みの処理
00059     }
00060 
00061 /** IVG11イベントの処理
00062 *
00063 * BlackfinコアのIVG11イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00064 */
00065     void ivg11( int sig )
00066     {
00067         spuriousIRQ();           // 未定義割り込みの処理
00068     }
00069 
00070 /** IVG10イベントの処理
00071 *
00072 * BlackfinコアのIVG10イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00073 */
00074     void ivg10( int sig )
00075     {
00076         spuriousIRQ();           // 未定義割り込みの処理
00077     }
00078 
00079 /** IVG9イベントの処理
00080 *
00081 * BlackfinコアのIVG9イベントの処理を行う。このイベントには、
00082 * オーディオ・フレームワークの割り込みが割り当てられているので
00083 * afw::ISR() を呼び出す。イベントの処理方法については \ref cecを参照。
00084 */
00085     void ivg9( int sig )
00086     {
00087         if ( afw::ISR() )       // オーディオ・フレームワーク割り込み
00088             return;             // 処理が行われたら即リターン
00089         spuriousIRQ();           // 未定義割り込みの処理
00090     }
00091     
00092 /** IVG8イベントの処理
00093 *
00094 * BlackfinコアのIVG8イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00095 */
00096     void ivg8( int sig )
00097     {
00098         spuriousIRQ();           // 未定義割り込みの処理
00099     }
00100 
00101 /** IVG7イベントの処理
00102 *
00103 * BlackfinコアのIVG7イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00104 */
00105     void ivg7( int sig )
00106     {
00107         spuriousIRQ();           // 未定義割り込みの処理
00108     }
00109 
00110 
00111 
00112 
00113     void init(void)
00114     {
00115             // 割込みの順位設定。必要に応じて各デバイスにIVG7..15を設定する。
00116             // コメント欄の[]内はデフォルト順位
00117             // ()内はDMAにデフォルトで割り当てられているデバイス
00118         *pSIC_IAR0 =  
00119                   P0_IVG(7)     //[7] PLL Wakeup
00120                 | P1_IVG(7)     //[7] DMA Error
00121                 | P2_IVG(7)     //[7] Peripheral Error
00122                 | P3_IVG(8)     //[8] RTC
00123                 | P4_IVG(8)     //[8] DMA0 (PPI)
00124                 | P5_IVG(9)     //[9] DMA3 (SPORT0 RX)
00125                 | P6_IVG(9)     //[9] DMA4 (SPORT0 TX)
00126                 | P7_IVG(9);    //[9] DMA5 (SPORT1 RX)
00127 
00128         *pSIC_IAR1 =  
00129                   P8_IVG(9)     //[9] DMA6 (SPORT1 RTX)
00130                 | P9_IVG(10)    //[10] TWI
00131                 | P10_IVG(10)   //[10] DMA7 (SPI)
00132                 | P11_IVG(10)   //[10] DMA8 (UART0 RX)
00133                 | P12_IVG(10)   //[10] DMA9 (UART0 TX)
00134                 | P13_IVG(10)   //[10] DMA10 (UART1 RX)
00135                 | P14_IVG(10)   //[10] DMA11 (UART1 TX)
00136                 | P15_IVG(11);  //[11] CAN RX
00137 
00138         *pSIC_IAR2 =  
00139                   P16_IVG(11)   //[11] CAN TX
00140                 | P17_IVG(11)   //[11] DMA1 (MAC RX), PORTH IRQ A
00141                 | P18_IVG(11)   //[11] DMA2 (MAC TX), PORTH IRQ B
00142                 | P19_IVG(12)   //[12] TIMER0
00143                 | P20_IVG(12)   //[12] TIMER1
00144                 | P21_IVG(12)   //[12] TIMER2
00145                 | P22_IVG(12)   //[12] TIMER3
00146                 | P23_IVG(12);  //[12] TIMER4
00147 
00148         *pSIC_IAR3 =  
00149                   P24_IVG(12)   //[12] TIMER5
00150                 | P25_IVG(12)   //[12] TIMER6
00151                 | P26_IVG(12)   //[12] TIMER7
00152                 | P27_IVG(12)   //[12] PORTF IRQ A, PORTG IRQ A
00153                 | P28_IVG(12)   //[12] PORTG IRQ B
00154                 | P29_IVG(13)   //[13] MDMA 0
00155                 | P30_IVG(13)   //[13] MDMA 1
00156                 | P31_IVG(13);  //[13] Watchdog, PORTF IRQ B
00157 
00158         interrupt( SIGIVG14, ivg14 );     // IVG14ハンドラの登録
00159         interrupt( SIGIVG13, ivg13 );     // IVG13ハンドラの登録
00160         interrupt( SIGIVG12, ivg12 );     // IVG12ハンドラの登録 
00161         interrupt( SIGIVG11, ivg11 );     // IVG11ハンドラの登録
00162         interrupt( SIGIVG10, ivg10 );     // IVG10ハンドラの登録 
00163         interrupt( SIGIVG9, ivg9 );     // IVG9ハンドラの登録
00164         interrupt( SIGIVG8, ivg8 );     // IVG8ハンドラの登録 
00165         interrupt( SIGIVG7, ivg7 );     // IVG7ハンドラの登録
00166     };
00167     
00168 
00169     void start(void)
00170     {
00171     }
00172 };

AudioFrameWorkに対してMon Apr 9 15:44:05 2007に生成されました。  doxygen 1.5.1-p1