OSDN Git Service

チケット #25999 「SIOポートのピン割り当ての変更」に対応。TOP
[toppersasp4lpc/asp.git] / asp / arch / arm_m_gcc / common / arm_m.h
1 /*
2  *  TOPPERS/ASP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Advanced Standard Profile Kernel
5  * 
6  *  Copyright (C) 2008-2011 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: arm_m.h 2202 2011-07-26 13:27:11Z ertl-honda $
39  */
40
41 /*
42  *  ARMVx-Mのハードウェア資源の定義
43  */
44
45 #ifndef ARM_M_H
46 #define ARM_M_H
47
48 /*
49  *  EPSRのTビット
50  */
51 #define EPSR_T   0x01000000
52
53 /*
54  * IPSRの ISR NUMBER
55  */
56 #define IPSR_ISR_NUMBER 0x1ff
57
58 /*
59  *  例外・割込み発生時にスタック上に積まれる保存領域のサイズ
60  *  本カーネルでは例外フレームと呼ぶ
61  */
62 #define EXC_FRAME_SIZE         (8*4)
63
64 /*
65  *  例外・割込み発生時にLRに設定されるEXC_RETURNの値
66  */
67 #define EXC_RETURN_HANDLER      0x0
68 #define EXC_RETURN_THREAD       0x8
69 #define EXC_RETURN_MSP          0x0
70 #define EXC_RETURN_PSP          0x4
71
72 /*
73  *  CONTROLレジスタ
74  */
75 #define CONTROL_PSP            0x02
76 #define CONTROL_MSP            0x00
77
78 /*
79  *  例外番号
80  */
81 #define EXCNO_NMI         2
82 #define EXCNO_HARD        3
83 #define EXCNO_MPU         4
84 #define EXCNO_BUS         5
85 #define EXCNO_USAGE       6
86 #define EXCNO_SVCALL     11          
87 #define EXCNO_DEBUG      12
88 #define EXCNO_PENDSV     14
89
90 /*
91  *  例外番号の最小値と最大値
92  */
93 #define TMIN_EXCNO   2
94 #define TMAX_EXCNO  14
95
96 /*
97  *  割込み番号
98  */
99 #define IRQNO_SYSTICK    15
100
101 /*
102  *  割込み番号の最小値
103  */
104 #define TMIN_INTNO       15
105
106 /*
107  *  例外フレームのオフセット
108  */
109 #define P_EXCINF_OFFSET_EXC_RETURN  0x00
110 #define P_EXCINF_OFFSET_BASEPRI     0x01
111 #define P_EXCINF_OFFSET_XPSR        0x09
112 #define P_EXCINF_OFFSET_PC          0x08
113
114 /*
115  *  NVIC関連
116  */
117
118 /*
119  *  コントロールレジスタ
120  */
121 #define NVIC_INT_CTRL       0xe000ed04
122
123 #define NVIC_PENDSVSET      0x10000000
124
125 /*
126  *  システムハンドラーコントロールレジスタ
127  */
128 #define NVIC_SYS_HND_CTRL   0xE000ED24
129
130 /*
131  *  各例外の許可ビット
132  */
133 #define NVIC_SYS_HND_CTRL_USAGE 0x00040000
134 #define NVIC_SYS_HND_CTRL_BUS   0x00020000
135 #define NVIC_SYS_HND_CTRL_MEM   0x00010000
136
137 /*
138  *  優先度設定レジスタ
139  */
140 #define NVIC_SYS_PRI1       0xE000ED18  // Sys. Handlers 4 to 7 Priority
141 #define NVIC_SYS_PRI2       0xE000ED1C  // Sys. Handlers 8 to 11 Priority
142 #define NVIC_SYS_PRI3       0xE000ED20  // Sys. Handlers 12 to 15 Priority
143 #define NVIC_PRI0           0xE000E400  // IRQ 0 to 3 Priority Register
144
145 /*
146  *  割込み許可レジスタ
147  */
148 #define NVIC_SETENA0        0xE000E100  // IRQ 0 to 31 Set Enable Register
149
150 /*
151  *  割込み禁止レジスタ
152  */
153 #define NVIC_CLRENA0        0xE000E180  // IRQ 0 to 31 Set Disable Register
154
155 /*
156  *  割込みセットペンディングレジスタ
157  */
158 #define NVIC_ISER0          0xE000E200  // IRQ 0 to 31 Set-Pending Register
159
160 /*
161  *  割込みクリアペンディングレジスタ
162  */
163 #define NVIC_ICER0          0xE000E280  // IRQ 0 to 31 Clear-Pending Register
164
165 /*
166  *  ベクタテーブルオフセットレジスタ
167  */
168 #define NVIC_VECTTBL        0xE000ED08
169
170
171 /*
172  *  SYSTIC関連レジスタ
173  */
174 #define SYSTIC_CONTROL_STATUS 0xE000E010
175 #define SYSTIC_RELOAD_VALUE   0xE000E014
176 #define SYSTIC_CURRENT_VALUE  0xE000E018
177 #define SYSTIC_CALIBRATION    0xE000E01C
178
179 #define SYSTIC_ENABLE    0x01
180 #define SYSTIC_TICINT    0x02
181 #define SYSTIC_CLKSOURCE 0x04
182 #define SYSTIC_COUNTFLAG 0x10000
183
184 #define SYSTIC_SKEW      0x40000000
185 #define SYSTIC_NOREF     0x80000000
186 #define SYSTIC_TENMS     0x00ffffff
187
188 #endif  /* ARM_M_H */