cec.cpp

説明を見る。
00001 /** \file cec.cpp
00002  *  \brief コア・イベント管理ライブラリ
00003  *  \author アナログ・デバイセズ株式会社
00004  *
00005  * コア・イベント・ハンドラ管理用のファイルである。内部はスケルトンになっているので
00006  * 必要に応じてユーザーが改変して使う。関数ivg7()からivg14()まではユーザー定義の割り込み
00007  * ハンドラである。 cec::ivg9()の説明を参照。 cec::init()はSIC_IARxを初期化し、すべての
00008  * 割り込みハンドラを登録する。SIC_IARxは必要に応じてユーザーが変更する。イベントの処理方法については \ref cecを参照。
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 #include "twi.h"
00022 
00023 namespace cec{
00024 
00025 /** 未定義割り込みの処理
00026 *
00027 * 割り込みが発生したにもかかわらず規定の割り込み処理ルーチン
00028 * で処理しなかった場合には、このルーチンで受け止める。
00029 */
00030     void spuriousIRQ(void)
00031     {
00032         while(1)
00033             ;
00034     }
00035 
00036 /** IVG14イベントの処理
00037 *
00038 * BlackfinコアのIVG14イベントの処理を行う。通常、このイベントはソフトウェア・割り込みに割り当てる。イベントの処理方法については \ref cecを参照。
00039 */
00040     void ivg14( int sig )
00041     {
00042         spuriousIRQ();           // 未定義割り込みの処理
00043     }
00044 
00045 /** IVG13イベントの処理
00046 *
00047 * BlackfinコアのIVG13イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00048 */
00049     void ivg13( int sig )
00050     {
00051         spuriousIRQ();           // 未定義割り込みの処理
00052     }
00053 
00054 /** IVG12イベントの処理
00055 *
00056 * BlackfinコアのIVG12イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00057 */
00058     void ivg12( int sig )
00059     {
00060         spuriousIRQ();           // 未定義割り込みの処理
00061     }
00062 
00063 /** IVG11イベントの処理
00064 *
00065 * BlackfinコアのIVG11イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00066 */
00067     void ivg11( int sig )
00068     {
00069         spuriousIRQ();           // 未定義割り込みの処理
00070     }
00071 
00072 /** IVG10イベントの処理
00073 *
00074 * BlackfinコアのIVG10イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00075 */
00076     void ivg10( int sig )
00077     {
00078         spuriousIRQ();           // 未定義割り込みの処理
00079     }
00080 
00081 /** IVG9イベントの処理
00082 *
00083 * BlackfinコアのIVG9イベントの処理を行う。このイベントには、
00084 * オーディオ・フレームワークの割り込みが割り当てられているので
00085 * afw::ISR() を呼び出す。イベントの処理方法については \ref cecを参照。
00086 */
00087     void ivg9( int sig )
00088     {
00089         if ( afw::ISR() )       // オーディオ・フレームワーク割り込み
00090             return;             // 処理が行われたら即リターン
00091         spuriousIRQ();           // 未定義割り込みの処理
00092     }
00093     
00094 /** IVG8イベントの処理
00095 *
00096 * BlackfinコアのIVG8イベントの処理を行う。このイベントには、
00097 * 初期化時にTWIの割り込みを割り当て直している。
00098 * twi::ISR() を呼び出す。イベントの処理方法については \ref cecを参照。
00099 */
00100     void ivg8( int sig )
00101     {
00102         if ( twi::ISR() )                   // TWI割り込み
00103             return;                         // 処理が行われたら即リターン
00104         spuriousIRQ();           // 未定義割り込みの処理
00105     }
00106 
00107 /** IVG7イベントの処理
00108 *
00109 * BlackfinコアのIVG7イベントの処理を行う。イベントの処理方法については \ref cecを参照。
00110 */
00111     void ivg7( int sig )
00112     {
00113         spuriousIRQ();           // 未定義割り込みの処理
00114     }
00115 
00116 
00117     void init(void)
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     };
00171 
00172     void start(void)
00173     {
00174     }
00175 };
00176 
00177 

AudioFrameWorkに対してMon Apr 9 16:33:24 2007に生成されました。  doxygen 1.5.1-p1