STM32F0シリーズを使ってみる


ッついに!手に入った!!!
ぁすみません・・フォーカスずれてましたね…
このBeachBoysのコレクターCDは探して探して探してカナダの片田舎のレコード屋でやっ
と在庫を見つけてそこの親父にねむいさんのインチキ英語でなんとか意思が伝わって
やっとこ購入できた代物でして存在知ってから入手まで実に2年を要したのですがその
労力を払っても聴く価値のある非常にありがたいCDなのです…!
BeachBoysの新アルバムも発表され、ワールドツアーも行われるようになってねむいさ
んの中でBB熱が再び非常に高まっております。



aitendoさんから販売され、秒速で売り切れたandroid基板をねむいさんも無事ゲッツしました!
twitterのTLを見ているとどうやらこちらの中華PADの中身に使用されている基板だと判明
しているようです。しかしねむいさんはHDMI接続のモニタ持ってないので、先に購入して
いるBeagleBoardXMのDVI-Dにも対応した小型モニタを探す旅から始まりそうです。
こうして積み基板が増加していく…。でもいいんです買っただけで満足ですから!








それでは本題行きます…。今年の春先にSTマイクロさんより"STM32のDNAを御得な値段
であなたにテコ入れする(直訳)"をスローガンにCortex-M0系のSTM32マイコンが発表、
販売を開始しました。国内/海外の展示会場でもゲッツした人もすでにいますが、Digikey
でもSTM32F0-Discoveryが入荷されたので早速購入してみました。

いつものST謹製"Discovery"スタイルの基板で、cortex-M0系のSTM32F051R8T6
搭載されており、日本円で1000円以下のお値打ち価格となっています。
もちろんデバッガハードウェアのSTLink/V2もオンボードで搭載されていてこの基板と
USB(A-miniB)ケーブルさえあれば開発可能です。

しかも今回はプロトタイピングを重視した作りか同じサイズのユニバーサル基板が一枚
ついています。値段を考えると非常にお得です♥(実際にArduinoと組み合わせた
ファームウェアのプロジェクト一式がダウンロードできます)。


現在M0系でポピュラーなのは私のぶろぐでも取り上げていたLPC1114に代表されるNxP
系マイコン(評価基板は3000円前後)ですが、ここに1000円以下の破格値で参入したこ
とによりまたまたホビーユースにおける小規模ARMの勢力図が書き換えられるかと思わ
れます。

さて、最初の基本であるLED点滅から開始するわけですが、LPC1114系のマイコンで培
ったリソースがすでに大量にあるのでこれをベースに15分くらいでSTM32F051R8T6向け
のプログラムをやっけつしてビルドを行います。NxP系と違う点はCRPのための特別な定義
が必要ないところですね。それ以外はスタートアップやリンカスクリプトもほぼ流用します。

次に書き込み手段ですが…もちろんSTLink/V2をOpenOCDから操作して、書き込みや
デバッグを行います。使用するドライバはSTマイクロ提供の物(WinUSB)です。
STM32F051R8T6もM0なNxP系のマイコンよろしくデバッグ用ポートがSWD接続しか存在
しませんがパッチを当てることによりVersaloonとSTLink/V2がOpenOCDから使用できます。
さらに気づいたのですが、最近のOpenOCDのコミットではM0系のデバッグ機能が強化され
ていて以前はcrcエラーが出てしまい不可能だったフラッシュ書き込み時のベリファイも
可能になっています♥


↓STLink/V2でOpenOCDから書き込んだときのメッセージはこんな感じです。
> "C:¥Devz¥AVR¥WinAVR¥utils¥bin¥make.exe" program
openocd_m0 -s C:/Devz/ARM/OCD/tcl -f target/stm32f0x_stlink_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.6.0-dev-00595-g445a54a-dirty (2012-05-28-09:15)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
1000 kHz
srst_only separate srst_nogate srst_open_drain
Info : clock speed 1000 kHz
Info : stm32f0x.cpu: hardware has 4 breakpoints, 2 watchpoints
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x080007c8 msp: 0x20002000
auto erase enabled
Info : device id = 0x20006440
Info : flash size = 64kbytes
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x2000003e msp: 0x20002000
wrote 3072 bytes from file main.elf in 0.265629s (11.294 KiB/s)
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20002000
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20002000
verified 2408 bytes in 0.078126s (30.100 KiB/s)
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x080007c8 msp: 0x20002000
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:



↓Versaloonの時はこんな感じです。
> "C:¥Devz¥AVR¥WinAVR¥utils¥bin¥make.exe" program
openocd_m0 -s C:/Devz/ARM/OCD/tcl -f interface/vsllink_swd.cfg -f target/stm32f0x_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.6.0-dev-00595-g445a54a-dirty (2012-05-28-09:15)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Info : OpenOCD runs in SWD mode
1000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
cortex_m3 reset_config sysresetreq
verify Capture-IR is disabled
Info : Versaloon(0x15)by Simon(compiled on Feb 29 2012)
Info : USB_TO_XXX abilities: 0x0000076E:0x010001EF:0xC0000007
Info : clock speed 1000 kHz
Info : stm32f1x.cpu: hardware has 4 breakpoints, 2 watchpoints
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x080007c8 msp: 0x20002000
auto erase enabled
Info : device id = 0x20006440
Info : flash size = 64kbytes
wrote 3072 bytes from file main.elf in 0.265628s (11.294 KiB/s)
wrote 2408 bytes from file main.elf in 0.093752s (25.083 KiB/s)
verified 2408 bytes in 0.140626s (16.722 KiB/s)
shutdown command invoked

> Process Exit Code: 0
> Time Taken: 00:



当たり前ですがどちらの方法でも危なげなく動作します。


もちろんOpenOCD/Insightを使ったデバッグも無制限でバリバリ可能です!



今回の検証に使用したコードはすでにおきぱにて公開していますので自己責任のうえで
お試しください。また、おきぱにあるCortex系のコードでCMSISが使用されている物の
ほとんどはすでにSTREX系命令のビルド時エラー対策の修正がされているCMSIS3.0系
を使用していますので安心してビルドが可能です。

STM8Sは値段は安いですがちょっとあつかいにくいきらいがありました。しかしSTM32F0
なら敷居がさらに下がって小規模マイコンでARMを使用する人も増えるでしょう。
秋月さんからの販売がカギとなると思います。
20121115追:
秋月さんから販売されました!

Go to top of page