=====================================================================
                    ST32F(GCC)プロセッサ依存部 
                                  Last Modified: 2012 Feb 23 14:38:54
=====================================================================

○概要

STM32Fターゲット依存部は，ST社のST32Fシリーズをサポートしている．現状
では，一部のSTM32Fシリーズのみをサポートしている．今後サポートチップを
増やす予定である．ST32Fシリーズを確認済みのチップで動作された方は，連
絡をいただけると幸いです．


○確認済みのチップ

・STM32F103VB(Cortex-M3)


○カーネルの使用リソース

カーネルは以下のリソースを使用する．

  ・ROM
     コードを配置する．
     使用量は使用するAPIの数に依存する．

  ・RAM
     データを配置する．
     使用量はオブジェクト数に依存する．
  
  ・SysTick
     カーネル内部のティックの生成に用いる．

          
○コンパイラ

GCC 4.4.1  (Sourcery G++ Lite 2010q1-188) で動作確認を行った．


○割込み優先度

割込み優先度として指定可能な範囲は，-15 〜 -1 である．


○ターゲットボード依存部の作成方法

以下の内容をターゲットボード依存部に追加すること．STBEE(GCC)ターゲット
依存部の内容をコピーして変更すると作成が容易である．

●初期化処理

以下の初期化ルーチンにターゲット毎の初期化を追加する．STM32Fターゲット
依存部ではプロセッサクロック(RCC)やI/Oポートの初期化は行わないため，タ
ーゲットボード依存部で初期化を行うこと．

  ・target_initialize() : target_config.c
    ターゲット依存部の初期化（C言語）
    
  ・_hardware_init_hook : target_support.S(必要な場合)
    低レベルのターゲット依存の初期化
    スタートアップモジュールの中で，メモリの初期化の前に呼び出される

●Makefile.target の設定項目

ボード名, チップ名，コア名，開発環境名の定義
・BOARD
  ボード名を設定
・CHIP
  "stm32f"を設定
・PRC
  "arm_m"を設定
・TOOL
  "gcc"を設定
  
GNU開発環境のターゲットアーキテクチャの定義  
・GCC_TARGET
  使用するコンパイラのプリフィックスを追加．
  
コンパイルオプション  
・INCLUDES
  インクルード指定
・COPTS
  Cコンパイラへのオプション
・LDFLAGS
  リンカへのオプション
  標準ライブラリをリンクしない場合は"-nostdlib"を指定する．
  
カーネルに関する定義
・KERNEL_DIR
  カーネルディレクトリの指定．
・KERNEL_ASMOBJS
  カーネルアセンブラオブジェクトの指定
・KERNEL_COBJS
  カーネルCオブジェクトの指定
・KERNEL_CFLAGS
  カーネルオブジェクトコンパイル時のCコンパイラへのオプション
  
システムサービスに関する定義
・SYSSVC_DIR
  システムサービスのディレクトリの指定
・SYSSVC_COBJS
  システムサービスのオブジェクトの指定
  stm32fプロセッサ依存部のUSARTのドライバを使用する場合は，usart.oを指
  定する．
  
リンカスクリプトの定義
・LDSCRIPT
  使用するリンカスクリプトを指定する．
  
スタートアップモジュールに関する定義  
・HIDDEN_OBJS
  スタートアップモジュールの指定
  ARM_Mプロセッサ依存部のスタートアップルーチンを用いる場合には，
  start.oを指定．

・スタートアップモジュールの生成ルール
  以下の内容を追加する．
---------------------------------------------------------------
$(HIDDEN_OBJS): %.o: %.S
	$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<

$(HIDDEN_OBJS:.o=.d): %.d: %.S
	@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
---------------------------------------------------------------

チップ依存部のインクルード
・以下の内容を追加する．
 include $(SRCDIR)/arch/$(PRC)_$(TOOL)/$(CHIP)/Makefile.chip
      
●target_config.h の設定項目

・DEFAULT_ISTKSZ
  ディフォルトの非タスクコンテキスト用のスタックサイズ

・SIL_DLY_TIM1/2
  微少時間待ちのための定義

・SIO_PORTID
  使用するシリアルポートID
  
・IDLE処理の定義(オプション)  
  アイドル時の処理を変更したい場合に定義．
  
・chip_config.h のインクルード
  
●target_config.c の設定項目
・初期化関数の定義
  target_initialize()
  
・終了処理関数の定義
  target_exit()
  
・システムログの低レベル出力のための文字出力
  target_fput_log()
  
●target_syssvc.h の設定項目

・TARGET_NAME
  起動メッセージのターゲットシステム名
  
・TNUM_PORT/TNUM_SIOP 
  シリアルポート数の定義
  
・LOGTASK_PORTID
  ログタスクが使用するポートIDの指定

・BPS_SETTING
  コンソールに使用するポートのボーレート

・chip_syssvc.h のインクルード

●target_timer.h の設定項目

・TIMER_CLOCK
  タイマ値の内部表現とﾐﾘ秒単位との変換
  
・INTPRI_TIMER
  タイマ割込みの割込み優先度
  
・INTATR_TIMER
  タイマ割込みの割込み属性
  
●target_timer.cfg の設定項目  

・コア依存部のコンフィギュレーションファイルのインクルード．
  INCLUDE("arm_m_gcc/common/core_timer.cfg");
  
●target_stddef.h の設定項目  
・システム略称の定義

・chip_stddef.hのインクルード

●target_serial.h の設定項目  
・INTPRI_SIO
  シリアルポートの優先度

・INTATR_SIO
  シリアルポートの割り込み属性

●target_serial.cfgの設定項目
・初期化ルーチンの登録
  ATT_INI({ TA_NULL, 0, sio_initialize });
  
・割込みサービスルーチンの登録
  ATT_ISR({ TA_NULL, SIO_PORTID, INTNO_SIO, sio_isr, 1 });
  
・割込み要求ラインのコンフィギュレーション
  CFG_INT(INTNO_SIO, { TA_ENAINT|INTATR_SIO, INTPRI_SIO });

●target_kernel.h          
・chip_kernel.hのインクルード

●target_check.tf
・chip_check.t のインクルード．

●target_cfg1_out.h
・chip_cfg1_out.h のインクルード

●target_asm.inc
・chip_cfg1_out.hのインクルード

●target.tf
・chip.tfのインクルード

●target_test.h
・STACK_SIZE(オプション)
  サンプルプログラムのディフォルトのスタックサイズの変更．
  
○変更履歴

2012/02/23
・uart.h
  ・SIO_PORTIDをSIO_PORIDと記述していた問題を修正．

2011/11/28
・新規追加 
