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も使用可能なのが分かりコスト
パフォーマンス最高だと思います。
あーしまったこの角度で撮るとせっかくのゆっこちゃんの肢体がー(棒)
-
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (116)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (81)
- STM8 (2)
- Wirelessなアレ (16)
- おきぱ (1)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (25)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- October 2024 (1)
- September 2024 (1)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (6)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.
Comments
UARTブートローダ経由でDFUブートローダを書きこむ場合の写真のTO_+3.3Vの接続は,
―●がR6に掛かってますけど,R7(BOOT0)の方でしょうか?
うぉぅ…
思い切り勘違いして間違ってますね…すみません。
コラージュですが画像を正しいものに差し替えて
注意書きも加えておきました。
ご指摘ありがとうございます。
ねむいさま、stm32fシリーズに関するコアな情報を提供していただき感謝しています。
今までTxD,RxDを追加したJTAGKEYクローンを使ってOpenOCDでstm32Fシリーズの書込みをやってきたのですがstm32F407vgt6のrev.Zから書込みが出来なくなってしまいました。
急遽stlink/v2を入手してSWDで書込みは出来るようになりましたがデバッグ用のシリアルポートが使えなくなってしまい代替手段を探して、ねむいさんのこのブログにたどりつきました。
stm32F4-discoveryを改造してversaloon化したstlinkからswdを使った書込みとUSB-CDCが使えそうなことを確認出来たのでTxD,RxD端子つきのstlinkクローンを作って使っていくつもりです。
「素直にversaloon Miniを買えば?」という声もありますがケースが紙製というのがちょっと気に入らないので大きめの収縮チューブで保護できる形の基板にする予定です。
km様
はじめまして、ねむいです。
私も気になって手持ちのRevAとZが乗ってるSTM32F4Discoveryをそれぞれ
比べて見ましたが私の環境ではどちらも書き込みができました。
その時のログファイルは下のURLにあります。
cid-36f4d1230f8a673c.skydrive.live.com/browse.aspx/.Public/tool/OpenOCD/yakketsu/STM32F407VGT_rev.zip
また、上記の検証で用いたOpenOCD0.7.0はログファイルと同じディレクトリ
に置いてあるTI-ICDI対応の特別版ですがgerritに上がっている最近の
STM32F系フラッシュのパッチは当ててないのでSTM32関連の動作は0.6.1
相当かと思います。
結構気づきづらいのはソフトウエアでJTAGの機能を殺していた場合で、
微妙に動いて微妙に動かないといういやらしい状態になり問題の切り分けが
困難になるので確実にJTAG(若しくはSWD)で引っ掛けることができる
システムブートモードでSTM32を起動させて検証を行うことをお勧めします。
また、話は少しずれますが今Versaloon化をされるならSTM32F3Discoveryの
物をお勧めします。STLink/V2(STM32F103C8T)側からおあつらえ向きにVCP用の
UART-Tx,Rxが引き出されており、裏面の半田ブリッジで簡単にSTM32F3側とつな
げられます。
ねむい様
丁寧なご回答ありがとうございます、
もう一度ねむいさんのところから貰ったOpenOCDとcfgで試してみたらすんなり書けてしまいました。
telnetでつなげるとpollコマンドでunknownになるしmdwコマンドで全て0x004000などという変な値が見えるのでこりゃ駄目だと思っていたんですけどね。
この迷走でZadigという便利なツールを知ることが出来、WinUSBとFTDIの仮想COMドライバが同時に使えることも判ったのは収穫でした。
stlinkクローンの基板は発注してしまったのでSWDの勉強がてらぼちぼち遊んでみます。
最近部品を海外から直接購入することが増えていますがねむいさんが他のところに書かれていたtaobaoというのは初めて知りました、新しいものへのアンテナがすごいですね改めて感心しました。
これからも面白いトピックを楽しみにしています。
Post a Comment