makefileの設定方法

以下の解説は、ダウンロードコーナーで配布している最新版の開発環境を前提にしたものです。旧版の環境を使用する場合には、導入編を参照して下さい。

本書の開発環境では、どのマイコンボードを使用するか、どういった書き込み方法を使用するかといった設定は、makefileに記載されているマクロの切り替えで行います。自分が選択する項目のコメントを外し、他の項目はコメントにします。

配布している開発環境に含まれるmakefileがどのボード・どの書き込み方法を対象としているかは、随時変更されますので、必ず自分が使用する環境に合致しているか確認して下さい。

以下、各項目毎に、設定方法を解説します。

# select board name
#STM32_P103 = 1
#STM32_H103 = 1
#CQ_STARM = 1
#CQ_ST103Z = 1
#STM3210E_EVAL = 1
#STBee = 1
#STBee_Mini = 1
#STBee_Mini_SWD = 1
STM32_VLD = 1

使用するボードを選択します。
“STBee_Mini_SWD”はSWD用に回路を変更したSTBee miniを使用する場合に選択します。
“STM32_VLD”はSTM32 Value line discoveryを意味しています。

# select way to write flash
# ST-LINK via SWD but not with STVP is done by Debug button
# but not by make target
#FT2232_JTAG = 1
#STLINK_JTAG_GDB = 1
STLINK_SWD_STVP = 1
#VERSALOON_SWD = 1
#DFU = 1
#UART = 1

書き込み方法を選択します。

“STLINK_JTAG_GDB”はAtollic GDB Serverを使用してJTAGで書き込む場合に選択します。”STLINK_SWD_STVP”は、開発環境に同梱しているSTのAPISample.exeを使用してSWDで書き込む場合に選択します。”UART”は、開発環境に同梱しているSTのFlash Loaderを使用して、UARTシリアルで書き込む場合に選択します。

# select serial port for debug
USART1 = 1
#USART2 = 1
#USART3 = 1
#DCC = 1
#VCP = 1

本書の開発環境にはprintfデバッグ用として、パソコン上のターミナルにメッセージを出力するための、cprintf関数を実装しています。パソコンとマイコンボードを接続するためのインターフェースを選択します。
“USARTx”はマイコンボート上のUSARTxピンと、パソコンに接続したUSBシリアル変換アダプタ(UARTレベル)を接続して通信する場合に選択します。”DCC”はOpenOCDのDebug Communications Channel(DCC)を使用して、JTAG又はSWD経由で通信する場合に使用します。”VCP”は、STM32上のUSBデバイスポートをパソコンに接続し、パソコンにSTM32を仮想COMポート(Virtual COM Port)として認識させて通信する場合に使用します。STM32 Value line discoveryのターゲットマイコンにはUSBデバイスポートが無いため、仮想COMポートは使用できません。

# Uncomment below if you use USB
#USE_USB = 1

USBファームウェアライブラリをコンパイルするときに選択します。USB機能を使用しない場合にコメントを外したままでも問題なく動作しますが、コンパイル時間が若干長くなり、また、マイコンに書き込むためのバイナリファイルが大きくなる場合があります。仮想COMポートを使用する場合には、必ずコメントを外す必要があります。

# CPU can stop at start up until serial data send. This is for a wait until VCP connection.
#STOP_AT_START_UP = -DSTOP_AT_STARTUP

prinfデバッグを行う場合(cprintf関数を使用する場合)に、パソコン上のターミナルから何からのデータが送信されてくるまで、プログラムの実行を停止する場合に選択します。STM32を仮想COMポートとして使用する場合、マイコンが起動して、OSがSTM32を認識してからしか、ターミナルをマイコンに接続できません。その時点ではマイコン上のプログラムは既に実行中のため、プログラムの冒頭で出力されるデバッグメッセージを、ターミナルが受信することができません。そこでプログラムの実行を一時停止させたい場合に、この項目を使用します。

# Uncomment below if you use Free-RTOS
#USE_FREERTOS = 1

FreeRTOSを使用する場合に選択します。割り込みベクタテーブルが専用のものに変更されるので、FreeRTOSを使用しない場合には、選択しないでください。

# select way to connect SD card
#SD_SDIO = 1
SD_SPI = 1

SDカードにアクセスする際の周辺回路を選択します。

# select toolchain
#DEFAULT_PATH = 1
YAGARTO = 1
#CODESOURCERY = 1

使用するツールチェインを選択します。”YAGARTO”は開発環境に同梱しているYAGARTOのツールチェインを使用する場合に選択します。通常はこれを選択してください。”DEFAULT_PATH”は、OSのパスが通っているところにインストールされているツールチェインを使用します。CodeSourceryを使用する場合で、インストール時にパスを通していて、使用しているOSに本書の開発環境以外の開発環境、ツールチェインがインストールされていない場合に選択します。”CODESOURCERY”は、CodeSourceryを使用する場合で、複数種のツールチェイン・開発環境を使用していて、絶対パスでツールを実行したい場合に選択します。インストールされているフォルダが異なる場合には、後に現れるTOOLCHAIN_PATHを変更してください。

# Uncomment below if you make debug build
DEBUG = 1

デバッグオプション付き・最適化無しでコンパイルするときに選択します。プログラムの実行速度は遅くなりますが、デバッグの際に、コードをステップ実行させることができます。

# select ROM size to write using STVP
#STVP_ALL = 1
#STVP_32K = 1
STVP_20K = 1

書き込み方法で”STLINK_SWD_STVP”を選択した場合の選択項目です。STのAPISample.exeは、通常のバージョンだと、マイコンのメモリ全体を書き換えるので、実行に時間がかかります。書き込もうとしているプログラムのサイズが小さいのであれば、メモリ全体を書き換える必要が無いので、一部のみの書き換えをするバージョンを使用します。
“STVP_ALL”はメモリ全体を書き換える場合、”STVP_32K”はメモリ中32Kバイト分のみを書き換える場合、”STVP_20K”はメモリ中20Kバイト分のみを書き換える場合に選択します。実行ファイルのサイズは、main.hexやmain.binのファイルサイズではなく、main.mapで、ROMサイズをどこまで使用しているかで確認します。

# designate serial port number to connect UART1 using ST Flash Loader
FLASH_LOADER_PORT = 26

UARTを使ってフラッシュを書き換える場合に使用するCOMポート番号を指定します。