OSDN Git Service

LPC4330i存部のコードを追加。ビルドが通る。
[toppersasp4lpc/asp.git] / asp / arch / arm_m_gcc / lpc4300_gcc / lpc4300.h
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  *
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
9  *              Graduate School of Information Science, Nagoya Univ., JAPAN
10  *  Copyright (C) 2010 by TOPPERS/ASP for LPC project
11  *              http://sourceforge.jp/projects/toppersasp4lpc/
12  * 
13  *  上記著作権者は,Free Software Foundation によって公表されている 
14  *  GNU General Public License の Version 2 に記述されている条件か,以
15  *  下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェア(本ソフトウェ
16  *  アを改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
17  *  利用と呼ぶ)することを無償で許諾する.
18  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
19  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
20  *      スコード中に含まれていること.
21  *  (2) 本ソフトウェアを再利用可能なバイナリコード(リロケータブルオブ
22  *      ジェクトファイルやライブラリなど)の形で利用する場合には,利用
23  *      に伴うドキュメント(利用者マニュアルなど)に,上記の著作権表示,
24  *      この利用条件および下記の無保証規定を掲載すること.
25  *  (3) 本ソフトウェアを再利用不可能なバイナリコードの形または機器に組
26  *      み込んだ形で利用する場合には,次のいずれかの条件を満たすこと.
27  *    (a) 利用に伴うドキュメント(利用者マニュアルなど)に,上記の著作
28  *        権表示,この利用条件および下記の無保証規定を掲載すること.
29  *    (b) 利用の形態を,別に定める方法によって,上記著作権者に報告する
30  *        こと.
31  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
32  *      害からも,上記著作権者を免責すること.
33  * 
34  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者は,
35  *  本ソフトウェアに関して,その適用可能性も含めて,いかなる保証も行わ
36  *  ない.また,本ソフトウェアの利用により直接的または間接的に生じたい
37  *  かなる損害に関しても,その責任を負わない.
38  * 
39  */
40
41 /**
42  * \ingroup TOPPERS_ASP
43  * \defgroup TOPPERS_CHIP LPC18XX チップ依存部
44  * \{
45  */
46 /**
47  * \file lpc1800.h
48  * \details NXP LPC1800シリーズのハードウェア宣言
49  */
50 #ifndef TOPPERS_CHIP_LPC4300_H
51 #define TOPPERS_CHIP_LPC4300_H
52
53 #include <sil.h>
54
55 /*
56  * CORTEX-M3 CPUの依存部のインクルード
57  */
58 #include "arm_m_gcc/common/arm_m.h"
59 #ifndef TOPPERS_MACRO_ONLY
60 #define CMSIS_BITPOSITIONS
61 #include "LPC43xx.h"
62 #endif
63
64 /**
65  * \brief 割込み番号の最大値
66  * \details
67  * CORTEX-M3のNVIC割り込みコントローラは任意個の割り込み源を持つ。このマクロは、
68  * 最大の割り込み番号の値を表す。
69  */
70 #define TMAX_INTNO   (16 + 52)                  // LPC1830の最大割り込み番号は16+52
71
72 /**
73  * \brief 割込み優先度のビット幅
74  * \details
75  * CORTEX-M3のNVIC割り込みコントローラはSoC実装者の判断で最大8bitの割り込み優先値を
76  * 持つことができる。TBITW_IPRIは、その優先値を表すフィールドの幅を示す。フィールド幅は
77  * SoC設計者が決める。通常はユーザーズマニュアルなどに書いてある。
78  *
79  * LPC18xxでは現在不明であるが、UM10430 の 6.3節には
80  * "Eight programmable interrupt priority levels with hardware priority level masking."
81  * とある。一方、IPRxの説明には5-bitの割り込み優先順位とあり、混乱している。
82  */
83 #define TBITW_IPRI     3                                        // LPC1830      の優先度は8順位3bit
84
85 /**
86  * \brief 割込み優先度ビット幅中のサブ優先度のビット幅
87  * \details
88  * サブ優先度はAIRCRレジスタで指定できる。無指定の場合、0ビットが使われる。
89  * todo bits数を調べる
90  */
91 #define TBITW_SUBIPRI  0
92
93 /**
94  *  \brief 割込みベクタ番号定義
95  *  \details
96  *  NXP提供のCMSIS LPC18xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
97  *  \code
98  *  sed -e "s/  //" < irqs | sed -e "s/_.*$//" | awk '{print("#define IRQ_VECTOR_"$1"\t\t(16+"$1"_IRQn)")}' -
99  *  \endcode
100  *  XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
101  *  IRQ_VECTOR_XXXXを例外番号として宣言している。つまりXXX_IRQnに16を足す。
102  */
103 #define IRQ_VECTOR_DAC          (16+DAC_IRQn)
104 #define IRQ_VECTOR_RESERVED0            (16+RESERVED0_IRQn)
105 #define IRQ_VECTOR_DMA          (16+DMA_IRQn)
106 #define IRQ_VECTOR_RESERVED1            (16+RESERVED1_IRQn)
107 #define IRQ_VECTOR_RESERVED2            (16+RESERVED2_IRQn)
108 #define IRQ_VECTOR_ETHERNET             (16+ETHERNET_IRQn)
109 #define IRQ_VECTOR_SDIO         (16+SDIO_IRQn)
110 #define IRQ_VECTOR_LCD          (16+LCD_IRQn)
111 #define IRQ_VECTOR_USB0         (16+USB0_IRQn)
112 #define IRQ_VECTOR_USB1         (16+USB1_IRQn)
113 #define IRQ_VECTOR_SCT          (16+SCT_IRQn)
114 #define IRQ_VECTOR_RITIMER              (16+RITIMER_IRQn)
115 #define IRQ_VECTOR_TIMER0               (16+TIMER0_IRQn)
116 #define IRQ_VECTOR_TIMER1               (16+TIMER1_IRQn)
117 #define IRQ_VECTOR_TIMER2               (16+TIMER2_IRQn)
118 #define IRQ_VECTOR_TIMER3               (16+TIMER3_IRQn)
119 #define IRQ_VECTOR_MCPWM                (16+MCPWM_IRQn)
120 #define IRQ_VECTOR_ADC0         (16+ADC0_IRQn)
121 #define IRQ_VECTOR_I2C0         (16+I2C0_IRQn)
122 #define IRQ_VECTOR_I2C1         (16+I2C1_IRQn)
123 #define IRQ_VECTOR_RESERVED3            (16+RESERVED3_IRQn)
124 #define IRQ_VECTOR_ADC1         (16+ADC1_IRQn)
125 #define IRQ_VECTOR_SSP0         (16+SSP0_IRQn)
126 #define IRQ_VECTOR_SSP1         (16+SSP1_IRQn)
127 #define IRQ_VECTOR_USART0               (16+USART0_IRQn)
128 #define IRQ_VECTOR_UART1                (16+UART1_IRQn)
129 #define IRQ_VECTOR_USART2               (16+USART2_IRQn)
130 #define IRQ_VECTOR_USART3               (16+USART3_IRQn)
131 #define IRQ_VECTOR_I2S0         (16+I2S0_IRQn)
132 #define IRQ_VECTOR_I2S1         (16+I2S1_IRQn)
133 #define IRQ_VECTOR_RESERVED4            (16+RESERVED4_IRQn)
134 #define IRQ_VECTOR_RESERVED5            (16+RESERVED5_IRQn)
135 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
136 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
137 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
138 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
139 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
140 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
141 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
142 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
143 #define IRQ_VECTOR_GINT0                (16+GINT0_IRQn)
144 #define IRQ_VECTOR_GINT1                (16+GINT1_IRQn)
145 #define IRQ_VECTOR_EVENTROUTER          (16+EVENTROUTER_IRQn)
146 #define IRQ_VECTOR_C            (16+C_IRQn)
147 #define IRQ_VECTOR_RESERVED6            (16+RESERVED6_IRQn)
148 #define IRQ_VECTOR_RESERVED7            (16+RESERVED7_IRQn)
149 #define IRQ_VECTOR_ATIMER               (16+ATIMER_IRQn)
150 #define IRQ_VECTOR_RTC          (16+RTC_IRQn)
151 #define IRQ_VECTOR_RESERVED8            (16+RESERVED8_IRQn)
152 #define IRQ_VECTOR_WWDT         (16+WWDT_IRQn)
153 #define IRQ_VECTOR_RESERVED9            (16+RESERVED9_IRQn)
154 #define IRQ_VECTOR_C            (16+C_IRQn)
155 #define IRQ_VECTOR_QEI          (16+QEI_IRQn)
156
157 /**
158  *  \brief 割込みハンドラ番号定義
159  *  \details
160  *  NXP提供のCMSIS LPC18xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
161  *  \code
162  *  sed -e "s/  //" < irqs | sed -e "s/_.*$//" | awk '{print("#define INHNO_"$1"\t\tIRQ_VECTOR_"$1)}' -
163  *  \endcode
164  *  XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
165  *  INHNO_XXXXを例外番号として宣言している。つまりIRQ_VECTOR_XXXと同じ値である
166  */
167
168 #define INHNO_DAC               IRQ_VECTOR_DAC
169 #define INHNO_RESERVED0         IRQ_VECTOR_RESERVED0
170 #define INHNO_DMA               IRQ_VECTOR_DMA
171 #define INHNO_RESERVED1         IRQ_VECTOR_RESERVED1
172 #define INHNO_RESERVED2         IRQ_VECTOR_RESERVED2
173 #define INHNO_ETHERNET          IRQ_VECTOR_ETHERNET
174 #define INHNO_SDIO              IRQ_VECTOR_SDIO
175 #define INHNO_LCD               IRQ_VECTOR_LCD
176 #define INHNO_USB0              IRQ_VECTOR_USB0
177 #define INHNO_USB1              IRQ_VECTOR_USB1
178 #define INHNO_SCT               IRQ_VECTOR_SCT
179 #define INHNO_RITIMER           IRQ_VECTOR_RITIMER
180 #define INHNO_TIMER0            IRQ_VECTOR_TIMER0
181 #define INHNO_TIMER1            IRQ_VECTOR_TIMER1
182 #define INHNO_TIMER2            IRQ_VECTOR_TIMER2
183 #define INHNO_TIMER3            IRQ_VECTOR_TIMER3
184 #define INHNO_MCPWM             IRQ_VECTOR_MCPWM
185 #define INHNO_ADC0              IRQ_VECTOR_ADC0
186 #define INHNO_I2C0              IRQ_VECTOR_I2C0
187 #define INHNO_I2C1              IRQ_VECTOR_I2C1
188 #define INHNO_RESERVED3         IRQ_VECTOR_RESERVED3
189 #define INHNO_ADC1              IRQ_VECTOR_ADC1
190 #define INHNO_SSP0              IRQ_VECTOR_SSP0
191 #define INHNO_SSP1              IRQ_VECTOR_SSP1
192 #define INHNO_USART0            IRQ_VECTOR_USART0
193 #define INHNO_UART1             IRQ_VECTOR_UART1
194 #define INHNO_USART2            IRQ_VECTOR_USART2
195 #define INHNO_USART3            IRQ_VECTOR_USART3
196 #define INHNO_I2S0              IRQ_VECTOR_I2S0
197 #define INHNO_I2S1              IRQ_VECTOR_I2S1
198 #define INHNO_RESERVED4         IRQ_VECTOR_RESERVED4
199 #define INHNO_RESERVED5         IRQ_VECTOR_RESERVED5
200 #define INHNO_PIN               IRQ_VECTOR_PIN
201 #define INHNO_PIN               IRQ_VECTOR_PIN
202 #define INHNO_PIN               IRQ_VECTOR_PIN
203 #define INHNO_PIN               IRQ_VECTOR_PIN
204 #define INHNO_PIN               IRQ_VECTOR_PIN
205 #define INHNO_PIN               IRQ_VECTOR_PIN
206 #define INHNO_PIN               IRQ_VECTOR_PIN
207 #define INHNO_PIN               IRQ_VECTOR_PIN
208 #define INHNO_GINT0             IRQ_VECTOR_GINT0
209 #define INHNO_GINT1             IRQ_VECTOR_GINT1
210 #define INHNO_EVENTROUTER               IRQ_VECTOR_EVENTROUTER
211 #define INHNO_C         IRQ_VECTOR_C
212 #define INHNO_RESERVED6         IRQ_VECTOR_RESERVED6
213 #define INHNO_RESERVED7         IRQ_VECTOR_RESERVED7
214 #define INHNO_ATIMER            IRQ_VECTOR_ATIMER
215 #define INHNO_RTC               IRQ_VECTOR_RTC
216 #define INHNO_RESERVED8         IRQ_VECTOR_RESERVED8
217 #define INHNO_WWDT              IRQ_VECTOR_WWDT
218 #define INHNO_RESERVED9         IRQ_VECTOR_RESERVED9
219 #define INHNO_C         IRQ_VECTOR_C
220 #define INHNO_QEI               IRQ_VECTOR_QEI
221 #define INHNO_          IRQ_VECTOR_
222
223 /**
224  *  \brief TOPPERS/ASP割込み番号定義
225  *  \details
226  *  NXP提供のCMSIS LPC18xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
227  *  \code
228  *  sed -e "s/  //" < irqs | sed -e "s/_.*$//" | awk '{print("#define INTNO_"$1"\t\tIRQ_VECTOR_"$1)}' -
229  *  \endcode
230  *  XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
231  *  INTNO_XXXXを例外番号として宣言している。つまりIRQ_VECTOR_XXXと同じ値である
232  */
233 #define INTNO_DAC               IRQ_VECTOR_DAC
234 #define INTNO_RESERVED0         IRQ_VECTOR_RESERVED0
235 #define INTNO_DMA               IRQ_VECTOR_DMA
236 #define INTNO_RESERVED1         IRQ_VECTOR_RESERVED1
237 #define INTNO_RESERVED2         IRQ_VECTOR_RESERVED2
238 #define INTNO_ETHERNET          IRQ_VECTOR_ETHERNET
239 #define INTNO_SDIO              IRQ_VECTOR_SDIO
240 #define INTNO_LCD               IRQ_VECTOR_LCD
241 #define INTNO_USB0              IRQ_VECTOR_USB0
242 #define INTNO_USB1              IRQ_VECTOR_USB1
243 #define INTNO_SCT               IRQ_VECTOR_SCT
244 #define INTNO_RITIMER           IRQ_VECTOR_RITIMER
245 #define INTNO_TIMER0            IRQ_VECTOR_TIMER0
246 #define INTNO_TIMER1            IRQ_VECTOR_TIMER1
247 #define INTNO_TIMER2            IRQ_VECTOR_TIMER2
248 #define INTNO_TIMER3            IRQ_VECTOR_TIMER3
249 #define INTNO_MCPWM             IRQ_VECTOR_MCPWM
250 #define INTNO_ADC0              IRQ_VECTOR_ADC0
251 #define INTNO_I2C0              IRQ_VECTOR_I2C0
252 #define INTNO_I2C1              IRQ_VECTOR_I2C1
253 #define INTNO_RESERVED3         IRQ_VECTOR_RESERVED3
254 #define INTNO_ADC1              IRQ_VECTOR_ADC1
255 #define INTNO_SSP0              IRQ_VECTOR_SSP0
256 #define INTNO_SSP1              IRQ_VECTOR_SSP1
257 #define INTNO_USART0            IRQ_VECTOR_USART0
258 #define INTNO_UART1             IRQ_VECTOR_UART1
259 #define INTNO_USART2            IRQ_VECTOR_USART2
260 #define INTNO_USART3            IRQ_VECTOR_USART3
261 #define INTNO_I2S0              IRQ_VECTOR_I2S0
262 #define INTNO_I2S1              IRQ_VECTOR_I2S1
263 #define INTNO_RESERVED4         IRQ_VECTOR_RESERVED4
264 #define INTNO_RESERVED5         IRQ_VECTOR_RESERVED5
265 #define INTNO_PIN               IRQ_VECTOR_PIN
266 #define INTNO_PIN               IRQ_VECTOR_PIN
267 #define INTNO_PIN               IRQ_VECTOR_PIN
268 #define INTNO_PIN               IRQ_VECTOR_PIN
269 #define INTNO_PIN               IRQ_VECTOR_PIN
270 #define INTNO_PIN               IRQ_VECTOR_PIN
271 #define INTNO_PIN               IRQ_VECTOR_PIN
272 #define INTNO_PIN               IRQ_VECTOR_PIN
273 #define INTNO_GINT0             IRQ_VECTOR_GINT0
274 #define INTNO_GINT1             IRQ_VECTOR_GINT1
275 #define INTNO_EVENTROUTER               IRQ_VECTOR_EVENTROUTER
276 #define INTNO_C         IRQ_VECTOR_C
277 #define INTNO_RESERVED6         IRQ_VECTOR_RESERVED6
278 #define INTNO_RESERVED7         IRQ_VECTOR_RESERVED7
279 #define INTNO_ATIMER            IRQ_VECTOR_ATIMER
280 #define INTNO_RTC               IRQ_VECTOR_RTC
281 #define INTNO_RESERVED8         IRQ_VECTOR_RESERVED8
282 #define INTNO_WWDT              IRQ_VECTOR_WWDT
283 #define INTNO_RESERVED9         IRQ_VECTOR_RESERVED9
284 #define INTNO_C         IRQ_VECTOR_C
285 #define INTNO_QEI               IRQ_VECTOR_QEI
286
287 #ifndef TOPPERS_MACRO_ONLY
288
289 #endif /* TOPPERS_MACRO_ONLY */
290 #endif /* TOPPERS_CHIP_LPC17XX_H */
291
292 /**
293  * \}
294  */