source: rtos_arduino/trunk/asp_1.9.2/arch/arm_m_gcc/common/arm_m.h@ 136

Last change on this file since 136 was 136, checked in by ertl-honda, 8 years ago

ライブラリとOS及びベーシックなサンプルの追加.

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 * 上記著作権者
10は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
11 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
12 * 変・再é…
13å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16 * スコード中に含まれていること.
17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18 * 用できる形で再é…
19å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
20å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
21 * 者
22マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 * の無保証規定を掲載すること.
24 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
25 * 用できない形で再é…
26å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
27 * と.
28 * (a) 再é…
29å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
30マニュアルなど)に,上記の著
31 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
32 * (b) 再é…
33å¸ƒã®å½¢æ…
34‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
35 * 報告すること.
36 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
37 * 害からも,上記著作権者
38およびTOPPERSプロジェクトをå…
39è²¬ã™ã‚‹ã“と.
40 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
41 * 由に基づく請求からも,上記著作権者
42およびTOPPERSプロジェクトを
43 * å…
44è²¬ã™ã‚‹ã“と.
45 *
46 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
49 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
50 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
51 * の責任を負わない.
52 *
53 * @(#) $Id: arm_m.h 2711 2015-11-23 01:07:27Z ertl-honda $
54 */
55
56/*
57 * ARMVx-Mのハードウェア資源の定義
58 */
59
60#ifndef ARM_M_H
61#define ARM_M_H
62
63#if !((__TARGET_ARCH_THUMB == 4) || (__TARGET_ARCH_THUMB == 3))
64#error __TARGET_ARCH_THUMB is not defined or other than 4(ARMv7)/3(ARMv6)
65#endif /* __TARGET_ARCH_THUMB == 4 */
66
67/*
68 * EPSRのTビット
69 */
70#define EPSR_T 0x01000000
71
72/*
73 * IPSRの ISR NUMBER
74 */
75#define IPSR_ISR_NUMBER 0x1ff
76
77/*
78 * 例外・割込み発生時にスタック上に積まれる保存領域のサイズ
79 * 本カーネルでは例外フレームと呼ぶ
80 */
81#define EXC_FRAME_SIZE (8*4)
82
83/*
84 * 例外・割込み発生時にLRに設定されるEXC_RETURNの値
85 */
86#define EXC_RETURN_PSP 0x04
87#define EXC_RETURN_HANDLER_MSP 0x00
88#define EXC_RETURN_TREAD_MSP 0x09
89#define EXC_RETURN_TREAD_PSP 0x0d
90#define EXC_RETURN_FP 0x10
91#define EXC_RETURN_FP_USED 0x00
92#define EXC_RETURN_FP_NONUSED 0x10
93#define EXC_RETURN_OTHER 0xFFFFFFE0
94
95/*
96 * CONTROLレジスタ
97 */
98#define CONTROL_PSP 0x02
99#define CONTROL_MSP 0x00
100#define CONTROL_FPCA 0x04
101
102/*
103 * 例外番号
104 */
105#define EXCNO_NMI 2
106#define EXCNO_HARD 3
107#define EXCNO_MPU 4
108#define EXCNO_BUS 5
109#define EXCNO_USAGE 6
110#define EXCNO_SVCALL 11
111#define EXCNO_DEBUG 12
112#define EXCNO_PENDSV 14
113
114/*
115 * 例外番号の最小値と最大値
116 */
117#define TMIN_EXCNO 2
118#define TMAX_EXCNO 14
119
120/*
121 * 割込み番号
122 */
123#define IRQNO_SYSTICK 15
124
125/*
126 * 割込み番号の最小値
127 */
128#define TMIN_INTNO 15
129
130/*
131 * 例外フレームのオフセット
132 */
133#define P_EXCINF_OFFSET_EXC_RETURN 0x01
134#define P_EXCINF_OFFSET_IIPM 0x00
135#define P_EXCINF_OFFSET_XPSR 0x09
136#define P_EXCINF_OFFSET_PC 0x08
137
138/*
139 * NVIC関連
140 */
141
142/*
143 * システムハンドラーコントロールレジスタ
144 */
145#define NVIC_SYS_HND_CTRL 0xE000ED24
146
147/*
148 * 各例外の許可ビット
149 */
150#define NVIC_SYS_HND_CTRL_USAGE 0x00040000
151#define NVIC_SYS_HND_CTRL_BUS 0x00020000
152#define NVIC_SYS_HND_CTRL_MEM 0x00010000
153
154/*
155 * 優å…
156ˆåº¦è¨­å®šãƒ¬ã‚¸ã‚¹ã‚¿
157 */
158#define NVIC_SYS_PRI1 0xE000ED18 // Sys. Handlers 4 to 7 Priority
159#define NVIC_SYS_PRI2 0xE000ED1C // Sys. Handlers 8 to 11 Priority
160#define NVIC_SYS_PRI3 0xE000ED20 // Sys. Handlers 12 to 15 Priority
161#define NVIC_PRI0 0xE000E400 // IRQ 0 to 3 Priority Register
162
163/*
164 * 割込み許可レジスタ
165 */
166#define NVIC_SETENA0 0xE000E100 // IRQ 0 to 31 Set Enable Register
167
168/*
169 * 割込み禁止レジスタ
170 */
171#define NVIC_CLRENA0 0xE000E180 // IRQ 0 to 31 Set Disable Register
172
173/*
174 * 割込みセットペンディングレジスタ
175 */
176#define NVIC_ISER0 0xE000E200 // IRQ 0 to 31 Set-Pending Register
177
178/*
179 * 割込みクリアペンディングレジスタ
180 */
181#define NVIC_ICER0 0xE000E280 // IRQ 0 to 31 Clear-Pending Register
182
183/*
184 * ベクタテーブルオフセットレジスタ
185 */
186#define NVIC_VECTTBL 0xE000ED08
187
188/*
189 * 割り込み制御と状æ…
190‹ãƒ¬ã‚¸ã‚¹ã‚¿
191 */
192#define NVIC_ICSR 0xE000ED04
193#define NVIC_PENDSVSET (1 << 28) /* PenvSVC例外 */
194#define NVIC_PENDSTSET (1 << 26) /* SYSTick例外 */
195
196
197/*
198 * SYSTIC関連レジスタ
199 */
200#define SYSTIC_CONTROL_STATUS 0xE000E010
201#define SYSTIC_RELOAD_VALUE 0xE000E014
202#define SYSTIC_CURRENT_VALUE 0xE000E018
203#define SYSTIC_CALIBRATION 0xE000E01C
204
205#define SYSTIC_ENABLE 0x01
206#define SYSTIC_TICINT 0x02
207#define SYSTIC_CLKSOURCE 0x04
208#define SYSTIC_COUNTFLAG 0x10000
209
210#define SYSTIC_SKEW 0x40000000
211#define SYSTIC_NOREF 0x80000000
212#define SYSTIC_TENMS 0x00ffffff
213
214/*
215 * FPU関連レジスタ
216 */
217#if __TARGET_ARCH_THUMB == 4
218
219#define CPACR 0xE000ED88
220#define FPCCR 0xE000EF34
221
222#define CPACR_FPU_ENABLE 0x00f00000
223#define FPCCR_NO_PRESERV 0x00000000
224#define FPCCR_NO_LAZYSTACKING 0x80000000
225#define FPCCR_LAZYSTACKING 0xC0000000
226
227#endif /* __TARGET_ARCH_THUMB == 4 */
228
229
230#if defined(TOPPERS_CORTEX_M0) || defined(TOPPERS_CORTEX_M0PLUS)
231/*
232 * M0/M0+固有の内
233容
234 */
235
236/*
237 * 割込み優å…
238ˆåº¦ã®ç¯„囲
239 */
240#define TMIN_INTPRI (-4) /* 割込み優å…
241ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰*/
242#define TMAX_INTPRI (-1) /* 割込み優å…
243ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰*/
244
245/*
246 * 割込み優å…
247ˆåº¦ã®ãƒ“ット幅
248
249 */
250#define TBITW_IPRI 2
251
252#endif /* defined(TOPPERS_CORTEX_M0) || defined(TOPPERS_CORTEX_M0PLUS) */
253
254#endif /* ARM_M_H */
Note: See TracBrowser for help on using the repository browser.