1 =====================================================================
2 CHIP_LPC18XXチップ依存部 (asp-1.7.0対応)
3 Last Modified: 2012/Oct/06
4 =====================================================================
6 このチップ依存部は、TOPPERS/ASP 1.7.0対応 LPC17XX依存部を元に開発した。
8 (1) 対応しているターゲットシステムの種類・構成,バージョン番号
10 ・ターゲットハードウェア(ボード等)の名称と対応している構成
11 NXP製LPC18シリーズに共有のチップ依存部
19 ・プロセッサ,チップ,開発環境依存部の構成とバージョン番号
23 ターゲットに選択は任せてあるが、標準でpdic/uartを用意している。
25 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
27 ・言語処理系(コンパイラ,アセンブラ,リンカ等)
28 gcc version 4.6.3 (Sourcery CodeBench Lite 2012.03-56)
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)
40 //TODO 現時点ではっきりとは判明していない
41 TMIN_INTPRIは -7 である。詳細は chip_kernel.hを参照。
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)
99 (3-3) カーネル管理外の割込みに関する規定
101 (3-5) 性能評価用システム時刻の参照に関する規定
102 (3-6) オーバランハンドラ機能拡張のサポートに関する規定
105 (4) カーネルの起動/終了処理に関する情報
106 ・用意しているスタートアップモジュールの処理内容
107 chip_initialize()では、core_initialize()を呼び出してプロセッサを初期化する。
110 SCB_CCR_STKALIGN_Mskをクリアして、例外割り込みのアライメントをCORETX-M3 rev 1に
114 chip_exit()はcore_terminate()を呼ぶ。
118 ターゲット依存部で決定するので、チップ依存部はメモリマップを操作しない。
123 タイムティックはchip_timer.hによって変更できる。周期を変更した場合、
124 chip_kernel.hのTIC_NUME, TIC_DENOを変更して1mSを生成する方法をカーネルに知らせる。
130 chip_timer.hのINTPRI_TIMERを変更する。
132 ・オーバランタイマ割込みの割込み優先度の変更方法
134 (7) シリアルインタフェースドライバの情報
141 target_config.hのtarget_fput_log()が使用できるよう、chip_fput_log()を用意している。
147 (10) ターゲットシステム固有の注意事項
149 (10) 類似のターゲットにポーティングする開発者向けの参考情報
150 CORTEX-M3を使った他のチップにポーティングする場合には、以下のオブジェクトを修正する
152 lpc18xx.h (名前をチップ識別名に変更する)
153 CMSIS インクルードするCMSISヘッダファイルを変更する
154 TMAX_INTNO 最大の割り込みインデックス番号
155 TBITW_IPRI NVICの割り込み優先順位のビット幅
156 TBITW_SUBIPRI NVICのサブプライオリティのビット幅
157 割り込みベクトル番号 チップに沿った宣言に変更する。
160 initPLL1() PLL初期化シーケンスはチップ依存である
163 chip_initilaize() 初期化時にチップ依存の特殊処理が必要なら変更する
164 chip_exit() 終了時にチップ依存の特殊処理が必要なら変更する
165 chip_fput_log() 使用するSIOドライバが変わるなら変更する
166 initPLL0() PLL初期化シーケンスはチップ依存である
167 hardware_init_hook チップに強く依存するので必ず変更する
170 TMIN_INTPRI 最大割り込み優先度
173 TOPPERS_CHIP_LPC18XX ターゲット識別マクロ。ターゲット識別名を大文字にし、頭に
177 SIO_UART_CLOCK pdc/uartを使用する場合、UARTに入力されるクロックの周波数を宣言する
178 CHIP_COPYRIGHT チップ依存部の著作権表示文字列
181 TIMER_CLOCK CPUクロックとタイマー周期の比
183 TBITW_IPRIとTMIN_INTPRIを間違えると、割り込み禁止が正常に動作しない、割り込み時に
184 アサーションが起きるなどの致命的問題が発生するので注意。