Tako can fry!

とほほ・・・

WinARMでDWM誌ARM付録基板の開発を行うときのメモ

DWM 誌 5 月号の ARM 付録基板のプログラムを開発する場合、付録についてきた開発環境を使うのもいいんですが、できあがるコードサイズに上限があります。(IAR ので 32KB、RealViewで 16KB の上限あり。)

ちょっとしたプログラムなら 32KB ぐらいで十分なんですが、ここはひとつフリーの開発環境に挑戦してみます。

ツールチェーンをビルドするのもいいけど、自分はビルドに失敗してしまったので、WinARM を使うことにしました。
以下、cygwin である程度環境が揃っているものとして話を進めていきます。


次のサイトから WinARM のアーカイブをダウンロードします。

ARM-Projects
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm

Another test-release にある 20080331 test-release を使います。
このバージョンに含まれる gcc から Cortex-M3 に対応しているようです。


c:/WinARM に展開されるので、次のディレクトリにパスを通します。

c:/WinARM/bin
c:/WinARM/utils/bin

自分は makefile 内でパスを通すことに。

export PATH := /cygdrive/c/WinARM/bin:/cygdrive/c/WinARM/utils/bin:$(PATH)


c:/WinARM/examples/STM32F103VHB6_RevZ_Demo1 にサンプルがあるので、これをビルドできるかどうか確認します。
なお、付録基板には USB 経由でプログラムをダウンロードできる仕組みが組み込まれていて、そのためにプログラムの開始アドレスをずらす必要があります。
開始アドレスについては st32.ld で定義されているので、これを 0x8000000 から 0x8003000 へ修正します。

FLASH (rx) : ORIGIN = 0x8003000, LENGTH = 116K


あとは make が通れば main.bin ができるので、これを .dfu へ変換して基板へダウンロードすることになります。
この手順については、5月号に記載の通りです。
(.bin だといちいち開始アドレスに 08003000 を設定しなおさなければならないので、.hex を出力するようにしておくといいかもしれません。)

OBJCPFLAGS = -O ihex

MAIN_OUT_BIN = $(MAIN_OUT).hex

ちなみに、このデモはそのままでは動かないので、注意してください。


ハマったポイント:

  • 環境変数 TEMP を定義していないと、gcc コマンドが実行されない
  • 標準関数を使うとハングする (strcpy、memmove、sprintf 等、自作する必要あり・・・)