===================================================================== NUCLEO_F401RE(GCC)ターゲット依存部 Last Modified:2017 Jan 13 19:30:50 ===================================================================== (1) 対応しているターゲットシステムの種類・構成 NUCLEO_F401RE(GCC)ターゲット依存部は,STM32F401RE(Cortex-M4F)を搭載し たSTマイクロ社のNUCLEO_F401REボードをサポートする.プロセッサ依存部と して,ST32F4XX_STM32CUBE(GCC)プロセッサ依存部をプロセッサ依存部として ARM_Mプロセッサ依存部を使用する. (2) 使用する開発環境と動作検証した条件(バージョン,オプション等) ・ライブラリ デバイスドライはSTM32Cube付属のライブラリを使用している.これらのファ イルのライセンスはTOPPERSライセンスでないため,注意すること. バージョンは次の通りである. F4 V 1.9.0 ・コンパイラ 以下の2種類のコンパイラで動作確認を行った. GCC 5.4.1 (Launchpad_5.4_2016q3) GCC 5.3.1 (Atollic TrueStudio付属) ・デバッグ環境 デバッグ環境としては,JTAGデバッガにST-LINK,デバッガとしてOpenOCD + GDBないし,Atollic TrueStudioを用いた環境で動作確認を行っている. 動作確認した OpenOCD は以下のバージョンである. 2.3.6 動作確認した TrueStudio は以下のバージョンである. V7.1.0 (3) ターゲット定義事項の規定 (4) メモリマップ 標準 内蔵FlashROM ・アドレス : 0x08000000 ・サイズ : 512KB ・配置セクション ・vectorセクション ・textセクション ・rodataセクション 内蔵RAM ・アドレス : 0x20000000 ・サイズ : 96KB ・dataセクション ・bssセクション (5) シリアルインタフェースドライバの情報 コンソール出力には,仮想COMポートに接続されているUSARTのチャネル2を用 いる.通信フォーマットは以下の通りである. ・1152200bps, Data 8bit, Parity none, Stop 1bit, Flow control none (6) システムログ機能の情報 システムログの低レベル出力は,UART2を用いる.通信フォーマットは, 115200bps, 8bit, non-parity, 1topbitである. (7) Atollic TrueStudio の使用 本パッケージは Atollic TrueStudio をサポートしている. TrueStudio は,Free版(サイズ制限なし)を以下からダウンロード可能である. http://timor.atollic.com/truestudio/ プロジェクトのビルドと実行方法 ./truestudio/asp/.cproject をTrueStudio開いて,./truestudioをワークス ペースとして指定する. メニュー -> プロジェクト -> プロジェクトのビルド を選択するとビルド が開始される. メニュー -> 実行 -> デバッグ を選択するとデバッグが開始される. (8) 他のNUCLEOボードのサポート 本パッケージはSTM32FCUBEに含まれているファイルを用いて,デバイス等の初 期化を行っているため,他のNUCLEOも容易にサポート可能である. F401REを例に手順をまとめる. ./target/nucleo_f401re_gcc/stm32fcube に以下のファイルをコピー \STM32Cube_FW_F4_V1.9.0\Projects\STM32F401RE-Nucleo\Templates\Inc\stm32f4xx_hal_conf.h \STM32Cube_FW_F4_V1.9.0\Projects\STM32F401RE-Nucleo\Templates\Src\system_stm32f4xx.c \STM32Cube_FW_F4_V1.9.0\Projects\STM32F411RE-Nucleo\Templates\Src\main.c \STM32Cube_FW_F4_V1.9.0\Drivers\BSP\STM32F4xx-Nucleo\stm32f4xx_nucleo.h \STM32Cube_FW_F4_V1.9.0\Drivers\BSP\STM32F4xx-Nucleo\stm32f4xx_nucleo.c それぞれ次のように変更 stm32f4xx_hal_conf.h ・必要なHALのコメントアウトを外す system_stm32f4xx.c ・SystemInitの最初にあるCPACRの初期化(FPUの初期化)をコメントアウト main.c ・SystemClock_Config()関数のみ残して,ファイル名をsystemclock_config.cに 変更. stm32f4xx_nucleo.c ・必要でない機能をコメントアウト ./arch/arm_m_gcc/stm32f4xx_stm32cube/ 以下に STM32Cube_FW_F4_V1.9.0\Drivers 以下の必要なファイルをコピー.面倒な場 合は全てコピーしてかまわない. ./target/nucleo_f401re_gcc/ 以下のファイルを変更 Makefile.target 22行目 : 使用するチップの型番を指定 CDEFS := $(CDEFS) -DSTM32F401xE stm32f401re.ld メモリマップを使用するチップに合わせて変更. MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K SRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K } target_config.h 割込みの最大数を使用するチップに合わせて変更(必ず+16すること). #define TMAX_INTNO (84 + 16) クロック周波数を使用するチップに合わせて変更. #define SYS_CLOCK 84000000 target_config.c target_initialize() を使用するチップに合わせて初期化処理を追加. usart_early_init() を使用するチップに合わせて初期化処理を追加. 全ファイル F401RE を,使用するチップの型番にリプレース. (9) ディレクトリ構成・ファイル構成 ./nucleo_f401re_gcc ./E_PACKAGE ./gdb.ini ./Makefile.target ./MANIFEST ./nucleo_f401re.h ./stm32f401re.ld ./target.cdl ./target.tf ./target_asm.inc ./target_cfg1_out.h ./target_check.trb ./target_kernel.cfg ./target_kernel.h ./target_kernel.trb ./target_kernel_impl.c ./target_kernel_impl.h ./target_rename.def ./target_rename.h ./target_sil.h ./target_stddef.h ./target_syssvc.h ./target_test.h ./target_timer.c ./target_timer.cfg ./target_timer.h ./target_unrename.h ./target_user.txt ./tPutLogTarget.c ./tPutLogTarget.cdl ./tSIOPortTarget.cdl ./tSIOPortTargetMain_inline.h ./stm32fcube ./stm32f4xx_hal_conf.h ./stm32f4xx_nucleo.c ./stm32f4xx_nucleo.h ./system_stm32f4xx.c ./systemclock_config.c ./truestudio (10)変更履歴 2017/1/13 ・新規作成 以上.