source: atk2-sc3_fl850f1l/arch/v850_gcc/v850e2_fx4.h@ 117

Last change on this file since 117 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 14.4 KB
Line 
1/*
2 * TOPPERS ATK2
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 * Automotive Kernel Version 2
5 *
6 * Copyright (C) 2012-2014 by Center for Embedded Computing Systems
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 * Copyright (C) 2012-2014 by FUJI SOFT INCORPORATED, JAPAN
9 * Copyright (C) 2012-2013 by Spansion LLC, USA
10 * Copyright (C) 2012-2013 by NEC Communication Systems, Ltd., JAPAN
11 * Copyright (C) 2012-2014 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
12 * Copyright (C) 2012-2014 by Renesas Electronics Corporation, JAPAN
13 * Copyright (C) 2012-2014 by Sunny Giken Inc., JAPAN
14 * Copyright (C) 2012-2014 by TOSHIBA CORPORATION, JAPAN
15 * Copyright (C) 2012-2014 by Witz Corporation, JAPAN
16 *
17 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
18 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
19 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
20 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
21 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
22 * スコード中に含まれていること.
23 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
24 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
25 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * の無保証規定を掲載すること.
27 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
29 * と.
30 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
31 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
32 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
33 * 報告すること.
34 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
35 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
36 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
37 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
38 * 免責すること.
39 *
40 * 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
41 * 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
42 * はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
43 * 用する者に対して,AUTOSARパートナーになることを求めている.
44 *
45 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
47 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
48 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
49 * の責任を負わない.
50 *
51 * $Id: v850e2_fx4.h 187 2015-06-25 03:39:04Z t_ishikawa $
52 */
53
54/*
55 * V850E2/Fx4のハードウェア資源の定義
56 */
57
58#ifndef TOPPERS_V850E2_FX4_H
59#define TOPPERS_V850E2_FX4_H
60
61#if defined(V850FG4) || defined(V850FL4)
62#define _V850E2M_
63#elif defined(V850FG4_L)
64#define _V850E2S_
65#endif /* V850FG4 */
66
67/*
68 * PORTレジスタ
69 */
70#define PORT_BASE UINT_C(0xff400000)
71
72/* 端子機能設定 */
73#define PMC(n) ((PORT_BASE) +0x0400 + (n * 0x04U)) /* ポート・モード・コントロール・レジスタ */
74#define PMCSR(n) ((PORT_BASE) +0x0900 + (n * 0x04U)) /* ポート・モード・コントロール・セット/リセット・レジスタ */
75#define PIPC(n) ((PORT_BASE) +0x4200 + (n * 0x04U)) /* ポートIP コントロール・レジスタ */
76#define PM(n) ((PORT_BASE) +0x0300 + (n * 0x04U)) /* ポート・モード・レジスタ */
77#define PMSR(n) ((PORT_BASE) +0x0800 + (n * 0x04U)) /* ポート・モード・セット/リセット・レジスタ */
78#define PIBC(n) ((PORT_BASE) +0x4000 + (n * 0x04U)) /* ポート入力バッファ・コントロール・レジスタ */
79#define PFC(n) ((PORT_BASE) +0x0500 + (n * 0x04U)) /* ポート機能コントロール・レジスタ */
80#define PFCE(n) ((PORT_BASE) +0x0600 + (n * 0x04U)) /* ポート機能コントロール・レジスタ */
81
82/* 端子データ入力/出力 */
83#define PBDC(n) ((PORT_BASE) +0x4100 + (n * 0x04U)) /* ポート双方向コントロール・レジスタ */
84#define PPR(n) ((PORT_BASE) +0x0200 + (n * 0x04U)) /* ポート端子リード・レジスタ */
85#define P(n) ((PORT_BASE) +0x0000 + (n * 0x04U)) /* ポート・レジスタ */
86#define PNOT(n) ((PORT_BASE) +0x0700 + (n * 0x04U)) /* ポート・ノット・レジスタ */
87#define PSR(n) ((PORT_BASE) +0x0100 + (n * 0x04U)) /* ポート・セット/リセット・レジスタ */
88
89#define FCLA27CTL1 0xff416244 /* UARTE3フィルタレジスタ */
90#define FCLA27CTL3 0xff41624c
91#define FCLA7CTL0 0xff415040
92#define FCLA0CTL2 0xff414008
93#define FCLA0CTL4 0xff414010
94
95/*
96 * PLL関連のレジスタと定義
97 */
98#define MOSCC 0xff421018
99#define MOSCE 0xff421010
100#define MOSCS 0xff421014
101#define MOSCST 0xff42101c
102#define OCDIDH 0xff470008
103#define OCDIDL 0xff470000
104#define OCDIDM 0xff470004
105#define OPBT0 0xff47000c
106#define OSCWUFMSK 0xff4201a4
107
108#define SOSCE 0xff421020
109#define SOSCS 0xff421024
110#define SOSCST 0xff42102c
111
112#define CKSC_0_BASE 0xff426000
113#define CKSC_0(n) (CKSC_0_BASE + (0x10 * n))
114
115#define CKSC_1_BASE 0xff42a000
116#define CKSC_1(n) (CKSC_1_BASE + (0x10 * n))
117
118#define CKSC_A_BASE 0xff422000
119#define CKSC_A(n) (CKSC_A_BASE + (0x10 * n))
120
121#define CSCSTAT_0_BASE 0xff426000
122#define CSCSTAT_0(n) (CSCSTAT_0_BASE + (0x10 * n)) + 4
123
124#define CSCSTAT_1_BASE 0xff42a000
125#define CSCSTAT_1(n) (CSCSTAT_1_BASE + (0x10 * n)) + 4
126
127#define CSCSTAT_A_BASE 0xff422000
128#define CSCSTAT_A(n) (CSCSTAT_A_BASE + (0x10 * n)) + 4
129
130#define PLLE_BASE 0xff425000
131#define PLLE(n) (PLLE_BASE + (0x10 * n))
132
133#define PLLS_BASE 0xff425004
134#define PLLS(n) (PLLS_BASE + (0x10 * n))
135
136#define PLLC_BASE 0xff425008
137#define PLLC(n) (PLLC_BASE + (0x10 * n))
138
139#define PLLST_BASE 0xff42500c
140#define PLLST(n) (PLLST_BASE + (0x10 * n))
141
142#define MHz(n) ((n) * 1000 * 1000)
143#define CLK_MHz(num) (num * 1000 * 1000)
144
145/* CKSC_000 CPU, CPU SubSystem */
146#define HIGH_SPEED_INTOSC_DIV2 0x08
147#define HIGH_SPEED_INTOSC_DIV4 0x09
148#define HIGH_SPEED_INTOSC_DIV8 0x0A
149#define HIGH_SPEED_INTOSC_DIV32 0x0B
150#define MAINOSC_DIV1 0x0C
151#define PLL0_DIV1 0x14
152#define PLL0_DIV2 0x15
153#define PLL0_DIV3 0x16
154#define PLL0_DIV4 0x17
155#define PLL0_DIV5 0x18
156#define PLL0_DIV6 0x19
157#define PLL0_DIV8 0x1A
158#define PLL0_DIV10 0x1B
159#define INTOSC_AUTOSELECT 0x3A
160
161/* CKSC_A03 TAUJ0:PCLK */
162#define LOW_SPEED_INTOSC_DIV1 0x01
163#define HIGH_SPEED_INTOSC_DIV1 0x07
164#define SUBOSC 0x12
165#define NO_CLOCKSELECT 0x00
166
167#define PROT_PLLE 2 /* Fx4 Setting */
168#define PROT_CKSC0 0
169#define PROT_CKSC1 1
170#define PROT_MOSCE 2
171#define PROT_SOSCE 2
172#define PROT_ROSCE 2
173#define PROT_CKSCA 2
174
175/* xxxS Register */
176#define CLK_S_STPACK 0x08
177#define CLK_S_CLKEN 0x04
178#define CLK_S_CLKACT 0x02
179#define CLK_S_CLKSTAB 0x01
180
181/* PLL P-Value */
182#define PDIV0R5_200TO400 0x0 /* Div 0.5, 200-400MHz Output */
183#define PDIV1R0_100TO200 0x1 /* Div 1.0, 100-200MHz Output */
184#define PDIV2R0_050TO100 0x2 /* Div 2.0, 50-100MHz Output */
185#define PDIV4R0_025TO050 0x3 /* Div 4.0, 25- 50MHz Output */
186
187#define UC_SUCCESS 0
188#define UC_ERROR 1
189#define UC_INVALIDPARAM 2
190#define UC_PROTREGERROR 3
191#define UC_CLKSTATUSERR 4
192#define UC_CLKNOTENABLE 5
193#define UC_CLKNOTACTIVE 6
194#define UC_CLKNOTSTAB 7
195
196#ifndef TOPPERS_MACRO_ONLY
197
198extern uint32 EnableSubOSC(void);
199
200extern uint32 EnableMainOSC(uint32 clk_in);
201
202extern uint32 SetPLL(uint32 pllno, uint32 mhz, uint32 *outclk);
203
204extern uint32 set_clock_selection(uint32 control, uint32 status, uint8 regno, uint16 sel);
205
206#endif /* TOPPERS_MACRO_ONLY */
207
208/*
209 * Interval Timer(TAUA0)
210 */
211#define TAUA0_BASE UINT_C(0xFF808000) /* TAUA0 */
212
213#define TAUA0_IRQ UINT_C(20) /* TAUA0 */
214#define TAUA1_IRQ UINT_C(21) /* TAUA1 */
215#define TAUA2_IRQ UINT_C(22) /* TAUA2 */
216#define TAUA3_IRQ UINT_C(23) /* TAUA3 */
217#define TAUA4_IRQ UINT_C(24) /* TAUA4 */
218#define TAUA5_IRQ UINT_C(25) /* TAUA5 */
219#define TAUA6_IRQ UINT_C(26) /* TAUA6 */
220#define TAUA7_IRQ UINT_C(27) /* TAUA7 */
221#define TAUA8_IRQ UINT_C(28) /* TAUA8 */
222#define TAUA9_IRQ UINT_C(29) /* TAUA9 */
223#define TAUA10_IRQ UINT_C(30) /* TAUA10 */
224#define TAUA11_IRQ UINT_C(31) /* TAUA11 */
225#define TAUA12_IRQ UINT_C(32) /* TAUA12 */
226#define TAUA13_IRQ UINT_C(33) /* TAUA13 */
227#define TAUA14_IRQ UINT_C(34) /* TAUA14 */
228#define TAUA15_IRQ UINT_C(35) /* TAUA15 */
229
230#define TAUA_CH0 0
231#define TAUA_CH1 1
232#define TAUA_CH2 2
233#define TAUA_CH3 3
234#define TAUA_CH4 4
235#define TAUA_CH5 5
236#define TAUA_CH6 6
237#define TAUA_CH7 7
238#define TAUA_CH8 8
239#define TAUA_CH9 9
240#define TAUA_CH10 10
241#define TAUA_CH11 11
242#define TAUA_CH12 12
243#define TAUA_CH13 13
244#define TAUA_CH14 14
245#define TAUA_CH15 15
246
247/*
248 * TAUA0 Timer ハードウェア定義
249 */
250
251/*
252 * レジスタ
253 */
254/* TAUA0 プリスケーラ・レジスタ */
255#define TAUA0TPS (TAUA0_BASE + 0x240U) /* プリスケーラ・クロック選択レジス */
256#define TAUA0BRS (TAUA0_BASE + 0x244U) /* プリスケーラ・ボー・レート設定レジスタ */
257
258/* TAUA0 制御レジスタ */
259#define TAUA0CDR(CH) (TAUA0_BASE + (CH * 4U)) /* データ・レジスタ */
260#define TAUA0CNT(CH) (TAUA0_BASE + (0x80U + (CH * 4U))) /* カウンタ・レジスタ */
261#define TAUA0CMOR(CH) (TAUA0_BASE + (0x200U + (CH * 4U))) /* モードOS レジスタ */
262#define TAUA0CMUR(CH) (TAUA0_BASE + (0xC0 + (CH * 4U))) /* モード・ユーザ・レジスタ */
263#define TAUA0CSR(CH) (TAUA0_BASE + (0x140U + (CH * 4U))) /* ステータス・レジスタ */
264#define TATA0CSC(CH) (TAUA0_BASE + (0x180U + (CH * 4U))) /* ステータス・クリア・トリガ・レジスタ */
265#define TAUA0TS (TAUA0_BASE + 0x1C4U) /* スタート・トリガ・レジスタ */
266#define TAUA0TE (TAUA0_BASE + 0x1C0U) /* 許可ステータス・レジスタ */
267#define TAUA0TT (TAUA0_BASE + 0x1C8U) /* ストップ・トリガ・レジスタ */
268
269/* TAUA0 出力レジスタ */
270#define TAUA0TOE (TAUA0_BASE + 0x5CU) /* 出力許可レジスタ */
271#define TAUA0TO (TAUA0_BASE + 0x58U) /* 出力レジスタ */
272#define TAUA0TOM (TAUA0_BASE + 0x248U) /* 出力モード・レジスタ */
273#define TAUA0TOC (TAUA0_BASE + 0x24CU) /* 出力コンフィギュレーション・レジスタ */
274
275#define TAUA0TOL (TAUA0_BASE + 0x40U) /* 出力アクティブ・レベル・レジスタ */
276#define TAUA0TDE (TAUA0_BASE + 0x250U) /* デッド・タイム出力許可レジスタ */
277#define TAUA0TDM (TAUA0_BASE + 0x254U) /* デッド・タイム出力モード・レジスタ */
278#define TAUA0TDL (TAUA0_BASE + 0x54U) /* デッド・タイム出力レベル・レジスタ */
279
280#define TAUA0TRO (TAUA0_BASE + 0x4CU) /* リアルタイム出力レジスタ */
281#define TAUA0TRE (TAUA0_BASE + 0x258U) /* リアルタイム出力許可レジスタ */
282#define TAUA0TRC (TAUA0_BASE + 0x25CU) /* リアルタイム出力制御レジスタ */
283#define TAUA0TME (TAUA0_BASE + 0x50U) /* 変調出力許可レジスタ */
284/* TAUA0 リロード・データ・レジスタ */
285#define TAUA0RDE (TAUA0_BASE + 0x260U) /* リロード・データ許可レジスタ */
286#define TAUA0RDM (TAUA0_BASE + 0x264U) /* リロード・データ・モード・レジスタ */
287#define TAUA0RDS (TAUA0_BASE + 0x268U) /* リロード・データ制御CH 選択・リロード・データ制御CH 選択 */
288#define TAUA0RDC (TAUA0_BASE + 0x26CU) /* リロード・データ制御レジスタ */
289#define TAUA0RDT (TAUA0_BASE + 0x44U) /* リロード・データ・トリガ・レジスタ */
290#define TAUA0RSF (TAUA0_BASE + 0x48U) /* リロード・ステータス・レジスタ */
291
292#define MCU_TAUA0_MASK_CK0 ((uint16) 0x000f)
293#define MCU_TAUA0_CK0 ((uint16) 0x0000)
294#define MCU_TAUA00_CMOR ((uint16) 0x0001)
295#define MCU_TAUA00_CMUR ((uint8) 0x01)
296#define MCU_TAUA00_DI ((uint16) 0x0080)
297#define MCU_TAUA00_EI ((uint16) 0x0000)
298#define MCU_TAUA00_MASK_ENB ((uint16) 0x0001)
299#define MCU_TIMER_STOP ((uint8) 0x0)
300#define MCU_TIMER_START ((uint8) 0x1)
301
302#define ICTAUA0_BASE 0xffff6028 /* チャンネル0割り込み */
303#define ICTAUA0I(CH) (ICTAUA0_BASE + (CH * 0x02))
304
305
306/*
307 * TAUA0 マスク定義
308 */
309#define TAUA0_MASK_BIT 0x0xfffe /* bit0 = TAUA0 */
310
311/*
312 * OSTM
313 */
314#define OSTM_IRQ UINT_C(147)
315
316#define OSTM0_BASE 0xFF800000
317
318#define OSTM_CMP_W (0xFF800000 + 0x00)
319#define OSTM_CNT_W (0xFF800000 + 0x04)
320#define OSTM_TE (0xFF800000 + 0x10)
321#define OSTM_TS_B (0xFF800000 + 0x14)
322#define OSTM_TT_B (0xFF800000 + 0x18)
323#define OSTM_CTL_B (0xFF800000 + 0x20)
324
325/*
326 * UARTE
327 */
328#define URTE3_BASE UINT_C(0xff5f0000)
329#define URTE5_BASE UINT_C(0xff610000)
330#define URTE10_BASE UINT_C(0xff660000)
331#define URTEnCTL0 (UARTE_BASE + 0x00U)
332#define URTEnCTL1 (UARTE_BASE + 0x20U)
333#define URTEnCTL2 (UARTE_BASE + 0x24U)
334#define URTEnTRG (UARTE_BASE + 0x04U)
335#define URTEnSTR0 (UARTE_BASE + 0x08U)
336#define URTEnSTR1 (UARTE_BASE + 0x0cU)
337#define URTEnSTC (UARTE_BASE + 0x10U)
338#define URTEnRX (UARTE_BASE + 0x14U)
339#define URTEnTX (UARTE_BASE + 0x18U)
340#define URTEnEMU (UARTE_BASE + 0x34U)
341
342#define INTLMA3IT 0xffff618C /* 転送完了 */
343#define INTLMA3IR 0xffff618A /* 受信完了 */
344
345#define INTLMA5IT 0xffff61C4 /* UART5 RX */
346#define INTLMA5IR 0xffff61C6 /* UART5 TX */
347
348#define INTLMA10IT 0xffff6204 /* UART10 TX */
349#define INTLMA10IR 0xffff6202 /* UART10 RX */
350
351#define URTE3_INTNO UINT_C(197)
352#define URTE5_INTNO UINT_C(226)
353
354#ifndef URTE10_INTNO
355#define URTE10_INTNO UINT_C(249)
356#endif /* URTE10_INTNO */
357
358/*
359 * TAUJ
360 */
361#ifdef V850FG4
362#define TAUFJ0I0_INTNO 135
363#define TAUFJ0I1_INTNO 136
364#define TAUFJ0I2_INTNO 137
365#define TAUFJ0I3_INTNO 138
366#define TAUFJ1I0_INTNO 139
367#define TAUFJ1I1_INTNO 140
368#define TAUFJ1I2_INTNO 141
369#define TAUFJ1I3_INTNO 142
370#elif defined(V850FG4_L)
371#define TAUFJ0I0_INTNO 78
372#define TAUFJ0I1_INTNO 79
373#define TAUFJ0I2_INTNO 80
374#define TAUFJ0I3_INTNO 81
375#endif /* V850FG4 */
376
377
378/*
379 * TAUJ関連レジスタ
380 */
381#define TAUJ_BASE(n) ((uint32) (0xff811000U + (n * 0x1000U)))
382#define TAUJTPS(n) (TAUJ_BASE(n) + 0x90U)
383#define TAUJCDR(n, ch) (TAUJ_BASE(n) + (ch * 0x04U))
384#define TAUJCNT(n, ch) (TAUJ_BASE(n) + 0x10U + (ch * 0x04U))
385#define TAUJCMOR(n, ch) (TAUJ_BASE(n) + 0x80U + (ch * 0x04U))
386#define TAUJCMUR(n, ch) (TAUJ_BASE(n) + 0x20U + (ch * 0x04U))
387#define TAUJTS(n) (TAUJ_BASE(n) + 0x54U)
388#define TAUJTT(n) (TAUJ_BASE(n) + 0x58U)
389
390/*
391 * INT
392 */
393#define EIC_BASE UINT_C(0xffff6000)
394#define EIC_ADDRESS(intno) (EIC_BASE + (intno * 2))
395#define PMR UINT_C(0xFFFF6448)
396#define ISPR_H UINT_C(0xFFFF6440)
397#define ISPC_H UINT_C(0xffff6450)
398
399#define TMIN_INTNO UINT_C(0)
400#define TMAX_INTNO UINT_C(255)
401#define TNUM_INT UINT_C(256)
402
403#include "v850.h"
404
405#endif /* TOPPERS_V850E2_FX4_H */
Note: See TracBrowser for help on using the repository browser.