STM32F4シリーズを使ってみる4 -STLink/V2をversaloon化-

20231002追:
10年以上前の記事となり現在では有効ではないリソースが多数あり、
Versaloonはお勧めいたしません。
もしそれでもどうしてもVersaloonをやってみたい方はメールをください。
20231002追:



Versaloon本家がSTM32F4対応したのを受けて今回はSTM32F4 Discoveryに
仕込まれているSTLink/V2をSWD接続方式のVersaloon化する方法を紹介します。

もう何度も行っていますが、Discovery系の基板をVersaloon化したことによる
メリットは以下の通りです。
1.書き込み・デバッグにOpenOCD(ただしVersaloon対応にビルドしたものに限る)
 が利用できる。
2.VersaloonのファームウエアにUSB-CDCも仕込まれているのでUARTの
 通信手段を別途用意する必要がない。
3.Versaloonはソフトもハードもファームウェアも無償で利用できるので
 自分の好きなように改造できる。

と言ったところでしょうか。ねむいさん的には"2."が実際のデバッグや情報
表示等にかなり使えると実感しています。



●Versaloon化手順 on STM32F4-Discovery
概念についてはこちらこちらで詳しく紹介しているので基本的な部分は
はしょりますが、Versaloon化するSTLink/V2(STM32F103C8T6)にいつもながらの
DFUブートローダを仕込んでおいてその後にversaloon本体(DFUファイル)を
書き込みます。
DFUブートローダのバイナリはUARTブートローダ若しくはSWD経由でフラッシュに
書き込みを行います。各々の方法も基板に下準備が必要です。

1.SWD経由でDFUブートローダを書きこむ場合

 SWDで書きこむ手段として今回はvsprogを使用することにします。
 用意するものはVersaloon化したSTLinkですが素のSTLinkでも書き込むまでの
 下準備は同様です。
 
 まず基板をひっくり返して写真の箇所のジャンパ抵抗をそれぞれ移転させます。

 
 上記写真の要領でSWCLK,SWDIO,GNDをそれぞれ接続してください。

 
 STlink/V2が仕込まれているSTM32F103C8T6にはReadProtectionのヒューズ
 ビットが掛かっていて、これを解除しないとフラッシュの書き換えが
 できません!
 これはOpenOCDのflash unlockコマンドでも解除できません。
 2013年現在ではstm32f2x.cにバグ修正が入ったのでOpenOCDからでも解除
 可能です。
 vsprogを立ち上げSTM32マイコンを認識したら上記画像の要領でヒューズ
 設定を行ってください。エラーが出まくりますが無視してください。
 この状態でWriteを押すとエラーが出まくりますが無視して書きに行って
 ヒューズを消すことができます。

 その後はこちらに用意したSTM32F4Discovery用のDFUブートローダ
 (の中のmain.hex)をフラッシュに書き込み、ベリファイまでエラーが
 出ずに行えたら書き込み成功です。


2.UARTブートローダ経由でDFUブートローダを書きこむ場合
 この方法は以前細かく説明しているので、ここではSTM32F4-Discovery
 基板上ではどの線を引き出せばよいかという点に絞ってお伝えします。
 DFUブートローダはSTM32D4Discovery用を書き込んでください

 
 実はSTM8S,STM32VLDiscoveryの時と比べてすっごく楽です。UARTブート
 ローダ用の線が引き出されていてなおかつ線を引き出しやすいSMDの抵抗が
 ライン上にあります。書き込みの手段を持ってない人はUARTブートローダしか
 方法がないので比較的やりやすいと思います。"TO_+3.3V"のジャンパは
 書き込みが終わったらはずすのを忘れないでくださいね。
 UARTブートローダを起動するためのBOOT0につながる抵抗はR7ですが、
 シルクの位置が上にずれてるので間違えないようにご注意ください。

3.Versaloon本体のDFUファイルを書きこむ
 STM32VL-Discoveryの時と同じくSTM32F4-Discovery基板上のResetボタンを
 押しながらPCとUSBケーブルで接続してください。DFUブートローダが正しく
 書きこまれていたらPCがDFUを認識します。その後、STM32F4Discovery用VersaloonのDFUファイル
 書きこみます。書き込み方法はこちらを。

 書き込み後はPCとST<32F4-Discoveryの接続を切り離し、Resetボタンを
 押さずに再接続した時にVersaloonとして認識すればVersaloon化の
 成功です!
 Versaloon本体のLibusbドライバのインストールはZadig
 行ってください。
 USB-CDC用ドライバ(COMonVersaloon)は本家のリポジトリ
 手繰って取得してください。

 これでおしまいっ!

 …と言いたいところですが、Versaloonとして使用する前に下に述べる処理を
 絶対に忘れないでください。

4.後始末
 
 
 SWDでDFUブートローダを書いた場合は最初に移動したジャンパ抵抗と
 ジャンパを元の位置に戻します。次にDFU・UARTブートローダ共通ですが、
 R68を取っ払ってください。これはSTLink/V2側からターゲットのSTM32F4
 マイコン外部クロックを供給するためのもので、Versaloonではこのピンは使用
 されていません!
 このジャンパ抵抗を外して8MHzクリスタルが効くようにしてやらないと
 STM32F4は16MHzの内部RC発振に強制されてしまいます。一見普通に動いて
 しまいUART等のタイムベースが重要なペリフェラルの動作で異常になって
 しまうので注意してください!



というわけでSTM32F4-DiscoveryもVersaloonで快適デバッグ/書き込みが
できるようになりました♥
先に書いた通り私のお目当ては複合デバイスとしてVersaloonとともにに
仕込まれているUSB-CDCです。
ごてごて外付けのデバイスを接続せずに済みますのでとってもスマートです。



おまけ
今のOpenOCDでデバッグした際に浮動小数点レジスタは見えるのか!?

ねむいさんがバリバリ使っているOpenOCD(V0.6.0)+Insight(GDB7.25)で
やってみましたが浮動小数点レジスタは見えませんでした(; _ ;)
OpenOCD+InsightがCortex-M3というか無印のARMV7M扱いでデバッグしてる
せい(Cortex-M4FのコアはCortex-M3と上位互換してるから整数演算部は
普通にデバッグ・書き込みできる)でしょか???情報待ちですね。


も一つおまけ
ぜんっぜん関係ないですがtaobaoで超掘り出し物の液晶モジュール見っけ
ました!2.6inch,240x400のWQVGAサイズでタッチパネルつきのTFT-LCDが
たったの20元でしかも新品!もちろんデータシートなんて無かったのですが
運よく推定したピン配置がドンピシャでバッチリ動いてくれました♥
しかも類似品種のピン配置を調べるとSPIも使用可能なのが分かりコスト
パフォーマンス最高だと思います。

あーしまったこの角度で撮るとせっかくのゆっこちゃんの肢体がー(棒)

Go to top of page