STMicroelectronics社のARM Cortex-M3コアであるSTM32マイコン搭載のStrawberryLinux製STBeeボードです。
OLIMEX社のARM-USB-TINY-HというUSB-JTAGドングルを使ってプログラムの書込み&デバッグを行っています。
とんすけぶろぐ-stbee_jtag_pre
STBeeボードにはあらかじめDFUが書き込まれており、これによってJTAGドングルを用いずにUSBからプログラムを書込むことができます。
ですが私には不要なのでDFU領域(0x8000000からx8002fff番地)を消去して使っています。
当方開発環境はMac OS X 10.6 Snow LeopardでIDEであるEclipse上でコーディング・書込み・デバッグを行っています。
開発環境導入までにかなりてこずりましたがなんとか整いましたので記録しておきます。

・GNU ARMツールチェインをインストール
コンパイルなど開発に必要なツール一式です。
Sourcery G++ Liteのツールチェインが無償でダウンロードできます。 Macの場合ソースからコンパイルしてインストールしなくてはなりませんが、LeafLabsというサイトでMac OS X 用にコンパイル済みのものがダウンロード可能なので↓こちらを拝借しました。
http://static.leaflabs.com/pub/codesourceryからarm-2010q1-188-arm-none-eabi-toolchain-macosx32.tar.gzをダウンロードして解凍。
armディレクトリが出来上がるのでこれを/usr/localにコピー。
>sudo cp -rv arm /usr/local

ホームディレクトリに移動して.profileに実行パスを通しておきます
>cd ~
>echo 'PATH=$PATH:/usr/local/arm/bin' >> .profile
>echo export PATH >> .profile
>source .profile

・libusbをインストール
libusbはUSB-JTAGドングルを使うためには必須のライブラリです。
TWAIN SANE Interface for MacOS Xのサイトからインストーラパッケージがダウンロードできます。
当方Snow Leopard(10.6.x)のbinaryを選択してダウンロード&インストールしました。

・libftdiをインストール
JTAGドングルであるARM-USB-TINY-Hは内部にftdiチップが内蔵されているのでそのためのドライバを入れる。
Intra2netのhttp://www.intra2net.com/en/developer/libftdi/download.phpからlibftdi-0.18.tar.gzをダウンロードして解凍。
>cd libftdi-0.18
>./configure
>make
>sudo make install

・OpenOCDをインストール
OpenOCDはJTAGデバッグを実現するソフトウェアです。
http://sourceforge.net/projects/openocd/からopenocd-0.4.0.tar.bz2をダウンロードして解凍します。
>cd openocd-0.4.0
>./configure --enable-ft2232_libftdi
>make
>sudo make install

・OpenOCD起動テスト&DFUバックアップ
ここまで無事インストールができたらOpenOCDでJTAGドングルが動くかテストしてみる。
JTAGケーブルを挿してJTAGドングルとSTBeeボードのUSBケーブルをホストに接続。
>openocd -f /usr/local/share/openocd/scripts/interface/olimex-arm-usb-tiny-h.cfg -f /usr/local/share/openocd/scripts/target/stm32.cfg
上のように-fオプションでインターフェースとターゲットのコンフィギュアスクリプトを指定してOpenOCDを起動する。

無事起動できたら↓こんな感じのメッセージがでます。
Open On-Chip Debugger 0.4.0 (2011-02-03-02:19)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.berlios.de/doc/doxygen/bugs.html
1000 kHz
jtag_nsrst_delay: 100
jtag_ntrst_delay: 100
Info : max TCK change to: 30000 kHz
Info : clock speed 1000 kHz
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
Info : JTAG tap: stm32.bs tap/device found: 0x06414041 (mfg: 0x020, part: 0x6414, ver: 0x0)
Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints

これで4444番ポートを使ったOpenOCDサーバーが起動されるのでtelnetでログインしていろいろデバッグ指令を出して見る。

ローカルホストにポート番号4444でログイン
>telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger

haltで停止
>halt

内蔵フラッシュメモリのバンクを調べる
>flash banks
#0: stm32x at 0x08000000, size 0x00080000, buswidth 0, chipwidth 0

バンク#0の内容を調べる
> flash probe 0
device id = 0x10016414
flash size = 512kbytes
flash 'stm32x' found at 0x08000000

DFUをバックアップしておく
DFU領域は0x08000000からx8002fffの12288Byte(12KiByte)
イメージファイルはopenocdをコマンドで起動した場所に生成されますので大事にとっておきます。
> dump_image stbee_dfu_img.bin 0x8000000 12288
dumped 12288 bytes in 0.312765s (38.367 kb/s)

OpenOCDサーバーシャットダウン
>shutdown

・Eclipseのインストールとプロジェクトの設定&コンパイル
StrawberryLinuxのSTM32マイコンボードページからサンプルプロジェクトをダウンロードして解凍しておく。
http://strawberry-linux.com/pub/stb-led.zip
解凍したフォルダは/Users/ユーザ名/Documents/workspaceに移動させておく。

Eclipseのダウンロードページhttp://www.eclipse.org/downloads/から
Eclipse IDE for C/C++ Developersを選択し、Mac OS X 32 Bit版をダウンロード。
Eclipseを起動する。

