source: EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/rza1.h@ 270

Last change on this file since 270 was 270, checked in by coas-nagasima, 7 years ago

mruby版ECNLプロトタイピング・ツールを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr
File size: 11.3 KB
RevLine 
[270]1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
6 * Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 * 上記著作権者
9は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
11 * 変・再é…
12å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
13 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
14 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
15 * スコード中に含まれていること.
16 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
17 * 用できる形で再é…
18å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
19å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
20 * 者
21マニュアルなど)に,上記の著作権表示,この利用条件および下記
22 * の無保証規定を掲載すること.
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24 * 用できない形で再é…
25å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
26 * と.
27 * (a) 再é…
28å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
29マニュアルなど)に,上記の著
30 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
31 * (b) 再é…
32å¸ƒã®å½¢æ…
33‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
34 * 報告すること.
35 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
36 * 害からも,上記著作権者
37およびTOPPERSプロジェクトをå…
38è²¬ã™ã‚‹ã“と.
39 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
40 * 由に基づく請求からも,上記著作権者
41およびTOPPERSプロジェクトを
42 * å…
43è²¬ã™ã‚‹ã“と.
44 *
45 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
46お
47 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
48 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
49 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
50 * の責任を負わない.
51 *
52 * $Id: rza1.h 270 2017-02-09 04:03:47Z coas-nagasima $
53 */
54
55/*
56 * RZ/A1のハードウェア資源の定義
57 */
58
59#ifndef TOPPERS_RZA1_H
60#define TOPPERS_RZA1_H
61
62#include <sil.h>
63
64/*
65 * 型キャストを行うマクロの定義
66 */
67#ifndef CAST
68#define CAST(type, val) ((type)(val))
69#endif /* CAST */
70
71/*
72 * メモリマップの定義(MMUに設定するために必
73要)
74 */
75#define SPI_ADDR 0x18000000 /* シリアルフラッシュメモリ */
76#define SPI_SIZE 0x08000000 /* 128MB */
77
78#define SRAM_ADDR 0x20000000 /* 内
79蔵RAM */
80#ifdef TOPPERS_RZA1H
81#define SRAM_SIZE 0x00a00000 /* 10MB */
82#else /* TOPPERS_RZA1H */
83#define SRAM_SIZE 0x00300000 /* 3MB */
84#endif /* TOPPERS_RZA1H */
85
86#define IO1_ADDR 0x3fe00000 /* I/O領域(予約領域を含む)*/
87#define IO1_SIZE 0x00200000 /* 2MB */
88#define IO2_ADDR 0xe8000000 /* I/O領域(予約領域を含む)*/
89#define IO2_SIZE 0x18000000 /* 384MB */
90
91/*
92 * 各クロック周波数の定義
93 */
94#define OSTM_CLK RZA1_CLK_P0
95#define SCIF_CLK RZA1_CLK_P1
96
97/*
98 * MPCore Private Memory Regionのå…
99ˆé ­ç•ªåœ°
100 */
101#define MPCORE_PMR_BASE 0xf0000000
102
103/*
104 * GIC依存部を使用するための定義
105 */
106#ifndef GIC_TNUM_INTNO
107#ifdef TOPPERS_RZA1H
108#define GIC_TNUM_INTNO UINT_C(587)
109#else /* TOPPERS_RZA1H */
110#define GIC_TNUM_INTNO UINT_C(538)
111#endif /* TOPPERS_RZA1H */
112#endif /* GIC_TNUM_INT */
113
114/*
115 * 割込みコントローラのベースアドレスとレジスタ(RZ/A1固有のもの)
116 */
117#define GICC_BASE 0xe8202000
118#define GICD_BASE 0xe8201000
119
120#define RZA1_ICR0 CAST(uint16_t *, 0xfcfef800)
121#define RZA1_ICR1 CAST(uint16_t *, 0xfcfef802)
122#define RZA1_IRQRR CAST(uint16_t *, 0xfcfef804)
123
124/*
125 * OSタイマのベースアドレス
126 */
127#define OSTM0_BASE 0xfcfec000
128#define OSTM1_BASE 0xfcfec400
129
130/*
131 * L2キャッシュコントローラ(PL310)のベースアドレス
132 */
133#define PL310_BASE 0x3ffff000
134
135/*
136 * クロックパルスジェネレータのベースアドレスとレジスタ
137 */
138#define RZA1_CPG_BASE 0xfcfe0000
139#define RZA1_FRQCR CAST(uint16_t *, RZA1_CPG_BASE + 0x010)
140#define RZA1_FRQCR2 CAST(uint16_t *, RZA1_CPG_BASE + 0x014)
141
142/*
143 * バスステートコントローラのベースアドレスとレジスタ
144 */
145#define RZA1_BSC_BASE 0x3FFFC000
146#define RZA1_CMNCR CAST(uint32_t *, RZA1_BSC_BASE)
147#define RZA1_CS0BCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0004)
148#define RZA1_CS1BCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0008)
149#define RZA1_CS2BCR CAST(uint32_t *, RZA1_BSC_BASE + 0x000C)
150#define RZA1_CS3BCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0010)
151#define RZA1_CS4BCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0014)
152#define RZA1_CS5BCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0018)
153#define RZA1_CS0WCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0028)
154#define RZA1_CS1WCR CAST(uint32_t *, RZA1_BSC_BASE + 0x002C)
155#define RZA1_CS2WCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0030)
156#define RZA1_CS3WCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0034)
157#define RZA1_CS4WCR CAST(uint32_t *, RZA1_BSC_BASE + 0x0038)
158#define RZA1_CS5WCR CAST(uint32_t *, RZA1_BSC_BASE + 0x003C)
159#define RZA1_SDCR CAST(uint32_t *, RZA1_BSC_BASE + 0x004C)
160#define RZA1_RTCSR CAST(uint32_t *, RZA1_BSC_BASE + 0x0050)
161#define RZA1_RTCNT CAST(uint32_t *, RZA1_BSC_BASE + 0x0054)
162#define RZA1_RTCOR CAST(uint32_t *, RZA1_BSC_BASE + 0x0058)
163
164/*
165 * シリアルコミュニケーションインタフェースのベースアドレス
166 */
167#define SCIF0_BASE 0xe8007000
168#define SCIF1_BASE 0xe8007800
169#define SCIF2_BASE 0xe8008000
170#define SCIF3_BASE 0xe8008800
171#define SCIF4_BASE 0xe8009000
172#ifdef TOPPERS_RZA1H
173#define SCIF5_BASE 0xe8009800
174#define SCIF6_BASE 0xe800a000
175#define SCIF7_BASE 0xe800a800
176#endif /* TOPPERS_RZA1H */
177
178/*
179 * 低消費電力モード関連のベースアドレスとレジスタ
180 */
181#define RZA1_LOWPWR_BASE 0xfcfe0000
182#define RZA1_STBCR1 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x020)
183#define RZA1_STBCR2 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x024)
184#define RZA1_STBCR3 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x420)
185#define RZA1_STBCR4 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x424)
186#define RZA1_STBCR5 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x428)
187#define RZA1_STBCR6 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x42C)
188#define RZA1_STBCR7 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x430)
189#define RZA1_STBCR8 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x434)
190#define RZA1_STBCR9 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x438)
191#define RZA1_STBCR10 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x43C)
192#define RZA1_STBCR11 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x440)
193#define RZA1_STBCR12 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x444)
194#define RZA1_STBCR13 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x470)
195#define RZA1_SYSCR1 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x400)
196#define RZA1_SYSCR2 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x404)
197#define RZA1_SYSCR3 CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x408)
198#define RZA1_CPUSTS CAST(uint8_t *, RZA1_LOWPWR_BASE + 0x018)
199
200/*
201 * 汎用å…
202¥å‡ºåŠ›ãƒãƒ¼ãƒˆã®ãƒ™ãƒ¼ã‚¹ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ãƒ¬ã‚¸ã‚¹ã‚¿
203 */
204#define RZA1_PORT_BASE 0xfcfe3000
205#define RZA1_PORT_P(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x0000 + (n)*4))
206#define RZA1_PORT_PSR(n) CAST(uint32_t *, (RZA1_PORT_BASE + 0x0100 + (n)*4))
207#define RZA1_PORT_PPR(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x0200 + (n)*4))
208#define RZA1_PORT_PM(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x0300 + (n)*4))
209#define RZA1_PORT_PMC(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x0400 + (n)*4))
210#define RZA1_PORT_PFC(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x0500 + (n)*4))
211#define RZA1_PORT_PFCE(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x0600 + (n)*4))
212#define RZA1_PORT_PFCAE(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x0a00 + (n)*4))
213#define RZA1_PORT_PIBC(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x4000 + (n)*4))
214#define RZA1_PORT_PBDC(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x4100 + (n)*4))
215#define RZA1_PORT_PIPC(n) CAST(uint16_t *, (RZA1_PORT_BASE + 0x4200 + (n)*4))
216
217/*
218 * 割込み番号
219 */
220#define INTNO_IRQ0 32 /* IRQ0 */
221#define INTNO_IRQ1 33 /* IRQ1 */
222#define INTNO_IRQ2 34 /* IRQ2 */
223#define INTNO_IRQ3 35 /* IRQ3 */
224#define INTNO_IRQ4 36 /* IRQ4 */
225#define INTNO_IRQ5 37 /* IRQ5 */
226#define INTNO_IRQ6 38 /* IRQ6 */
227#define INTNO_IRQ7 39 /* IRQ7 */
228#define INTNO_OSTM0 134 /* OSタイマ0 */
229#define INTNO_OSTM1 135 /* OSタイマ1 */
230#define INTNO_SCIF0_BRI 221 /* SCIF0 ブレーク割込み */
231#define INTNO_SCIF0_ERI 222 /* SCIF0 エラー割込み */
232#define INTNO_SCIF0_RXI 223 /* SCIF0 受信割込み */
233#define INTNO_SCIF0_TXI 224 /* SCIF0 送信割込み */
234#define INTNO_SCIF1_BRI 225 /* SCIF1 ブレーク割込み */
235#define INTNO_SCIF1_ERI 226 /* SCIF1 エラー割込み */
236#define INTNO_SCIF1_RXI 227 /* SCIF1 受信割込み */
237#define INTNO_SCIF1_TXI 228 /* SCIF1 送信割込み */
238#define INTNO_SCIF2_BRI 229 /* SCIF2 ブレーク割込み */
239#define INTNO_SCIF2_ERI 230 /* SCIF2 エラー割込み */
240#define INTNO_SCIF2_RXI 231 /* SCIF2 受信割込み */
241#define INTNO_SCIF2_TXI 232 /* SCIF2 送信割込み */
242#define INTNO_SCIF3_BRI 233 /* SCIF3 ブレーク割込み */
243#define INTNO_SCIF3_ERI 234 /* SCIF3 エラー割込み */
244#define INTNO_SCIF3_RXI 235 /* SCIF3 受信割込み */
245#define INTNO_SCIF3_TXI 236 /* SCIF3 送信割込み */
246#define INTNO_SCIF4_BRI 237 /* SCIF4 ブレーク割込み */
247#define INTNO_SCIF4_ERI 238 /* SCIF4 エラー割込み */
248#define INTNO_SCIF4_RXI 239 /* SCIF4 受信割込み */
249#define INTNO_SCIF4_TXI 240 /* SCIF4 送信割込み */
250#ifdef TOPPERS_RZA1H
251#define INTNO_SCIF5_BRI 241 /* SCIF5 ブレーク割込み */
252#define INTNO_SCIF5_ERI 242 /* SCIF5 エラー割込み */
253#define INTNO_SCIF5_RXI 243 /* SCIF5 受信割込み */
254#define INTNO_SCIF5_TXI 244 /* SCIF5 送信割込み */
255#define INTNO_SCIF6_BRI 245 /* SCIF6 ブレーク割込み */
256#define INTNO_SCIF6_ERI 246 /* SCIF6 エラー割込み */
257#define INTNO_SCIF6_RXI 247 /* SCIF6 受信割込み */
258#define INTNO_SCIF6_TXI 248 /* SCIF6 送信割込み */
259#define INTNO_SCIF7_BRI 249 /* SCIF7 ブレーク割込み */
260#define INTNO_SCIF7_ERI 250 /* SCIF7 エラー割込み */
261#define INTNO_SCIF7_RXI 251 /* SCIF7 受信割込み */
262#define INTNO_SCIF7_TXI 252 /* SCIF7 送信割込み */
263#endif /* TOPPERS_RZA1H */
264
265#ifndef TOPPERS_MACRO_ONLY
266
267/*
268 * IRQ割込み要求のクリア
269 */
270Inline void
271rza1_clear_irq(INTNO intno)
272{
273 uint16_t reg;
274
275 reg = sil_reh_mem(RZA1_IRQRR);
276 reg &= ~(0x01U << (intno - INTNO_IRQ0));
277 sil_wrh_mem(RZA1_IRQRR, reg);
278}
279
280/*
281 * 汎用å…
282¥å‡ºåŠ›ãƒãƒ¼ãƒˆã®è¨­å®š
283 *
284 * 汎用å…
285¥å‡ºåŠ›ãƒãƒ¼ãƒˆã®åˆ¶å¾¡ãƒ¬ã‚¸ã‚¹ã‚¿ã®ç‰¹å®šã®ãƒ“ットを,セット(setが0でな
286 * い時)またはクリア(setが0の時)する.
287 */
288Inline void
289rza1_config_port(uint16_t *reg, uint_t bit, uint_t set)
290{
291 uint16_t val;
292 uint16_t mask;
293
294 mask = 0x01U << bit;
295 val = sil_reh_mem(reg);
296 if (set == 0) {
297 val &= ~mask;
298 }
299 else {
300 val |= mask;
301 }
302 sil_wrh_mem(reg, val);
303}
304
305#endif /* TOPPERS_MACRO_ONLY */
306#endif /* TOPPERS_RZA1_H */
Note: See TracBrowser for help on using the repository browser.