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

Last change on this file was 429, checked in by coas-nagasima, 4 years ago

ASP3, TINET, mbed を更新

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