STBeeの開発環境をMac OSXに構築する

http://stastaka.wordpress.com/category/stm32/
を参考にしました。

http://static.leaflabs.com/pub/codesourcery/gcc-arm-none-eabi-latest-osx32.tar.gz
をダウンロードして/usr/local/armに入れる。
/usr/local/arm/binにパスを通しておく。

$ brew install dfu-util

でdfu-utilをインストール。

(追記)DFUモードにしないとdfu-utilは使えない
DFUモードにするには「USERボタンを押しながらRESETを押して離す」

http://strawberry-linux.com/stbee/cc
からサンプルファイル minidemo.zipをダウンロード。
焼くためのmini-demo.binを生成する方法は以下。
mini-demoフォルダでmakeして.elfを生成し、(arm-none-eabi-)objcopyでbinを生成する。

$ make

arm-none-eabi-gcc --version
arm-none-eabi-gcc (GCC) 4.4.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

make -C lib
make -C STM32F10x_StdPeriph_Driver
make[2]: Nothing to be done for `all'.
make -C CMSIS/Core/CM3
make[2]: Nothing to be done for `all'.


mini-demo.elf  :
section            size        addr
.isr_vector         484   134230016
.text              2268   134230500
.data                20   536870912
._usrstack          256   536870932
.ARM.attributes      45           0
.stab             16044           0
.stabstr          68806           0
.comment            252           0
Total             88175

$ arm-none-eabi-objcopy -O binary mini-demo.elf mini-demo.bin

これでmini-demo.binができる。

書き込んでみる。

% dfu-util -a0 0x0483:0xdf11 -s 0x08003000 -D mini-demo.bin
dfu-util 0.6

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY

More than one DFU capable USB device found, you might try `--list' and then disconnect all but one device

複数のUSBデバイスがあるっていってる。おかしいな。
listオプションで表示させてみる。

% dfu-util --list
dfu-util 0.6

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY

Found Runtime: [05ac:821f] devnum=0, cfg=1, intf=3, alt=0, name="UNDEFINED"
Found DFU: [0483:df11] devnum=0, cfg=1, intf=0, alt=0, name="@Internal Flash  /0x08000000/12*001Ka,116*001Kg"

このRuntime: [05ac:821f]ってやつが誤動作の原因っぽい。
こいつが何者かを調べるためにlsusbを使う。

lsusbコマンドはMacでは

system_profiler SPUSBDataType

を使う。

$ system_profiler SPUSBDataType | less

すると、

 Bluetooth USB Host Controller:

                  Product ID: 0x821f
                  Vendor ID: 0x05ac  (Apple Inc.)
                  Version: 0.97
                  Speed: Up to 12 Mb/sec
                  Manufacturer: Apple Inc.
                  Location ID: 0xfa113000 / 6
                  Current Available (mA): 500
                  Current Required (mA): 0

BluetoothがUSBデバイスとしてdfu-utilに認識されてることがわかった。
試しにBluetoothをOFFにしてlistしてみると、Runtimeがいなくなった。

よって再度書き込みをトライ。

% dfu-util -a0 0x0483:0xdf11 -s 0x08003000 -D mini-demo.bin
dfu-util 0.6

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY

Opening DFU capable USB device... ID 0483:df11
Run-time device DFU version 011a
Found DFU: [0483:df11] devnum=0, cfg=1, intf=0, alt=0, name="@Internal Flash  /0x08000000/12*001Ka,116*001Kg"
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 1024
No valid DFU suffix signature
Warning: File has no DFU suffix
DfuSe interface name: "Internal Flash  "
Downloading to address = 0x08003000, size = 2772
...
File downloaded successfully

できた!