OSDN Git Service

Merge branch 'experimental-1843-clean'
[toppersasp4lpc/asp.git] / asp / arch / arm_m_gcc / lpc4300_gcc / chip_user.txt
diff --git a/asp/arch/arm_m_gcc/lpc4300_gcc/chip_user.txt b/asp/arch/arm_m_gcc/lpc4300_gcc/chip_user.txt
new file mode 100644 (file)
index 0000000..bfa3a0a
--- /dev/null
@@ -0,0 +1,197 @@
+=====================================================================
+                CHIP_LPC18XXチップ依存部 (asp-1.7.0対応)
+                            Last Modified: 2012/Oct/06
+=====================================================================
+
+このチップ依存部は、TOPPERS/ASP 1.7.0対応 LPC17XX依存部を元に開発した。
+
+(1) 対応しているターゲットシステムの種類・構成,バージョン番号
+
+       ・ターゲットハードウェア(ボード等)の名称と対応している構成
+               NXP製LPC18シリーズに共有のチップ依存部
+
+       ・ターゲット略称
+               lpc18xx_gcc
+       
+       ・ターゲット非依存部のバージョン番号
+               1.7
+       
+       ・プロセッサ,チップ,開発環境依存部の構成とバージョン番号
+               1.7.1
+               
+       ・使用するPDICとバージョン番号
+               ターゲットに選択は任せてあるが、標準でpdic/uartを用意している。
+
+(2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
+
+       ・言語処理系(コンパイラ,アセンブラ,リンカ等)
+               gcc version 4.6.3 (Sourcery CodeBench Lite 2012.03-56) 
+       
+       ・デバッグ環境
+               GNU gdb (Sourcery G++ Lite 2010q1-188) 7.0.50.20100218-cvs
+               Open On-Chip Debugger 0.4.0 (2010-08-12-22:40)
+               HJ/LINK USB
+               LPC1830 Xplorer
+
+(3) ターゲット定義事項の規定
+(3-1) データ型に関する規定
+(3-2) 割込み処理に関する規定
+ //TODO 現時点ではっきりとは判明していない
+ TMIN_INTPRIは -7 である。詳細は chip_kernel.hを参照。
+
+
+       以下の割り込みベクトル用インデックスを使用している。INHNO_XXXおよびINTNO_XXXも同じ値を持つ。
+#define IRQ_VECTOR_DAC         (16+DAC_IRQn)
+#define IRQ_VECTOR_RESERVED0           (16+RESERVED0_IRQn)
+#define IRQ_VECTOR_DMA         (16+DMA_IRQn)
+#define IRQ_VECTOR_RESERVED1           (16+RESERVED1_IRQn)
+#define IRQ_VECTOR_RESERVED2           (16+RESERVED2_IRQn)
+#define IRQ_VECTOR_ETHERNET            (16+ETHERNET_IRQn)
+#define IRQ_VECTOR_SDIO                (16+SDIO_IRQn)
+#define IRQ_VECTOR_LCD         (16+LCD_IRQn)
+#define IRQ_VECTOR_USB0                (16+USB0_IRQn)
+#define IRQ_VECTOR_USB1                (16+USB1_IRQn)
+#define IRQ_VECTOR_SCT         (16+SCT_IRQn)
+#define IRQ_VECTOR_RITIMER             (16+RITIMER_IRQn)
+#define IRQ_VECTOR_TIMER0              (16+TIMER0_IRQn)
+#define IRQ_VECTOR_TIMER1              (16+TIMER1_IRQn)
+#define IRQ_VECTOR_TIMER2              (16+TIMER2_IRQn)
+#define IRQ_VECTOR_TIMER3              (16+TIMER3_IRQn)
+#define IRQ_VECTOR_MCPWM               (16+MCPWM_IRQn)
+#define IRQ_VECTOR_ADC0                (16+ADC0_IRQn)
+#define IRQ_VECTOR_I2C0                (16+I2C0_IRQn)
+#define IRQ_VECTOR_I2C1                (16+I2C1_IRQn)
+#define IRQ_VECTOR_RESERVED3           (16+RESERVED3_IRQn)
+#define IRQ_VECTOR_ADC1                (16+ADC1_IRQn)
+#define IRQ_VECTOR_SSP0                (16+SSP0_IRQn)
+#define IRQ_VECTOR_SSP1                (16+SSP1_IRQn)
+#define IRQ_VECTOR_USART0              (16+USART0_IRQn)
+#define IRQ_VECTOR_UART1               (16+UART1_IRQn)
+#define IRQ_VECTOR_USART2              (16+USART2_IRQn)
+#define IRQ_VECTOR_USART3              (16+USART3_IRQn)
+#define IRQ_VECTOR_I2S0                (16+I2S0_IRQn)
+#define IRQ_VECTOR_I2S1                (16+I2S1_IRQn)
+#define IRQ_VECTOR_RESERVED4           (16+RESERVED4_IRQn)
+#define IRQ_VECTOR_RESERVED5           (16+RESERVED5_IRQn)
+#define IRQ_VECTOR_PIN         (16+PIN_IRQn)
+#define IRQ_VECTOR_PIN         (16+PIN_IRQn)
+#define IRQ_VECTOR_PIN         (16+PIN_IRQn)
+#define IRQ_VECTOR_PIN         (16+PIN_IRQn)
+#define IRQ_VECTOR_PIN         (16+PIN_IRQn)
+#define IRQ_VECTOR_PIN         (16+PIN_IRQn)
+#define IRQ_VECTOR_PIN         (16+PIN_IRQn)
+#define IRQ_VECTOR_PIN         (16+PIN_IRQn)
+#define IRQ_VECTOR_GINT0               (16+GINT0_IRQn)
+#define IRQ_VECTOR_GINT1               (16+GINT1_IRQn)
+#define IRQ_VECTOR_EVENTROUTER         (16+EVENTROUTER_IRQn)
+#define IRQ_VECTOR_C           (16+C_IRQn)
+#define IRQ_VECTOR_RESERVED6           (16+RESERVED6_IRQn)
+#define IRQ_VECTOR_RESERVED7           (16+RESERVED7_IRQn)
+#define IRQ_VECTOR_ATIMER              (16+ATIMER_IRQn)
+#define IRQ_VECTOR_RTC         (16+RTC_IRQn)
+#define IRQ_VECTOR_RESERVED8           (16+RESERVED8_IRQn)
+#define IRQ_VECTOR_WWDT                (16+WWDT_IRQn)
+#define IRQ_VECTOR_RESERVED9           (16+RESERVED9_IRQn)
+#define IRQ_VECTOR_C           (16+C_IRQn)
+#define IRQ_VECTOR_QEI         (16+QEI_IRQn)
+
+(3-3) カーネル管理外の割込みに関する規定
+(3-4) CPU例外処理に関する規定
+(3-5) 性能評価用システム時刻の参照に関する規定
+(3-6) オーバランハンドラ機能拡張のサポートに関する規定
+(3-7) その他
+
+(4) カーネルの起動/終了処理に関する情報
+       ・用意しているスタートアップモジュールの処理内容
+               chip_initialize()では、core_initialize()を呼び出してプロセッサを初期化する。
+               
+       ・hardware_init_hook
+               SCB_CCR_STKALIGN_Mskをクリアして、例外割り込みのアライメントをCORETX-M3 rev 1に
+               あわせている。
+               
+       ・カーネルを終了した後の振舞い
+               chip_exit()はcore_terminate()を呼ぶ。
+               
+
+(5) メモリマップ
+       ターゲット依存部で決定するので、チップ依存部はメモリマップを操作しない。
+
+(6) タイマドライバ関連の情報
+
+       ・タイムティックの周期,その変更方法
+               タイムティックはchip_timer.hによって変更できる。周期を変更した場合、
+               chip_kernel.hのTIC_NUME, TIC_DENOを変更して1mSを生成する方法をカーネルに知らせる。      
+       
+       ・使用するリソース(タイマ)
+               SYSTICKタイマーを使う。
+       
+       ・タイマ割込みの割込み優先度の変更方法
+               chip_timer.hのINTPRI_TIMERを変更する。
+               
+       ・オーバランタイマ割込みの割込み優先度の変更方法
+
+(7) シリアルインタフェースドライバの情報
+
+       target_user.txtを参照。
+
+(8) システムログ機能の情報
+
+       ・システムログの低レベル出力の実現方法
+               target_config.hのtarget_fput_log()が使用できるよう、chip_fput_log()を用意している。
+               
+(9) システム構築手順
+
+       target_user.txt参照
+
+(10) ターゲットシステム固有の注意事項
+
+(10) 類似のターゲットにポーティングする開発者向けの参考情報
+       CORTEX-M3を使った他のチップにポーティングする場合には、以下のオブジェクトを修正する
+       
+       lpc18xx.h                               (名前をチップ識別名に変更する)
+               CMSIS                                   インクルードするCMSISヘッダファイルを変更する
+               TMAX_INTNO                              最大の割り込みインデックス番号
+               TBITW_IPRI                              NVICの割り込み優先順位のビット幅
+               TBITW_SUBIPRI                   NVICのサブプライオリティのビット幅
+               割り込みベクトル番号          チップに沿った宣言に変更する。
+               
+       chip_config.h
+               initPLL1()                              PLL初期化シーケンスはチップ依存である
+               
+       chip_config.c
+               chip_initilaize()               初期化時にチップ依存の特殊処理が必要なら変更する
+               chip_exit()                             終了時にチップ依存の特殊処理が必要なら変更する
+               chip_fput_log()                 使用するSIOドライバが変わるなら変更する
+               initPLL0()                              PLL初期化シーケンスはチップ依存である
+               hardware_init_hook              チップに強く依存するので必ず変更する
+               
+       chip_kernel.h
+               TMIN_INTPRI                             最大割り込み優先度
+               
+       chip_stddef.h
+               TOPPERS_CHIP_LPC18XX    ターゲット識別マクロ。ターゲット識別名を大文字にし、頭に
+                                                               TOPPERS_CHIP_をつける。
+                       
+       chip_syssvc.h
+               SIO_UART_CLOCK                  pdc/uartを使用する場合、UARTに入力されるクロックの周波数を宣言する
+               CHIP_COPYRIGHT                  チップ依存部の著作権表示文字列
+               
+       chip_timer.h
+               TIMER_CLOCK                             CPUクロックとタイマー周期の比
+
+TBITW_IPRIとTMIN_INTPRIを間違えると、割り込み禁止が正常に動作しない、割り込み時に
+アサーションが起きるなどの致命的問題が発生するので注意。
+
+(12) ディレクトリ構成・ファイル構成
+       target_user.txtを参照。
+
+(13) バージョン履歴
+
+2012/Oct/6
+       ver 1.7.1
+
+
+
+
+