1 =====================================================================
2 CHIP_LPC17XXチップ依存部 (asp-1.6.0対応)
3 Last Modified: 2010/Oct/23
4 =====================================================================
6 このチップ依存部は、TOPPERS/ASP 1.3.2対応 CQ-STARM依存部を元に開発した。
8 (1) 対応しているターゲットシステムの種類・構成,バージョン番号
10 ・ターゲットハードウェア(ボード等)の名称と対応している構成
11 NXP製LPC17シリーズに共有のチップ依存部
19 ・プロセッサ,チップ,開発環境依存部の構成とバージョン番号
23 ターゲットに選択は任せてあるが、標準でpdic/uartを用意している。
25 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
27 ・言語処理系(コンパイラ,アセンブラ,リンカ等)
28 gcc version 4.4.1 (Sourcery G++ Lite 2010q1-188)
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)
39 以下の割り込みベクトル用インデックスを使用している。INHNO_XXXおよびINTNO_XXXも同じ値を持つ。
41 #define IRQ_VECTOR_WDT (16+WDT_IRQn)
42 #define IRQ_VECTOR_TIMER0 (16+TIMER0_IRQn)
43 #define IRQ_VECTOR_TIMER1 (16+TIMER1_IRQn)
44 #define IRQ_VECTOR_TIMER2 (16+TIMER2_IRQn)
45 #define IRQ_VECTOR_TIMER3 (16+TIMER3_IRQn)
46 #define IRQ_VECTOR_UART0 (16+UART0_IRQn)
47 #define IRQ_VECTOR_UART1 (16+UART1_IRQn)
48 #define IRQ_VECTOR_UART2 (16+UART2_IRQn)
49 #define IRQ_VECTOR_UART3 (16+UART3_IRQn)
50 #define IRQ_VECTOR_PWM1 (16+PWM1_IRQn)
51 #define IRQ_VECTOR_I2C0 (16+I2C0_IRQn)
52 #define IRQ_VECTOR_I2C1 (16+I2C1_IRQn)
53 #define IRQ_VECTOR_I2C2 (16+I2C2_IRQn)
54 #define IRQ_VECTOR_SPI (16+SPI_IRQn)
55 #define IRQ_VECTOR_SSP0 (16+SSP0_IRQn)
56 #define IRQ_VECTOR_SSP1 (16+SSP1_IRQn)
57 #define IRQ_VECTOR_PLL0 (16+PLL0_IRQn)
58 #define IRQ_VECTOR_RTC (16+RTC_IRQn)
59 #define IRQ_VECTOR_EINT0 (16+EINT0_IRQn)
60 #define IRQ_VECTOR_EINT1 (16+EINT1_IRQn)
61 #define IRQ_VECTOR_EINT2 (16+EINT2_IRQn)
62 #define IRQ_VECTOR_EINT3 (16+EINT3_IRQn)
63 #define IRQ_VECTOR_ADC (16+ADC_IRQn)
64 #define IRQ_VECTOR_BOD (16+BOD_IRQn)
65 #define IRQ_VECTOR_USB (16+USB_IRQn)
66 #define IRQ_VECTOR_CAN (16+CAN_IRQn)
67 #define IRQ_VECTOR_DMA (16+DMA_IRQn)
68 #define IRQ_VECTOR_I2S (16+I2S_IRQn)
69 #define IRQ_VECTOR_ENET (16+ENET_IRQn)
70 #define IRQ_VECTOR_RIT (16+RIT_IRQn)
71 #define IRQ_VECTOR_MCPWM (16+MCPWM_IRQn)
72 #define IRQ_VECTOR_QEI (16+QEI_IRQn)
73 #define IRQ_VECTOR_PLL1 (16+PLL1_IRQn)
74 #define IRQ_VECTOR_USBActivity (16+USBActivity_IRQn)
75 #define IRQ_VECTOR_CANActivity (16+CANActivity_IRQn)
77 (3-3) カーネル管理外の割込みに関する規定
79 (3-5) 性能評価用システム時刻の参照に関する規定
80 (3-6) オーバランハンドラ機能拡張のサポートに関する規定
83 (4) カーネルの起動/終了処理に関する情報
84 ・用意しているスタートアップモジュールの処理内容
85 chip_initialize()では、prc_initialize()を呼び出してプロセッサを初期化する。
88 SCB_CCR_STKALIGN_Mskをクリアして、例外割り込みのアライメントをCORETX-M3 rev 1に
92 chip_exit()はprc_terminate()を呼ぶ。
96 ターゲット依存部で決定するので、チップ依存部はメモリマップを操作しない。
101 タイムティックはchip_timer.hによって変更できる。周期を変更した場合、
102 chip_kernel.hのTIC_NUME, TIC_DENOを変更して1mSを生成する方法をカーネルに知らせる。
108 chip_timer.hのINTPRI_TIMERを変更する。
110 ・オーバランタイマ割込みの割込み優先度の変更方法
112 (7) シリアルインタフェースドライバの情報
119 target_config.hのtarget_fput_log()が使用できるよう、chip_fput_log()を用意している。
125 (10) ターゲットシステム固有の注意事項
127 (10) 類似のターゲットにポーティングする開発者向けの参考情報
128 CORTEX-M3を使った他のチップにポーティングする場合には、以下のオブジェクトを修正する
130 lpc17xx.h (名前をチップ識別名に変更する)
131 CMSIS インクルードするCMSISヘッダファイルを変更する
132 TMAX_INTNO 最大の割り込みインデックス番号
133 TBITW_IPRI NVICの割り込み優先順位のビット幅
134 TBITW_SUBIPRI NVICのサブプライオリティのビット幅
135 割り込みベクトル番号 チップに沿った宣言に変更する。
138 initPLL0() PLL初期化シーケンスはチップ依存である
141 chip_initilaize() 初期火事にチップ依存の特殊処理が必要なら変更する
142 chip_exit() 終了時にチップ依存の特殊処理が必要なら変更する
143 chip_fput_log() 使用するSIOドライバが変わるなら変更する
144 initPLL0() PLL初期化シーケンスはチップ依存である
145 hardware_init_hook チップに強く依存するので必ず変更する
148 TOPPERS_CHIP_LPC17XX ターゲット識別マクロ。ターゲット識別名を大文字にし、頭に
152 SIO_UART_CLOCK pdc/uartを使用する場合、UARTに入力されるクロックの周波数を宣言する
153 CHIP_COPYRIGHT チップ依存部の著作権表示文字列
156 TIMER_CLOCK CPUクロックとタイマー周期の比
158 LPC1700では、SYS_CLOCKを「CPUコアへの入力」としているが、チップによっては「PLLの出力」とする