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