メニューバーからFile->New->C Projectを選択。
Project Nameにstb-ledと入力してFinishをクリック。
$とんすけぶろぐ


するとコンソールに何やらエラーやウォーニングの類いがズラーっと出ますが気にせずメニューバーからProject->Propertiesをクリック。
とんすけぶろぐ-newprojectpropertypre


左リストからC/C++ Buildを選択し、Makefile generationグループのGenerate Makefiles auotomaticallyのチェックを外す。
Build locationグループのBuild directoryには末尾のDebugを消して${workspace_loc:/stb-led}とする。
とんすけぶろぐ-newprojectproperties1pre


左リストのC/C++ Buildの▼印をクリックしてリストを展開し、Envronmentをクリック。
Add...ボタンをクリックして、新たな環境変数PATHを追加する。
New variableウィンドウのNameにPATH、Valueに/usr/local/arm/bin:${PATH}と入力してOKをクリック。
とんすけぶろぐ-newprojectenviromentpre


これでProjectのPropertiesの設定は終ったので最後にOKをクリック。
するとビルドが勝手に始まりコンソールにelfバイナリの詳細情報がでてくるハズ。
$とんすけぶろぐ-successoutput


一応これでコンパイルはできるようになりました。
ですが、このサンプルプログラムはDFUからの書込みを想定しているためプログラムの開始アドレスがDFUの領域の分だけ後ろにシフトして作られてあります。
これを元に戻さないと割込みベクタの位置が狂ったりして正しく動作しません。
Project Explorerからstm32f10x_hd_flash_offset.ldをダブルクリックして中身を表示させます。
上から40行目にあるフラッシュメモリの定義を↓このように変更します。
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K
とんすけぶろぐ-dfuoffsetpre


・外部ツール(OpenOCD)の設定
Eclipse上で実機のJTAGデバッグを行うにはまず外部ツールの設定にOpenOCDを加えます。

メニューバーからRun->External Tools->Eternal Tools Configuration...をクリックします。
左リストのProgramを右クリックしNew選択します。
NameにOpenOCD等適当な名前をつけます。
MainタブのLocationに/usr/local/bin/openocd、
Argumentsに次のオプションを書き入れます。
-f "/usr/local/share/openocd/scripts/interface/olimex-arm-usb-tiny-h.cfg" -f "/usr/local/share/openocd/scripts/target/stm32.cfg"
とんすけぶろぐ-externaltoolsmainpre


Commonタブに移りDisplay in favotites menuグループのExternal Toolsアイコンにチェックを入れます。
そしてApplyをクリックして設定を適用し、Closeボタンを押して外部ツールの設定を終えます。
とんすけぶろぐ-externaltoolscommon


これで赤丸で囲ったアイコンからいつでもOpenOCDを起動させることができます。
$とんすけぶろぐ-externaltoolsicon


・Zylin Embedded CDTをインストール
Zylin Embedded CDTはJTAGデバッグをEclipse上で可能にするプラグインです。
EclipseのメニュバーからHelp->Install New Software...をクリックします。
InstallウィンドウのWork withにhttp://www.zylin.com/zylincdt/のURLを入力してAdd...ボタンをクリックします。
するとZylin Embedded CDTの項目がでてくるのでこれを選択してNext>ボタンをクリックします。
しばらくするとダウンロードが始まり勝手にインストールされます。
とんすけぶろぐ-zylininstallpre


・デバッガの設定
次はいよいよデバッガの設定です。
メニューバーからRun->Debug Configurations...を選択し、
左のリストにあるZylin Embedded debug(Native)を右クリックしてNewをクリック。


Nameには適当な名前Debug等を付けます。
MainタブのC/C++ Applicationにstbee-led.elfバイナリを指定します。
とんすけぶろぐ-debugmainpre



DebuggerタブをクリックしてGDB debuggerを/usr/local/arm/bin/arm-none-eabi-gdbに指定します。
とんすけぶろぐ-zylindebugmainpre


次にCommandsタブに移り、'Initialize' commandsに以下のコマンドを書き入れます。
target remote localhost:3333
monitor reset init
monitor halt
load
monitor reset init
monitor halt
thbreak main
continue
とんすけぶろぐ-zylindebugcmdpre


そして最後にCommonタブをクリックしDisplay in favorites menuにあるDebugアイコンのチェックを入れます。
そしてApplyをクリックして設定を適用し、Closeボタンをクリック。
とんすけぶろぐ-zylindebugcommon


これで赤丸で囲った虫のアイコンからデバッグを開始することができます。
$とんすけぶろぐ-debugicon


・いよいよデバッグ
設定が全て終ったのでデバッグしてみます。
External Tools Configutationで設定した外部ツールのアイコンをクリックしてOpenOCDサーバーを起動し、しばらく待ってから
Debug Configurationで設定したDebugのアイコンをクリックします。
するとフラッシュメモリにプログラムが書込まれてデバッグができるようになります。
とんすけぶろぐ-debugstb-ledpre
あとは気が済むまでいろいろ弄くりまわす(^ω^)

とまあしょっぱなからインストールやら設定やらでかなりやることが多くて大変でした(^_^;A
もし上のやりかたでうまくいかなかったらもっと分かり易いサイトがあるので参考にしてください。(責任放棄)
それでは次回からはgdgd活動報告します。