3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
9 * TOPPERS/JSP for Blackfin
11 * Copyright (C) 2004,2006,2009 by Takemasa Nakamura
12 * Copyright (C) 2004 by Ujinosuke
14 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
15 * によって公表されている GNU General Public License の Version 2 に記
16 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
19 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
22 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
24 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
29 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
30 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
31 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
33 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
36 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
38 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
39 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
45 #ifndef _CHIP_CONFIG_H_
46 #define _CHIP_CONFIG_H_
50 * ターゲットシステム依存モジュール(EZKIT-BF534,6,7用)
52 * このインクルードファイルは,t_config.h のみからインクルードされる.
53 * 他のファイルから直接インクルードしてはならない.
57 * ターゲットシステムのハードウェア資源の定義
59 * DEVICE_INTERRUPT_COUNTはSIC_IMASKのビット数
61 * ADSP-BF518のビット数は56なので、値は56である。
64 #define DEVICE_INTERRUPT_COUNT 56
71 #define PLLCLOCK (CLKIN*MSELVAL)
72 #define SYSCLOCK (PLLCLOCK / SSELVAL)
73 #define CORECLOCK (PLLCLOCK / CSELVAL)
81 #define INHNO_TIMER INHNO_CORE_TIMER
83 #define INHNO_TIMER INHNO_TIMER7
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 )
96 #define SIL_DLY_TIM1 (24*1000000000/CORECLOCK)
97 #define SIL_DLY_TIM2 (12*1000000000/CORECLOCK)
99 /*************************************************************************
103 /* シリアルの割込みハンドラのベクタ番号 */
104 #define INHNO_SIO0_TX INHNO_UART0_TX
105 #define INHNO_SIO0_RX INHNO_UART0_RX
106 #define INHNO_SIO1_TX INHNO_UART1_TX
107 #define INHNO_SIO1_RX INHNO_UART1_RX
110 * UARTレジスタの配置境界。ADSP-BF518の内蔵UARTは4バイト周期でレジスタが
111 * 並んでいるので、ここには4を指定する。
113 #define UART_BOUNDARY 4
115 /* UARTレジスタにsil_xxb_iop()を使ってアクセスするときにはUART_IOP_ACCESSを 宣言する。*/
116 #define UART_IOP_ACCESS
119 #define UART0_ADDRESS 0xFFC00400 // 内蔵UART0 THRのアドレス。
120 #define UART1_ADDRESS 0xFFC02000 // 内蔵UART0 THRのアドレス。
122 /* UARTのボーレートジェネレータに設定すべき値. */
123 #define UART0_DIVISOR SYSCLOCK/16/UART0_BAUD_RATE
124 #define UART1_DIVISOR SYSCLOCK/16/UART1_BAUD_RATE
126 /* 内蔵UARTを使う場合は、UARTx_BLACKFIN_UCENを宣言してUCENを初期化しなければならない。*/
127 #define UART0_BLACKFIN_UCEN
128 #define UART1_BLACKFIN_UCEN
133 *************************************************************************/
140 * この定義はコンフィグレーションファイルでDEF_INHの引数として使う
141 * SIC_ISRにおけるビット番号である。
145 /* Peripheral Masks For SIC_ISR0, SIC_IWR0, SIC_IMASK0 */
146 #define INHNO_PLL_WAKEUP 0 /* PLL Wakeup Interrupt */
147 #define INHNO_DMA_ERR0 1 /* Error Interrupt (DMA error 0 interrupt (generic)) */
148 #define INHNO_DMAR0 2 /* DMAR0 Block (DMAR0 block interrupt) */
149 #define INHNO_DMAR1 3 /* DMAR1 Block (DMAR1 block interrupt) */
150 #define INHNO_DMAR0_ERR 4 /* Error Interrupt (DMAR0 overflow error interrupt) */
151 #define INHNO_DMAR1_ERR 5 /* Error Interrupt (DMAR1 overflow error interrupt) */
152 #define INHNO_PPI_ERR 6 /* Error Interrupt (PPI error interrupt) */
153 #define INHNO_MAC_ERR 7 /* Error Interrupt (MAC status interrupt) */
154 #define INHNO_SPORT0_ERR 8 /* Error Interrupt (SPORT0 status interrupt) */
155 #define INHNO_SPORT1_ERR 9 /* Error Interrupt (SPORT1 status interrupt) */
156 #define INHNO_PTP_ERR 10 /* Error Interrupt (PTP error interrupt) */
158 #define INHNO_UART0_ERR 12 /* Error Interrupt (UART0 status interrupt) */
159 #define INHNO_UART1_ERR 13 /* Error Interrupt (UART1 status interrupt) */
160 #define INHNO_RTC 14 /* Real Time Clock Interrupt */
161 #define INHNO_PPI 15 /* DMA channel 0 (PPI/NFC) Interrupt */
162 #define INHNO_SPORT0_RX 16 /* DMA Channel 3 (SPORT0 RX) Interrupt */
163 #define INHNO_SPORT0_TX 17 /* DMA Channel 4 (SPORT0 TX) Interrupt */
164 #define INHNO_SPORT1_RX 18 /* DMA Channel 5 (SPORT1 RX) Interrupt */
165 #define INHNO_SPORT1_TX 19 /* DMA Channel 6 (SPORT1 TX) Interrupt */
166 #define INHNO_TWI 20 /* TWI Interrupt */
167 #define INHNO_SPI 21 /* DMA Channel 7 (SPI) Interrupt */
168 #define INHNO_UART0_RX 22 /* DMA Channel 8 (UART0 RX) Interrupt */
169 #define INHNO_UART0_TX 23 /* DMA Channel 9 (UART0 TX) Interrupt */
170 #define INHNO_UART1_RX 24 /* DMA Channel 10 (UART1 RX) Interrupt */
171 #define INHNO_UART1_TX 25 /* DMA Channel 11 (UART1 TX) Interrupt */
172 #define INHNO_OTP 26 /* OTP Interrupt */
173 #define INHNO_CNT 27 /* GP Counter Interrupt */
174 #define INHNO_ETHERNET_RX 28 /* DMA Channel 1 (EthernetRX/HOSTDP) Interrupt */
175 #define INHNO_PFA_PORTH 29 /* PF Port H Interrupt A */
176 #define INHNO_ETHERNET_TX 30 /* DMA Channel 2 (Ethernet TX/NFC) Interrupt */
177 #define INHNO_PFB_PORTH 31 /* PF Port H Interrupt B */
179 /* Peripheral Masks For SIC_ISR1, SIC_IWR1, SIC_IMASK1 */
180 #define INHNO_TIMER0 32 /* Timer 0 Interrupt */
181 #define INHNO_TIMER1 33 /* Timer 1 Interrupt */
182 #define INHNO_TIMER2 34 /* Timer 2 Interrupt */
183 #define INHNO_TIMER3 35 /* Timer 3 Interrupt */
184 #define INHNO_TIMER4 36 /* Timer 4 Interrupt */
185 #define INHNO_TIMER5 37 /* Timer 5 Interrupt */
186 #define INHNO_TIMER6 38 /* Timer 6 Interrupt */
187 #define INHNO_TIMER7 39 /* Timer 7 Interrupt */
188 #define INHNO_PFA_PORTG 40 /* PF Port G Interrupt A */
189 #define INHNO_PFB_PORTG 41 /* PF Port G Interrupt B */
190 #define INHNO_MDMA0_DST 42 /* DMA Channels 12 (MDMA0 Destination) TX Interrupt */
191 #define INHNO_MDMA0_SRC 42 /* DMA Channels 13 (MDMA0 Source) RX Interrupt */
192 #define INHNO_MDMA1_DST 43 /* DMA Channels 14 (MDMA1 Destination) TX Interrupt */
193 #define INHNO_MDMA1_SRC 43 /* DMA Channels 15 (MDMA1 Source) RX Interrupt */
194 #define INHNO_WDOG 44 /* Software Watchdog Timer Interrupt */
195 #define INHNO_PFA_PORTF 45 /* PF Port F Interrupt A */
196 #define INHNO_PFB_PORTF 46 /* PF Port F Interrupt B */
197 #define INHNO_SPI0_ERR 47 /* Error Interrupt (SPI0 status interrupt) */
198 #define INHNO_SPI1_ERR 48 /* Error Interrupt (SPI1 status interrupt) */
201 #define INHNO_RSI_INT0 51 /* USB EINT interrupt */
202 #define INHNO_RSI_INT1 52 /* USB INT0 interrupt */
203 #define INHNO_PWM_TRIPINT 53 /* USB INT1 interrupt */
204 #define INHNO_PWM_SYNCINT 54 /* USB INT1 interrupt */
205 #define INHNO_PTP_STATINT 55 /* USB DMAINT interrupt */
210 #define INHNO_HW_ERROR 56
211 #define INHNO_CORE_TIMER 57
212 #define INHNO_RAISE 58
218 * この定義はena_int, dis_intの引数として使う。
221 /* Peripheral Masks For SIC_ISR0, SIC_IWR0, SIC_IMASK0 */
222 #define INTNO_PLL_WAKEUP 0 /* PLL Wakeup Interrupt */
223 #define INTNO_DMA_ERR0 1 /* Error Interrupt (DMA error 0 interrupt (generic)) */
224 #define INTNO_DMAR0 2 /* DMAR0 Block (DMAR0 block interrupt) */
225 #define INTNO_DMAR1 3 /* DMAR1 Block (DMAR1 block interrupt) */
226 #define INTNO_DMAR0_ERR 4 /* Error Interrupt (DMAR0 overflow error interrupt) */
227 #define INTNO_DMAR1_ERR 5 /* Error Interrupt (DMAR1 overflow error interrupt) */
228 #define INTNO_PPI_ERR 6 /* Error Interrupt (PPI error interrupt) */
229 #define INTNO_MAC_ERR 7 /* Error Interrupt (MAC status interrupt) */
230 #define INTNO_SPORT0_ERR 8 /* Error Interrupt (SPORT0 status interrupt) */
231 #define INTNO_SPORT1_ERR 9 /* Error Interrupt (SPORT1 status interrupt) */
232 #define INTNO_PTP_ERR 10 /* Error Interrupt (PTP error interrupt) */
234 #define INTNO_UART0_ERR 12 /* Error Interrupt (UART0 status interrupt) */
235 #define INTNO_UART1_ERR 13 /* Error Interrupt (UART1 status interrupt) */
236 #define INTNO_RTC 14 /* Real Time Clock Interrupt */
237 #define INTNO_PPI 15 /* DMA channel 0 (PPI/NFC) Interrupt */
238 #define INTNO_SPORT0_RX 16 /* DMA Channel 3 (SPORT0 RX) Interrupt */
239 #define INTNO_SPORT0_TX 17 /* DMA Channel 4 (SPORT0 TX) Interrupt */
240 #define INTNO_SPORT1_RX 18 /* DMA Channel 5 (SPORT1 RX) Interrupt */
241 #define INTNO_SPORT1_TX 19 /* DMA Channel 6 (SPORT1 TX) Interrupt */
242 #define INTNO_TWI 20 /* TWI Interrupt */
243 #define INTNO_SPI 21 /* DMA Channel 7 (SPI) Interrupt */
244 #define INTNO_UART0_RX 22 /* DMA Channel 8 (UART0 RX) Interrupt */
245 #define INTNO_UART0_TX 23 /* DMA Channel 9 (UART0 TX) Interrupt */
246 #define INTNO_UART1_RX 24 /* DMA Channel 10 (UART1 RX) Interrupt */
247 #define INTNO_UART1_TX 25 /* DMA Channel 11 (UART1 TX) Interrupt */
248 #define INTNO_OTP 26 /* OTP Interrupt */
249 #define INTNO_CNT 27 /* GP Counter Interrupt */
250 #define INTNO_ETHERNET_RX 28 /* DMA Channel 1 (EthernetRX/HOSTDP) Interrupt */
251 #define INTNO_PFA_PORTH 29 /* PF Port H Interrupt A */
252 #define INTNO_ETHERNET_TX 30 /* DMA Channel 2 (Ethernet TX/NFC) Interrupt */
253 #define INTNO_PFB_PORTH 31 /* PF Port H Interrupt B */
255 /* Peripheral Masks For SIC_ISR1, SIC_IWR1, SIC_IMASK1 */
256 #define INTNO_TIMER0 32 /* Timer 0 Interrupt */
257 #define INTNO_TIMER1 33 /* Timer 1 Interrupt */
258 #define INTNO_TIMER2 34 /* Timer 2 Interrupt */
259 #define INTNO_TIMER3 35 /* Timer 3 Interrupt */
260 #define INTNO_TIMER4 36 /* Timer 4 Interrupt */
261 #define INTNO_TIMER5 37 /* Timer 5 Interrupt */
262 #define INTNO_TIMER6 38 /* Timer 6 Interrupt */
263 #define INTNO_TIMER7 39 /* Timer 7 Interrupt */
264 #define INTNO_PFA_PORTG 40 /* PF Port G Interrupt A */
265 #define INTNO_PFB_PORTG 41 /* PF Port G Interrupt B */
266 #define INTNO_MDMA0_DST 42 /* DMA Channels 12 (MDMA0 Destination) TX Interrupt */
267 #define INTNO_MDMA0_SRC 42 /* DMA Channels 13 (MDMA0 Source) RX Interrupt */
268 #define INTNO_MDMA1_DST 43 /* DMA Channels 14 (MDMA1 Destination) TX Interrupt */
269 #define INTNO_MDMA1_SRC 43 /* DMA Channels 15 (MDMA1 Source) RX Interrupt */
270 #define INTNO_WDOG 44 /* Software Watchdog Timer Interrupt */
271 #define INTNO_PFA_PORTF 45 /* PF Port F Interrupt A */
272 #define INTNO_PFB_PORTF 46 /* PF Port F Interrupt B */
273 #define INTNO_SPI0_ERR 47 /* Error Interrupt (SPI0 status interrupt) */
274 #define INTNO_SPI1_ERR 48 /* Error Interrupt (SPI1 status interrupt) */
277 #define INTNO_RSI_INT0 51 /* USB EINT interrupt */
278 #define INTNO_RSI_INT1 52 /* USB INT0 interrupt */
279 #define INTNO_PWM_TRIPINT 53 /* USB INT1 interrupt */
280 #define INTNO_PWM_SYNCINT 54 /* USB INT1 interrupt */
281 #define INTNO_PTP_STATINT 55 /* USB DMAINT interrupt */
288 * SIC_IARxを解析して、イベント順位ごとに割り当てられている割り込み
289 * のビットマップを作る。SIC_IARxのフィールド値は優先順位-7なので
292 void make_priority_mask( void );
297 extern void sys_initialize(void);
302 * システムを終了する時に使う.ROMモニタ/GDB STUB呼出しで実現する.
304 extern void sys_exit(void);
309 * システムの低レベルの文字出力ルーチン.ROMモニタ/GDB STUB呼出しで実
312 extern void sys_putc(char c);
315 * SIC_IARxを解析して、イベント順位ごとに割り当てられている割り込み
316 * のビットマップを作る。SIC_IARxのフィールド値は優先順位-7なので
319 void make_priority_mask( void );
325 typedef unsigned int INTNO;
326 extern ER ena_int( INTNO intno );
327 extern ER dis_int( INTNO intno );
334 typedef unsigned long long int IMS;
335 extern ER chg_ims( IMS ims );
336 extern ER get_ims( IMS * p_ims );
341 extern void device_dispatcher( unsigned int priority, unsigned int imask );
346 void spurious_exc_handler(VP p_excinf);
347 void spurious_int_handler();
349 #endif /* _MACRO_ONLY */
350 #endif /* _SYS_CONFIG_H_ */