source: azure_iot_hub_f767zi/trunk/asp_baseplatform/arch/arm_m_gcc/common/arm_m.h@ 457

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

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 7.0 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2008-2015 by Embedded and Real-Time Systems Laboratory
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 *
9 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
14 * スコード中に含まれていること.
15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
18 * の無保証規定を掲載すること.
19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
21 * と.
22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
23 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
25 * 報告すること.
26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
30 * 免責すること.
31 *
32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
36 * の責任を負わない.
37 *
38 * @(#) $Id$
39 */
40
41/*
42 * ARMVx-Mのハードウェア資源の定義
43 */
44
45#ifndef ARM_M_H
46#define ARM_M_H
47
48#if !((__TARGET_ARCH_THUMB == 4) || (__TARGET_ARCH_THUMB == 3))
49#error __TARGET_ARCH_THUMB is not defined or other than 4(ARMv7)/3(ARMv6)
50#endif /* __TARGET_ARCH_THUMB == 4 */
51
52/*
53 * EPSRのTビット
54 */
55#define EPSR_T 0x01000000
56
57/*
58 * IPSRの ISR NUMBER
59 */
60#define IPSR_ISR_NUMBER 0x1ff
61
62/*
63 * 例外・割込み発生時にスタック上に積まれる保存領域のサイズ
64 * 本カーネルでは例外フレームと呼ぶ
65 */
66#define EXC_FRAME_SIZE (8*4)
67
68/*
69 * 例外・割込み発生時にLRに設定されるEXC_RETURNの値
70 */
71#define EXC_RETURN_PSP 0x04
72#define EXC_RETURN_HANDLER_MSP 0x00
73#define EXC_RETURN_TREAD_MSP 0x09
74#define EXC_RETURN_TREAD_PSP 0x0d
75#define EXC_RETURN_FP 0x10
76#define EXC_RETURN_FP_USED 0x00
77#define EXC_RETURN_FP_NONUSED 0x10
78#define EXC_RETURN_OTHER 0xFFFFFFE0
79
80/*
81 * CONTROLレジスタ
82 */
83#define CONTROL_PSP 0x02
84#define CONTROL_MSP 0x00
85#define CONTROL_FPCA 0x04
86
87/*
88 * 例外番号
89 */
90#define EXCNO_NMI 2
91#define EXCNO_HARD 3
92#define EXCNO_MPU 4
93#define EXCNO_BUS 5
94#define EXCNO_USAGE 6
95#define EXCNO_SVCALL 11
96#define EXCNO_DEBUG 12
97#define EXCNO_PENDSV 14
98
99/*
100 * 例外番号の最小値と最大値
101 */
102#define TMIN_EXCNO 2
103#define TMAX_EXCNO 14
104
105/*
106 * 割込み番号
107 */
108#define IRQNO_SYSTICK 15
109
110/*
111 * 割込み番号の最小値
112 */
113#define TMIN_INTNO 15
114
115/*
116 * 例外フレームのオフセット
117 */
118#define P_EXCINF_OFFSET_EXC_RETURN 0x01
119#define P_EXCINF_OFFSET_IIPM 0x00
120#define P_EXCINF_OFFSET_XPSR 0x09
121#define P_EXCINF_OFFSET_PC 0x08
122
123/*
124 * NVIC関連
125 */
126
127/*
128 * システムハンドラーコントロールレジスタ
129 */
130#define NVIC_SYS_HND_CTRL 0xE000ED24
131
132/*
133 * 各例外の許可ビット
134 */
135#define NVIC_SYS_HND_CTRL_USAGE 0x00040000
136#define NVIC_SYS_HND_CTRL_BUS 0x00020000
137#define NVIC_SYS_HND_CTRL_MEM 0x00010000
138
139/*
140 * 優先度設定レジスタ
141 */
142#define NVIC_SYS_PRI1 0xE000ED18 // Sys. Handlers 4 to 7 Priority
143#define NVIC_SYS_PRI2 0xE000ED1C // Sys. Handlers 8 to 11 Priority
144#define NVIC_SYS_PRI3 0xE000ED20 // Sys. Handlers 12 to 15 Priority
145#define NVIC_PRI0 0xE000E400 // IRQ 0 to 3 Priority Register
146
147/*
148 * 割込み許可レジスタ
149 */
150#define NVIC_SETENA0 0xE000E100 // IRQ 0 to 31 Set Enable Register
151
152/*
153 * 割込み禁止レジスタ
154 */
155#define NVIC_CLRENA0 0xE000E180 // IRQ 0 to 31 Set Disable Register
156
157/*
158 * 割込みセットペンディングレジスタ
159 */
160#define NVIC_ISER0 0xE000E200 // IRQ 0 to 31 Set-Pending Register
161
162/*
163 * 割込みクリアペンディングレジスタ
164 */
165#define NVIC_ICER0 0xE000E280 // IRQ 0 to 31 Clear-Pending Register
166
167/*
168 * ベクタテーブルオフセットレジスタ
169 */
170#define NVIC_VECTTBL 0xE000ED08
171
172/*
173 * 割り込み制御と状態レジスタ
174 */
175#define NVIC_ICSR 0xE000ED04
176#define NVIC_PENDSVSET (1 << 28) /* PenvSVC例外 */
177#define NVIC_PENDSTSET (1 << 26) /* SYSTick例外 */
178
179
180/*
181 * SYSTIC関連レジスタ
182 */
183#define SYSTIC_CONTROL_STATUS 0xE000E010
184#define SYSTIC_RELOAD_VALUE 0xE000E014
185#define SYSTIC_CURRENT_VALUE 0xE000E018
186#define SYSTIC_CALIBRATION 0xE000E01C
187
188#define SYSTIC_ENABLE 0x01
189#define SYSTIC_TICINT 0x02
190#define SYSTIC_CLKSOURCE 0x04
191#define SYSTIC_COUNTFLAG 0x10000
192
193#define SYSTIC_SKEW 0x40000000
194#define SYSTIC_NOREF 0x80000000
195#define SYSTIC_TENMS 0x00ffffff
196
197/*
198 * FPU関連レジスタ
199 */
200#if __TARGET_ARCH_THUMB == 4
201
202#define CPACR 0xE000ED88
203#define FPCCR 0xE000EF34
204
205#define CPACR_FPU_ENABLE 0x00f00000
206#define FPCCR_NO_PRESERV 0x00000000
207#define FPCCR_NO_LAZYSTACKING 0x80000000
208#define FPCCR_LAZYSTACKING 0xC0000000
209
210#endif /* __TARGET_ARCH_THUMB == 4 */
211
212
213#if defined(TOPPERS_CORTEX_M0) || defined(TOPPERS_CORTEX_M0PLUS)
214/*
215 * M0/M0+固有の内容
216 */
217
218/*
219 * 割込み優先度の範囲
220 */
221#define TMIN_INTPRI (-4) /* 割込み優先度の最小値(最高値)*/
222#define TMAX_INTPRI (-1) /* 割込み優先度の最大値(最低値)*/
223
224/*
225 * 割込み優先度のビット幅
226 */
227#define TBITW_IPRI 2
228
229#endif /* defined(TOPPERS_CORTEX_M0) || defined(TOPPERS_CORTEX_M0PLUS) */
230
231#endif /* ARM_M_H */
Note: See TracBrowser for help on using the repository browser.