OpenOCD小ネタ8 -STM32-Nucleo(Nucleo F030R8)で楽しむベアメタルプログラミング-



…おっと、すみません。今回はSTM32-Nucleoボードのお話でしたね〜



一か月ほど前購入したSTM32-NucleoのF0バージョンですが、これには新しい
STLinkであるSTLink/V2-1という間際らしい名前のデバッガアダプタが搭載
されていることに言及しました。これはmbedサポートを謳っていてD&Dによる
フラッシュ書き込みは勿論仮想COM(VCP)や通常のデバッグも同時に可能です。
STLink/V2-1はCMSIS-DAPとしては機能しないものの現在のOpenOCDは
CMSIS-DAPは不利になる
ので従来のSTLinkとほとんど変わらず使える
ほうがありがたいのです。

しかしながら新たに追加されたMSDとVCPのおかげでエンドポイントの定義が
若干違うため、OpenOCDにV2-1用のパッチを当てないと使用ができませんでした。
以前も少し触れましたがこちらのサイトの情報を基にパッチをgerritに投げて
マージされることを待ったのですが、後出しじゃんけんされまくってボコボコ
STLink/V2-1のパッチ投げられる事態となってしまいました。

で、詳細は省きますが同じぱっちを投げた人同士で相談し、結局
この人のコミットをベースに私の思想を反映した形で落ち着きました
ついでにF0,F4,L1の各シリーズのNucleoボードにも
対応したcfgも作成されました



というわけで20140324現在では既にNucleo(STLink/V2-1)に対応したデバッグ
アダプタもOpenOCDから利用可能となっております。STLink/V2-1では仮想COM
機能もあり、F0のNucleoボードではUARTのTx,Rxが直結されているので本当に
mbed感覚で利用が可能です。
20140903追
Windows8.x系OSをお使いの方はこちらを必ずお読みください。


おきぱには既にNucleoF0版向けのGCCプロジェクトを公開しておりますがLチカに
飽き足らず勿論UARTの文字列送信も盛り込んでいますのでご参考までに。

ところでNucleoボードは拡張性を狙った各シリーズ共通のMorphoなるピン
配置が外部に出ております。
Morphoとかニョガン思い出して非常に縁起の悪い名称ですが。
さらに現在のプロトタイプボードでは必須となったArduinoのシールド向けの
ポートも用意されております。mbedではNucleo用のライブラリや作例などが
充実し始めております。ソフトウエアやハードウエアの技術に明るくない人
でも先人が残した成果を余すことなく利用でき、熟練度に関係なく楽しめる
仕組みになっていてなかなか考えられていると感じます。


てわけでついでなので私ももうちょっと遊んでみました。これは知る人ぞ知る
TFT-LCDシールドです!
今回はFONTXドライバとからめで文字列の表示をしてみます。

TFT-LCDシールドとNucleo上のLEDはSCLKにあたるポートがぶつかります
(PA5/D13の所)。
ですがArduino系シールドを上から挿した時点で横から覗きこまない限り
LEDは全く見えなくなるので無視して先に進みます!
(ハードウエアSPIの場合SCKは必ずぶつかる)

STM32F0/F3系のSPIはちょっと特殊で8~16bitまで自由に送受信するビット数が
変えられます。従来のF1/F2/F4系とは若干データレジスタの取り扱いが違い、
FIFOの設定を正しく行いビット数に合わせてDRレジスタのアクセス方法も
変えないとデータの送受信ができないのでご注意ください。
私はdisplay_if_basis.cの頭に8bitアクセス用のマクロを作って互換性を保ちました。


動かしてみたところです。さすがにフラッシュの容量が少ないので
ひらがなとかの表示は無理ですがこの規模ならANKで十分だと思います。

実は上記TFT-LCDシールドを動かすためのコードもおきぱにあるサンプル
導入しております。8bit-SPIで動く奴ならピン配置さえ合わせたらほとんどの
TFT-LCDモジュールも動作せしめることができるのでTFT-LCDシールドを
お持ちでない方も少しmakefileの設定を変更するだけで手持ちの手頃で
SPIなTFT-LCDで動作可能だと思います。


忘れるところでした、今回の修正を反映したOpenOCDバイナリもすでに公開中です!

Go to top of page