OSDN Git Service

リポジトリのトップディレクトリの名前を変更
[uzume/uzume_bfin.git] / uzumeapp / kernel / config / blackfin / _common_bf592 / 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-BF592共用)
51  *
52  *  このインクルードファイルは,t_config.h のみからインクルードされる.
53  *  他のファイルから直接インクルードしてはならない.
54 */
55
56 /*
57  *  ターゲットシステムのハードウェア資源の定義
58  *
59  *  DEVICE_INTERRUPT_COUNTはSIC_IMASKのビット数
60  *  を与える。
61  *  ADSP-BF592のビット数は32なので、値は32である。
62  */
63
64 #define DEVICE_INTERRUPT_COUNT 32
65
66
67
68 /*
69  *  PLLクロック周波数計算マクロ
70  *
71  *  変更してはならない。パラメータはsys_config.hで与える。
72  */
73 #define PLLCLOCK (CLKIN*MSELVAL)
74 #define SYSCLOCK  (PLLCLOCK / SSELVAL)
75 #define CORECLOCK (PLLCLOCK / CSELVAL)
76
77
78
79 /*
80  *  TICの割込みハンドラのベクタ番号
81  */
82 #ifdef USE_TIC_CORE
83 #define INHNO_TIMER INHNO_CORE_TIMER
84 #else
85 #define INHNO_TIMER INHNO_GP_TIMER2
86 #endif
87
88
89 /*
90  *  微少時間待ちのための定義
91  *  sil_dly_nseの呼び出しオーバーヘッドとループボディーサイクルを
92  *  nSで表す。関数はcpu_support.asmに定義してある。
93  *  SIL_DLY_TIM1は24サイクル。60nS( 400MHz )
94  *  SIL_DLY_TIM2は12サイクル。30nS( 400MHz )
95  */
96
97
98 #define SIL_DLY_TIM1    (24*1000000000/CORECLOCK)
99 #define SIL_DLY_TIM2    (12*1000000000/CORECLOCK)
100
101 /*************************************************************************
102  * uart.c用構成マクロ
103  */
104
105 /*  シリアルの割込みハンドラのベクタ番号 */
106 #define INHNO_SIO0_TX   INHNO_UART0_TX
107 #define INHNO_SIO0_RX   INHNO_UART0_RX
108
109 /*
110  *  UARTレジスタの配置境界。ADSP-BF592の内蔵UARTは4バイト周期でレジスタが
111  *  並んでいるので、ここには4を指定する。
112  */
113 #define UART_BOUNDARY 4
114
115 /*  UARTレジスタにsil_xxb_iop()を使ってアクセスするときにはUART_IOP_ACCESSを 宣言する。*/
116 #define UART_IOP_ACCESS
117
118 /*  シリアルポートのアドレス。 */
119 #define UART0_ADDRESS 0xFFC00400    // 内蔵UART THRのアドレス。
120
121 /*  UARTのボーレートジェネレータに設定すべき値. */
122 #define UART0_DIVISOR   SYSCLOCK/16/UART0_BAUD_RATE
123
124 /*  内蔵UARTを使う場合は、UARTx_BLACKFIN_UCENを宣言してUCENを初期化しなければならない。*/
125 #define UART0_BLACKFIN_UCEN
126
127
128 /*
129  * uart.c用構成マクロ終わり
130  *************************************************************************/
131
132
133
134 /*
135  *  割り込みベクトル番号
136  *
137  *  この定義はコンフィグレーションファイルでDEF_INHの引数として使う
138  *  SIC_ISRにおけるビット番号である。
139  *
140  */
141 #define INHNO_PLL           0
142 #define INHNO_DMA_ERROR     1
143 #define INHNO_PPI_ERROR     2
144 #define INHNO_SPORT0_ERROR  3
145 #define INHNO_SPORT1_ERROR  4
146 #define INHNO_SPI0_ERROR    5
147 #define INHNO_SPI1_ERROR    6
148 #define INHNO_UART0_ERROR   7
149 #define INHNO_PPI           8
150 #define INHNO_SPORT0_RX     9
151 #define INHNO_SPORT0_TX     10
152 #define INHNO_SPORT1_RX     11
153 #define INHNO_SPORT1_TX     12
154 #define INHNO_SPI0          13
155 #define INHNO_SPI1          14
156 #define INHNO_UART0_RX      15
157 #define INHNO_UART0_TX      16
158 #define INHNO_PFA           17
159 #define INHNO_PFB           18
160 #define INHNO_GP_TIMER0     19
161 #define INHNO_GP_TIMER1     20
162 #define INHNO_GP_TIMER2     21
163 #define INHNO_PGA           22
164 #define INHNO_PGB           23
165 #define INHNO_TWI           24
166 #define INHNO_MEMORY_DMA0   29
167 #define INHNO_MEMORY_DMA1   30
168 #define INHNO_WDG           31
169
170 // SIC_ISRにない特殊な割り込み
171 #define INHNO_HW_ERROR      32
172 #define INHNO_CORE_TIMER    33
173 #define INHNO_RAISE         34
174
175
176 /*
177  *  SIC_ISRの割り込みのベクタ番号
178  *
179  *  この定義はena_int, dis_intの引数として使う。
180  */
181
182 #define INTNO_PLL           0
183 #define INTNO_DMA_ERROR     1
184 #define INTNO_PPI_ERROR     2
185 #define INTNO_SPORT0_ERROR  3
186 #define INTNO_SPORT1_ERROR  4
187 #define INTNO_SPI0_ERROR    5
188 #define INTNO_SPI1_ERROR    6
189 #define INTNO_UART0_ERROR   7
190 #define INTNO_PPI           8
191 #define INTNO_SPORT0_RX     9
192 #define INTNO_SPORT0_TX     10
193 #define INTNO_SPORT1_RX     11
194 #define INTNO_SPORT1_TX     12
195 #define INTNO_SPI0          13
196 #define INTNO_SPI1          14
197 #define INTNO_UART0_RX      15
198 #define INTNO_UART0_TX      16
199 #define INTNO_PFA           17
200 #define INTNO_PFB           18
201 #define INTNO_GP_TIMER0     19
202 #define INTNO_GP_TIMER1     20
203 #define INTNO_GP_TIMER2     21
204 #define INTNO_PGA           22
205 #define INTNO_PGB           23
206 #define INTNO_TWI           24
207 #define INTNO_MEMORY_DMA0   29
208 #define INTNO_MEMORY_DMA1   30
209 #define INTNO_WDG           31
210
211
212
213 #ifndef _MACRO_ONLY
214
215 /*
216 * SIC_IARxを解析して、イベント順位ごとに割り当てられている割り込み
217 * のビットマップを作る。SIC_IARxのフィールド値は優先順位-7なので
218 * その分補正する。
219 */
220 void make_priority_mask( void );
221
222 /*
223  *  ターゲットシステム依存の初期化
224  */
225 extern void sys_initialize(void);
226
227 /*
228  *  ターゲットシステムの終了
229  *
230  *  システムを終了する時に使う.ROMモニタ/GDB STUB呼出しで実現する.
231  */
232 extern void sys_exit(void);
233
234 /*
235  *  ターゲットシステムの文字出力
236  *
237  *  システムの低レベルの文字出力ルーチン.ROMモニタ/GDB STUB呼出しで実
238  *  現する.
239  */
240 extern void sys_putc(char c);
241
242 /*
243 * SIC_IARxを解析して、イベント順位ごとに割り当てられている割り込み
244 * のビットマップを作る。SIC_IARxのフィールド値は優先順位-7なので
245 * その分補正する。
246 */
247 void make_priority_mask( void );
248
249 /*
250  * 割り込みの許可、禁止
251  *
252  */
253 typedef unsigned int INTNO;
254 extern ER ena_int( INTNO intno );
255 extern ER dis_int( INTNO intno );
256
257 /*
258  * 割り込みマスクの操作
259  *
260  *
261  */
262 typedef unsigned int IMS;
263 extern ER chg_ims( IMS ims );
264 extern ER get_ims( IMS * p_ims );
265
266 /**
267  * スプリアス・イベント・ハンドラ
268  */
269 void spurious_exc_handler(VP p_excinf);
270 void spurious_int_handler();
271
272 /*
273  * 割り込みを起こしたデバイスを調べる
274 */
275 extern void device_dispatcher(  unsigned int priority, unsigned int imask );
276
277 #endif /* _MACRO_ONLY */
278 #endif /* _CHIP_CONFIG_H_ */