OpenOCD小ネタ9 -STM32F33xシリーズとFTDI系のSWD対応-


6月中旬に唐突に秋月さんちのラインナップに追加された詳細一切不明の
謎Nucleo基板Nucleo-F334R8にはこれまた詳細不明のSTM32F334R8T6
が搭載されておりました。

↑今回から撮影用でぢかめを接写に超強いTG-3に買い換えました♥
6月中旬の時点ではF3シリーズであるというほかには詳細が一切不明だったので
会社で試作部品発注したついでに購入してしまいました。
(注:Nucleo板は自費で購入です!)

ひとまずOpenOCDで引っ掛けると、デバイスIDが0x10016438というまだ
OpenOCDのフラッシュドライバには存在しない物だっため最初は書き込みエラーで
はじかれてしまいましたがソースコードにそのデバイスID追加して即書き込むことが
出来ました。因みにSTM32F3系はCortex-M4系ですがフラッシュ書き込みドライバは
F1系です。もう少しでF2系ドライバに実装しそうになってしまいましたよ。
実は最初に私がパッチを書いた当初はユーザマニュアルどころかデータシートすらも
無かったため、フラッシュのセクタサイズは0系からのコピペの飛ばしでした・・・。
が、その後にリリースされたReferenceManualには2048バイトと
書かれていたのでセフセフです。

話は前後しますが一週間以上前に提出したパッチはすでに公式にマージされています
おきぱにあるOpenOCDのバイナリもF334R8版Nucleo対応のcfgを作っていますので
お持ちの方はすぐに試すことができます。便利な書き込みスクリプト付きで対応です☆


というわけでせっかく買ったのでLチカだけじゃなくNucleo版のいつものに相当する
I2Cデバイスを動かすサンプルを移植しました。
長らくの間ねむいさんたった一人しかこのi2c液晶動かして無かったですがごく最近
ついに他の方も動作に成功したようです。私間違ってなかったですよね…!
注:7月1日現在、STM32のライブラリをPeriphDriverからHALDriver
 (STM32CubeF3)に変更しております。
 CubeFx系のライブラリ対応につきましては後日みっっっっちりと
 解説させていただきましたので覚悟なさい!





お次は長らくの悲願であったFTDI系デバイスのSWD接続正式対応です!
以前から私はぶろぐ上にてレビュー段階のコミットを評価しておりました。
その時点で既にかなりの完成度に達しておりましたがその後adi_v5と
swd関連のソースも見直されて満を持しての今回のマージです♥
…と同時にVersaloonのSWDパッチは完全に使用不可になってしまいましたが
実は他の方が別の手段でSWDに対応させたパッチがレビュー中でして7/1現在
おきぱにあるバイナリはそちらの物を取り込んでおります。
Versaloonも以前と全く変わらない使用感になっていますのでこちらのマージも
時間の問題であると言えます☆

さて、ねむいさんのぶろぐではJTAGKey2(とその互換回路)を使用してSWDせしめる
方法をお伝えします。以前も述べていますが原理は簡単で抵抗一本でSWD化可能です。


たったこれだけの追加回路で完了です。一見強引な方法に見えますが出力同士がぶつ
かっても(私の回路図通りに作りこんでいれば)出力バッファの定格内なので全く問題
がありません。

上記の方法、JTAGKey2に代表されるハード的にSWD未対応な物ではresister-hack
という形でOpenOCDのcfgファイルでサポートされています。それを利用して
swdで接続しに行くJTAGKey2専用のcfgファイル"jtagkey2_swd.cfg"も
こちらでこさえております。

おきぱにあるプロジェクトではEFM32とSTM32F4のいつものがすでに
JTAGKey2のSWD接続にmakefileレベルで対応しております。
現在はまだ3つだけですが順次対応して行きます。
あとついでのついでですがEFM32のZEROGECKOのフラッシュ書き込みも
対応させました
。こちらも機会があればEFM32のボードとともに
ご紹介させていただきます。

Go to top of page