OSDN Git Service

Sメーター周りを修正
[trx-305dsp/dsp.git] / hirado / kernel / config / blackfin / _common_bf533 / chip_config.h
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  *
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *
9  *  TOPPERS/JSP for Blackfin
10  *
11  *  Copyright (C) 2004,2006,2006 by Takemasa Nakamura
12  *  Copyright (C) 2004 by Ujinosuke
13  *
14  *  上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
15  *  によって公表されている GNU General Public License の Version 2 に記
16  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17  *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
18  *  利用と呼ぶ)することを無償で許諾する.
19  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21  *      スコード中に含まれていること.
22  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
24  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
25  *      の無保証規定を掲載すること.
26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
28  *      と.
29  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
30  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
31  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
32  *        報告すること.
33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
35  *
36  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
38  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
39  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
40  *
41  *
42  */
43
44
45 #ifndef _CHIP_CONFIG_H_
46 #define _CHIP_CONFIG_H_
47
48
49 /*
50  *  ターゲットシステム依存モジュール(ADSP-BF531/2/3共用)
51  *
52  *  このインクルードファイルは,t_config.h のみからインクルードされる.
53  *  他のファイルから直接インクルードしてはならない.
54 */
55
56 /*
57  *  ターゲットシステムのハードウェア資源の定義
58  *
59  *  DEVICE_INTERRUPT_COUNTはSIC_IMASKのビット数
60  *  を与える。
61  *  ADSP-BF533のビット数は24なので、値は24である。
62  */
63
64 #define DEVICE_INTERRUPT_COUNT 24
65
66
67
68 /*
69  *  PLLクロック周波数
70  */
71 #define PLLCLOCK (CLKIN*MSELVAL)
72 #define SYSCLOCK  (PLLCLOCK / SSELVAL)
73 #define CORECLOCK (PLLCLOCK / CSELVAL)
74
75
76
77 /*
78  *  TICの割込みハンドラのベクタ番号
79  */
80 #ifdef USE_TIC_CORE
81 #define INHNO_TIMER INHNO_CORE_TIMER
82 #else
83 #define INHNO_TIMER INHNO_GP_TIMER2
84 #endif
85
86
87 /*
88  *  微少時間待ちのための定義
89  *  sil_dly_nseの呼び出しオーバーヘッドとループボディーサイクルを
90  *  nSで表す。関数はcpu_support.asmに定義してある。
91  *  SIL_DLY_TIM1は24サイクル。32nS( 750MHz ), 40nS( 600MHz )
92  *  SIL_DLY_TIM2は12サイクル。16nS( 750MHz ), 20nS( 600MHz )
93  */
94
95
96 #define SIL_DLY_TIM1    (24*1000000000/CORECLOCK)
97 #define SIL_DLY_TIM2    (12*1000000000/CORECLOCK)
98
99 /*************************************************************************
100  * uart.c用構成マクロ
101  */
102
103 /*  シリアルの割込みハンドラのベクタ番号 */
104 #define INHNO_SIO0_TX   INHNO_UART_TX
105 #define INHNO_SIO0_RX   INHNO_UART_RX
106
107 /*
108  *  UARTレジスタの配置境界。ADSP-BF533の内蔵UARTは4バイト周期でレジスタが
109  *  並んでいるので、ここには4を指定する。
110  */
111 #define UART_BOUNDARY 4
112
113 /*  UARTレジスタにsil_xxb_iop()を使ってアクセスするときにはUART_IOP_ACCESSを 宣言する。*/
114 #define UART_IOP_ACCESS
115
116 /*  シリアルポートのアドレス。 */
117 #define UART0_ADDRESS 0xFFC00400    // 内蔵UART THRのアドレス。
118
119 /*  UARTのボーレートジェネレータに設定すべき値. */
120 #define UART0_DIVISOR   SYSCLOCK/16/UART0_BAUD_RATE
121
122 /*  内蔵UARTを使う場合は、UARTx_BLACKFIN_UCENを宣言してUCENを初期化しなければならない。*/
123 #define UART0_BLACKFIN_UCEN
124
125
126 /*
127  * uart.c用構成マクロ終わり
128  *************************************************************************/
129
130
131
132 /*
133  *  割り込みベクトル番号
134  *
135  *  この定義はコンフィグレーションファイルでDEF_INHの引数として使う
136  *  SIC_ISRにおけるビット番号である。
137  *
138  */
139 #define INHNO_PLL           0
140 #define INHNO_DMA_ERROR     1
141 #define INHNO_PPI_ERROR     2
142 #define INHNO_SPORT0_ERROR  3
143 #define INHNO_SPORT2_ERROR  4
144 #define INHNO_SPI_ERROR     5
145 #define INHNO_UART_ERROR    6
146 #define INHNO_RTC           7
147 #define INHNO_PPI           8
148 #define INHNO_SPORT0_RX     9
149 #define INHNO_SPORT0_TX     10
150 #define INHNO_SPORT1_RX     11
151 #define INHNO_SPORT1_TX     12
152 #define INHNO_SPI           13
153 #define INHNO_UART_RX       14
154 #define INHNO_UART_TX       15
155 #define INHNO_GP_TIMER0     16
156 #define INHNO_GP_TIMER1     17
157 #define INHNO_GP_TIMER2     18
158 #define INHNO_PFA           19
159 #define INHNO_PFB           20
160 #define INHNO_MEMORY_DMA0   21
161 #define INHNO_MEMORY_DMA1   22
162 #define INHNO_WDG           23
163
164 // SIC_ISRにない特殊な割り込み
165 #define INHNO_HW_ERROR      24
166 #define INHNO_CORE_TIMER        25
167 #define INHNO_RAISE         26
168
169
170 /*
171  *  SIC_ISRの割り込みのベクタ番号
172  *
173  *  この定義はena_int, dis_intの引数として使う。
174  */
175
176 #define INTNO_PLL           0
177 #define INTNO_DMA_ERROR     1
178 #define INTNO_PPI_ERROR     2
179 #define INTNO_SPORT0_ERROR  3
180 #define INTNO_SPORT2_ERROR  4
181 #define INTNO_SPI_ERROR     5
182 #define INTNO_UART_ERROR    6
183 #define INTNO_RTC           7
184 #define INTNO_PPI           8
185 #define INTNO_SPORT0_RX     9
186 #define INTNO_SPORT0_TX     10
187 #define INTNO_SPORT1_RX     11
188 #define INTNO_SPORT1_TX     12
189 #define INTNO_SPI           13
190 #define INTNO_UART_RX       14
191 #define INTNO_UART_TX       15
192 #define INTNO_GP_TIMER0     16
193 #define INTNO_GP_TIMER1     17
194 #define INTNO_GP_TIMER2     18
195 #define INTNO_PFA           19
196 #define INTNO_PFB           20
197 #define INTNO_MEMORY_DMA0   21
198 #define INTNO_MEMORY_DMA1   22
199 #define INTNO_WDG           23
200
201
202
203 #ifndef _MACRO_ONLY
204
205 /*
206 * SIC_IARxを解析して、イベント順位ごとに割り当てられている割り込み
207 * のビットマップを作る。SIC_IARxのフィールド値は優先順位-7なので
208 * その分補正する。
209 */
210 void make_priority_mask( void );
211
212 /*
213  *  ターゲットシステム依存の初期化
214  */
215 extern void sys_initialize(void);
216
217 /*
218  *  ターゲットシステムの終了
219  *
220  *  システムを終了する時に使う.ROMモニタ/GDB STUB呼出しで実現する.
221  */
222 extern void sys_exit(void);
223
224 /*
225  *  ターゲットシステムの文字出力
226  *
227  *  システムの低レベルの文字出力ルーチン.ROMモニタ/GDB STUB呼出しで実
228  *  現する.
229  */
230 extern void sys_putc(char c);
231
232 /*
233 * SIC_IARxを解析して、イベント順位ごとに割り当てられている割り込み
234 * のビットマップを作る。SIC_IARxのフィールド値は優先順位-7なので
235 * その分補正する。
236 */
237 void make_priority_mask( void );
238
239 /*
240  * 割り込みの許可、禁止
241  *
242  */
243 typedef unsigned int INTNO;
244 extern ER ena_int( INTNO intno );
245 extern ER dis_int( INTNO intno );
246
247 /*
248  * 割り込みマスクの操作
249  *
250  *
251  */
252 typedef unsigned int IMS;
253 extern ER chg_ims( IMS ims );
254 extern ER get_ims( IMS * p_ims );
255
256 /**
257  * スプリアス・イベント・ハンドラ
258  */
259 void spurious_exc_handler(VP p_excinf);
260 void spurious_int_handler();
261
262 /*
263  * 割り込みを起こしたデバイスを調べる
264 */
265 extern void device_dispatcher(  unsigned int priority, unsigned int imask );
266
267 #endif /* _MACRO_ONLY */
268 #endif /* _CHIP_CONFIG_H_ */