OSDN Git Service

LPC4330i存部のコードを追加。ビルドが通る。
[toppersasp4lpc/asp.git] / asp / arch / arm_m_gcc / lpc4300_gcc / chip_user.txt
1 =====================================================================
2                 CHIP_LPC18XXチップ依存部 (asp-1.7.0対応)
3                             Last Modified: 2012/Oct/06
4 =====================================================================
5
6 このチップ依存部は、TOPPERS/ASP 1.7.0対応 LPC17XX依存部を元に開発した。
7
8 (1) 対応しているターゲットシステムの種類・構成,バージョン番号
9
10         ・ターゲットハードウェア(ボード等)の名称と対応している構成
11                 NXP製LPC18シリーズに共有のチップ依存部
12
13         ・ターゲット略称
14                 lpc18xx_gcc
15         
16         ・ターゲット非依存部のバージョン番号
17                 1.7
18         
19         ・プロセッサ,チップ,開発環境依存部の構成とバージョン番号
20                 1.7.1
21                 
22         ・使用するPDICとバージョン番号
23                 ターゲットに選択は任せてあるが、標準でpdic/uartを用意している。
24
25 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
26
27         ・言語処理系(コンパイラ,アセンブラ,リンカ等)
28                 gcc version 4.6.3 (Sourcery CodeBench Lite 2012.03-56) 
29         
30         ・デバッグ環境
31                 GNU gdb (Sourcery G++ Lite 2010q1-188) 7.0.50.20100218-cvs
32                 Open On-Chip Debugger 0.4.0 (2010-08-12-22:40)
33                 HJ/LINK USB
34                 LPC1830 Xplorer
35
36 (3) ターゲット定義事項の規定
37 (3-1) データ型に関する規定
38 (3-2) 割込み処理に関する規定
39  
40  //TODO 現時点ではっきりとは判明していない
41  TMIN_INTPRIは -7 である。詳細は chip_kernel.hを参照。
42
43
44         以下の割り込みベクトル用インデックスを使用している。INHNO_XXXおよびINTNO_XXXも同じ値を持つ。
45 #define IRQ_VECTOR_DAC          (16+DAC_IRQn)
46 #define IRQ_VECTOR_RESERVED0            (16+RESERVED0_IRQn)
47 #define IRQ_VECTOR_DMA          (16+DMA_IRQn)
48 #define IRQ_VECTOR_RESERVED1            (16+RESERVED1_IRQn)
49 #define IRQ_VECTOR_RESERVED2            (16+RESERVED2_IRQn)
50 #define IRQ_VECTOR_ETHERNET             (16+ETHERNET_IRQn)
51 #define IRQ_VECTOR_SDIO         (16+SDIO_IRQn)
52 #define IRQ_VECTOR_LCD          (16+LCD_IRQn)
53 #define IRQ_VECTOR_USB0         (16+USB0_IRQn)
54 #define IRQ_VECTOR_USB1         (16+USB1_IRQn)
55 #define IRQ_VECTOR_SCT          (16+SCT_IRQn)
56 #define IRQ_VECTOR_RITIMER              (16+RITIMER_IRQn)
57 #define IRQ_VECTOR_TIMER0               (16+TIMER0_IRQn)
58 #define IRQ_VECTOR_TIMER1               (16+TIMER1_IRQn)
59 #define IRQ_VECTOR_TIMER2               (16+TIMER2_IRQn)
60 #define IRQ_VECTOR_TIMER3               (16+TIMER3_IRQn)
61 #define IRQ_VECTOR_MCPWM                (16+MCPWM_IRQn)
62 #define IRQ_VECTOR_ADC0         (16+ADC0_IRQn)
63 #define IRQ_VECTOR_I2C0         (16+I2C0_IRQn)
64 #define IRQ_VECTOR_I2C1         (16+I2C1_IRQn)
65 #define IRQ_VECTOR_RESERVED3            (16+RESERVED3_IRQn)
66 #define IRQ_VECTOR_ADC1         (16+ADC1_IRQn)
67 #define IRQ_VECTOR_SSP0         (16+SSP0_IRQn)
68 #define IRQ_VECTOR_SSP1         (16+SSP1_IRQn)
69 #define IRQ_VECTOR_USART0               (16+USART0_IRQn)
70 #define IRQ_VECTOR_UART1                (16+UART1_IRQn)
71 #define IRQ_VECTOR_USART2               (16+USART2_IRQn)
72 #define IRQ_VECTOR_USART3               (16+USART3_IRQn)
73 #define IRQ_VECTOR_I2S0         (16+I2S0_IRQn)
74 #define IRQ_VECTOR_I2S1         (16+I2S1_IRQn)
75 #define IRQ_VECTOR_RESERVED4            (16+RESERVED4_IRQn)
76 #define IRQ_VECTOR_RESERVED5            (16+RESERVED5_IRQn)
77 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
78 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
79 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
80 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
81 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
82 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
83 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
84 #define IRQ_VECTOR_PIN          (16+PIN_IRQn)
85 #define IRQ_VECTOR_GINT0                (16+GINT0_IRQn)
86 #define IRQ_VECTOR_GINT1                (16+GINT1_IRQn)
87 #define IRQ_VECTOR_EVENTROUTER          (16+EVENTROUTER_IRQn)
88 #define IRQ_VECTOR_C            (16+C_IRQn)
89 #define IRQ_VECTOR_RESERVED6            (16+RESERVED6_IRQn)
90 #define IRQ_VECTOR_RESERVED7            (16+RESERVED7_IRQn)
91 #define IRQ_VECTOR_ATIMER               (16+ATIMER_IRQn)
92 #define IRQ_VECTOR_RTC          (16+RTC_IRQn)
93 #define IRQ_VECTOR_RESERVED8            (16+RESERVED8_IRQn)
94 #define IRQ_VECTOR_WWDT         (16+WWDT_IRQn)
95 #define IRQ_VECTOR_RESERVED9            (16+RESERVED9_IRQn)
96 #define IRQ_VECTOR_C            (16+C_IRQn)
97 #define IRQ_VECTOR_QEI          (16+QEI_IRQn)
98
99 (3-3) カーネル管理外の割込みに関する規定
100 (3-4) CPU例外処理に関する規定
101 (3-5) 性能評価用システム時刻の参照に関する規定
102 (3-6) オーバランハンドラ機能拡張のサポートに関する規定
103 (3-7) その他
104
105 (4) カーネルの起動/終了処理に関する情報
106         ・用意しているスタートアップモジュールの処理内容
107                 chip_initialize()では、core_initialize()を呼び出してプロセッサを初期化する。
108                 
109         ・hardware_init_hook
110                 SCB_CCR_STKALIGN_Mskをクリアして、例外割り込みのアライメントをCORETX-M3 rev 1に
111                 あわせている。
112                 
113         ・カーネルを終了した後の振舞い
114                 chip_exit()はcore_terminate()を呼ぶ。
115                 
116
117 (5) メモリマップ
118         ターゲット依存部で決定するので、チップ依存部はメモリマップを操作しない。
119
120 (6) タイマドライバ関連の情報
121
122         ・タイムティックの周期,その変更方法
123                 タイムティックはchip_timer.hによって変更できる。周期を変更した場合、
124                 chip_kernel.hのTIC_NUME, TIC_DENOを変更して1mSを生成する方法をカーネルに知らせる。      
125         
126         ・使用するリソース(タイマ)
127                 SYSTICKタイマーを使う。
128         
129         ・タイマ割込みの割込み優先度の変更方法
130                 chip_timer.hのINTPRI_TIMERを変更する。
131                 
132         ・オーバランタイマ割込みの割込み優先度の変更方法
133
134 (7) シリアルインタフェースドライバの情報
135
136         target_user.txtを参照。
137
138 (8) システムログ機能の情報
139
140         ・システムログの低レベル出力の実現方法
141                 target_config.hのtarget_fput_log()が使用できるよう、chip_fput_log()を用意している。
142                 
143 (9) システム構築手順
144
145         target_user.txt参照
146
147 (10) ターゲットシステム固有の注意事項
148
149 (10) 類似のターゲットにポーティングする開発者向けの参考情報
150         CORTEX-M3を使った他のチップにポーティングする場合には、以下のオブジェクトを修正する
151         
152         lpc18xx.h                               (名前をチップ識別名に変更する)
153                 CMSIS                                   インクルードするCMSISヘッダファイルを変更する
154                 TMAX_INTNO                              最大の割り込みインデックス番号
155                 TBITW_IPRI                              NVICの割り込み優先順位のビット幅
156                 TBITW_SUBIPRI                   NVICのサブプライオリティのビット幅
157                 割り込みベクトル番号          チップに沿った宣言に変更する。
158                 
159         chip_config.h
160                 initPLL1()                              PLL初期化シーケンスはチップ依存である
161                 
162         chip_config.c
163                 chip_initilaize()               初期化時にチップ依存の特殊処理が必要なら変更する
164                 chip_exit()                             終了時にチップ依存の特殊処理が必要なら変更する
165                 chip_fput_log()                 使用するSIOドライバが変わるなら変更する
166                 initPLL0()                              PLL初期化シーケンスはチップ依存である
167                 hardware_init_hook              チップに強く依存するので必ず変更する
168                 
169         chip_kernel.h
170                 TMIN_INTPRI                             最大割り込み優先度
171                 
172         chip_stddef.h
173                 TOPPERS_CHIP_LPC18XX    ターゲット識別マクロ。ターゲット識別名を大文字にし、頭に
174                                                                 TOPPERS_CHIP_をつける。
175                         
176         chip_syssvc.h
177                 SIO_UART_CLOCK                  pdc/uartを使用する場合、UARTに入力されるクロックの周波数を宣言する
178                 CHIP_COPYRIGHT                  チップ依存部の著作権表示文字列
179                 
180         chip_timer.h
181                 TIMER_CLOCK                             CPUクロックとタイマー周期の比
182
183 TBITW_IPRIとTMIN_INTPRIを間違えると、割り込み禁止が正常に動作しない、割り込み時に
184 アサーションが起きるなどの致命的問題が発生するので注意。
185
186 (12) ディレクトリ構成・ファイル構成
187         target_user.txtを参照。
188
189 (13) バージョン履歴
190
191 2012/Oct/6
192         ver 1.7.1
193
194
195
196
197