OpenOCD小ネタ12 -HLA向けのcfgファイルの統合-
お盆前に行われたOpenOCDのHLA系コンフィグファイル大変更への対応を
幾つかのターゲット向けの試用実例と交えて解説します。
とその前に!
最近再び似た質問を多数いただくようになったので・・・
●STLinkがOpenOCDで動きません。
NxP系マイコンのCheckSumValidationと同じく何度も言ってますが
何度でもおさらいです。質問が続く限り何度でもなんどでも な・ん・ど・で・も
説明します!
注:STLink/V1はもう持ってないのでサポート外です。STLink/V2とSTLink/V2-1系向けです。
20140902追:
2014年9月現在、Windows8.x系環境下でSTLink/V2-1がOpenOCDから
利用できません。これはlibusbがWin8.x環境下でUSBコンポジットデバイスを
正しく扱えてないことに起因するものだそうです。
libusbに修正かかるまで辛抱強く待つかXP/Win7に戻すのです!!
STLink/V2の方はコンポジットじゃないのでWin8でも問題なく使用可能です。
20141114追:
Windows8.x環境下でのOpenOCDサポート開始です
1.基本的な結線は本当に正しいか
STLink/V2系はSRST,Vtgt(ターゲットのVCC),SWCLK,SWDIO,GNDが必須です。
SWCLKとSWDIOを"てれこ"にしてたりGND繋げてなかったとか論外ですが
(そういったケースもありました…私に直接返信はなく質問された方の
twitter上の発言でそれ知ったのですが…#)まず第一にGND,SWCLK,SWDIOの
結線がターゲットのMCUと正しくなされているかを回路図を良く見て
テスターで導通をしっかり確認してください。
2.SRSTは繋がっているか
現在ではNucleo/Discovery等のメーカ製評価ボード向けの特製cfgはすべてSRSTを
使用するように設定されています。したがって私の特製cfgもそれに準じております。
stlink-v2.cfgを直接呼び出す使い方を中途半端に真似ると引っかかるので
ご注意ください。Nucleo/Discovery等のメーカ製評価ボードから自作のボードに
環境を変えた際にSRSTの接続を忘れ上手く動かないといった連絡を特に戴いています。
回路図を良く見てテスターで導(ry
3.Vtgtは繋がっているか
また、Vtgtの接続もほぼ必須です。これも"2."と同様ですが特にNucleo/
Discovery等のメーカ製評価ボードからデバッグ線を引き出して自前のボードと
繋げる際に発生します。
ネット上では情報が倒錯しOpenOCDではVtgt必要ないと断言している記述も
あるのでご注意ください。
ねむいさんは一貫してVtgt繋げろです。
STLink/V2は接続の際にまずSWCLK,SWDIOの電圧を読みに行ってVtgtの電圧
よりも相対的に高い電圧とみなすとその後の一切を弾くのでコケて絶対先に
進めません。これはファームウエアレベルでこういう動作をしますので
特定のソフトに依存はしません。
メーカ製ボード上ではVDDがSBDで切られてVf分のドロップで3.0V前後と
若干低くなった状態で動作しているので気づきません。しかしながら自作の
ボードではほとんどが3.3Vで使用されるともいます。このときSWCLK/SWDIOの
電圧はデバッガ側より必ず大きくなるのでコケます。
また、以前も触れましたが一部のボードではコスト削減のためVtgtにつながる
抵抗が実装されていないものもあります。
ケアレスミスで時間を浪費しないように回路図を良く見(ry
・・・
STLiink系ばっかりに力入れるわけにはいかないので本題に入ります。
●分かれていたコンフィグファイルが今一つに!
これです。目的はSTLink/V2やTI-ICDI等のHLA(HighLevelAdapter)も
従来のFTDI/JLink等と同じコンフィグファイルを使用できるようにする修正です。
もともとHLAは各メーカが提供する独自のデバッグ用APIをOpenOCDでも利用できる
ようにと組み込まれた機構です。したがってターゲットMCUへのローレベルな
アクセスができない、クロック周波数の設定等のアダプタ側でも細かい制御も
できないといった制約があります。
ですのでその挙動の違いから使用可能なコマンドも分けられており、従来は
各MCU向けのOpenOCDコンフィグファイルも通常のものとHLA系に分けなければ
なりませんでした。
しかし今回の修正でHLA系で使うとエラーになっていたadi_v5系のローレベルの
コマンドがエラーとならずオーバーライド(スルーとも言う)できるようになり、
hla専用cfgは晴れてお役御免となったわけです。
さて、変更されて箇所は分かりましたがそれを実際にどう反映させればよいかと
いうと・・・OpenOCDを呼び出す際の引数として、もしくはcfgファイル内に
"transport select"コマンドを追加で付与します。
以前はHLA系アダプタを使用する場合はトランスポートが決め打ちだったので
STLink/V2やTI-ICDIのcfgファイルに直接記述されていた物が外に追いやられた
形になってます。EFM32TG822F32の例を取って新旧のOpenOCD引数比較をします。
下記の記述はこちらのデバッグ手順に準じますので事前に把握をお願いします。
旧:
OCD_ARG = -s $(OCDIR)/tcl ¥
-f interface/stlink-v2.cfg ¥
-f target/efm32tg822f32_hla_flash.cfg
新:
OCD_ARG = -s $(OCDIR)/tcl ¥
-f interface/stlink-v2.cfg ¥
-c "transport select hla_swd" ¥
-f target/efm32tg822f32_swd_flash.cfg
こんだけです。TI-ICDIの場合はJTAG接続専用なので"hla_jtag"になります。
STLink/V2,STLink/V2-1はSWD専用なので"hla_swd"です。
メーカ製出来合いのボードの場合、OpenOCDのボート向けcfgで対策されたのが
ほとんどなのでこちらで修正する必要はないです。
Nucleo-R334板(STLink/V2-1付)の例を示します。
旧:
OCD_ARG = -s $(OCDIR)/tcl ¥
-f target/nucleo-f3_flash.cfg
新(旧と全く同じ):
OCD_ARG = -s $(OCDIR)/tcl ¥
-f target/nucleo-f3_flash.cfg
因みにcmsis-dapの場合も現状SWD専用なのでswdが自動で選択されるので特に
変更は不要です。トラ技ライタ(LPC11U35)にCMSIS-DAPで繋げる例を示します。
旧:
OCD_ARG = -s $(OCDIR)/tcl ¥
-f interface/cmsis-dap.cfg ¥
-f target/lpc11xxx_swd_flash.cfg
新(旧と全く同じ):
OCD_ARG = -s $(OCDIR)/tcl ¥
-f interface/cmsis-dap.cfg ¥
-f target/lpc11xxx_swd_flash.cfg
さらにJTAGKey2等の汎用のJTAGの場合は何も指定しない時はデフォルトで
JTAG接続となるので余計な指定は不要です。
STM32F407ZGT6にJTAGKey2で繋げる例を示します。
旧:
OCD_ARG = -s $(OCDIR)/tcl ¥
-f interface/ftdi/jtagkey2.cfg ¥
-f target/stm32f4x_flash.cfg
新(旧と全く同じ):
OCD_ARG = -s $(OCDIR)/tcl ¥
-f interface/ftdi/jtagkey2.cfg ¥
-f target/stm32f4x_flash.cfg
JLINKやVersaloon,FT2232系でSWDしたい場合は宣言は必須ですがこの3つに
関しては私のcfgレベルで対策済なので私が提供するバイナリとcfgを
使う限りは変更不要です。STM32F407ZGT6にVersaloonで繋げる例を示します。
旧:
OCD_ARG = -s $(OCDIR)/tcl ¥
-f interface/vsllink_swd.cfg ¥
-f target/stm32f4x_flash.cfg
新(旧と全く同じ):
OCD_ARG = -s $(OCDIR)/tcl ¥
-f interface/vsllink_swd.cfg ¥
-f target/stm32f4x_flash.cfg
現在のOpenOCDでは以下の4つのtransportが存在していますが、hla系は
上記の要領で多少の変更を追加するだけで対応可能となっています。
transport select jtag (transportを何も指定しないときのデフォルト)
->FT2232系,JLINK系,Versaloon,その他多くのJTAGデバイス
transport select swd
->FT2232系,JLINK系,Versaloon,CMSIS-DAP
transport select hla_swd
->STLink/V2,STLink/V2-1
transport select hla_jtag
->TI-ICDI
なお、今回の統合でSWD接続においてレグレッション・テストを行って
いなかったようでSWDでエラーが発生してしまいました。私はお盆前に自作の
パッチを適用したバイナリを公開していましたが現在はこの問題に気付いた
方が別のアプローチからパッチを提出しマージされております。
LPC17xx系でDAPIDの問題が残ってますがマイナーな問題なのでじきに
修正されると思います。
現在はすべてのtransportでスムーズにOpenOCDが利用できます。
あとは微妙に残ってるJTAG依存な処理の完全切り離しとSWDのSRSTコント
ロールの最適化が達成できたらOpenOCD導入のハードルは下がると思います。
というわけでおきぱにあるOpenOCDバイナリもどしどしご利用ください!
OpenOCD小ネタ11 -EFM32 ZeroGeckoとJLinkのSWD接続正式対応-
以前ちらっとお見せしましたがEFM32のZeroGeckoシリーズの
評価ボードをだいぶ前に手に入れて、評価しております。
MCUにはおなじみトカゲのマークがあります。Cortex-M0+コアを持つ
EFM32ZG222F32が搭載されています。
ボードは低消費電力のアプリ作成を意識したものになっていて搭載されて
いる液晶もメモリ液晶と呼ばれる超低消費電力なものとなっています。
最初に書き込まれているプログラムは、メモリ液晶を利用したインベーダー
もどきなゲームを遊ぶことができます。
なおこのゲーム、一機死んだら即ゲームオーバーなかなりシビアな代物です!!!
今回の記事に合わせ、私が基本としているLED&UARTなEFM32評価ボード向けの
GCCプロジェクトも作成しております。
低消費電力モードは使わず極めてシンプルな代物です。
また、以前もふれましたがOpenOCDからもEFM32ZGシリーズも書き込みが
できるように対応しております。EFM32自身はSW-DPしか持たないので
書き込み/デバッグするためにはSWD接続可能なアダプタが必要となりますが
現在ではSTLink/V2,JTAGKey2,Versaloon,そして後で述べるJLinkがSWD接続
対応のデバッガアダプタとしてOpenOCDから使用可能になっておりますので
不自由はしないでしょう。
こちらは素組みのEFM32ZG板をSWD接続版のJTAGKey2でデバッグしてる
ところです。もうおなじみの画面ですね。
話は評価ボードに戻しますがこちらにはJLink-OBと呼ばれる他社向けの
MCU評価ボード専用のJLinkが搭載されております。LPC-Link2等でもほぼ
同じ仕組みでオンボードでJLinkをエミュレーションしていますが従来、
OpenOCDからはJTAG接続だけが可能でした。
したがってSW-DPしか存在しないEFM32ではOpenOCDで書き込みデバッグする
際はオンボのJLinkは無効にしてSTLink/V2やVersaloonのSWD版で使用
せざるを得なかったのですが、少し前にJLinkも
正式にSWD接続に対応し、単体でフル活用できるようになっております♥
オンボJLinkでOpenOCDです。JLink純正のドライバじゃないと外部に
デバッグプローブを引き出すことはできませんが私の場合はJLinkエミュが
可能なLPc-Link2を所持してるので通常はlibusb-1.0のみで十分だと思ってます。
ここでOpenOCDでEFM32シリーズを操作するためのコツですが…EFM32は
リセット直後の短い時間の間だけSWDの信号線が別の独自のデバッグ
プロトコルとして挙動するのでSRSTと組み合わせて操作することが
できません。したがって"connect under reset"は使用不可能になります。
誤って低消費電力モードにしてしまうとOpenOCDからの操作ではもう
元に戻せなくなりますので、くれぐれもご注意ください。
しかしながらEFM32板のオンボJLinkはsegger純正ドライバとEFM32が
提供するデバッグツール"energyAware Commander"から独自プロトコルの
操作が可能なため、初期状態に戻すことができるので心配はいりません。
ここまではEFM32とオンボJLinkについて述べてきました。私はJLink化が
可能なLPC-Link2を持っていますのでLPC-Link2にJLinkのファームウエアを
再び書き込みこちらも同じようにSWDで接続出来るか試してみたいと思います。
↑ターゲットはトラ技ARMライタという名のLPC11U35板です。
ライセンスの関係上NxP以外の製品で使うところはお見せできませんが
OpenOCDではほぼすべてのARMマイコンを書き込みデバッグできる攻守ともに
非常にバランスの良いデバッガアダプタとなりました。
20kBほどの同一のバイナリを同一のUSBポートから書き込んだときの
CMSIS-DAPとJlinkエミュとの速度の比較です。
*CMSIS-DAP on LPC-Link2
wrote 20480 bytes from file main.elf in 10.265428s (1.948 KiB/s)
verified 20204 bytes in 0.437491s (45.099 KiB/s)
*JLink on LPC-Link2
wrote 20480 bytes from file main.elf in 2.624950s (7.619 KiB/s)
verified 20204 bytes in 0.265620s (74.281 KiB/s)
CMSIS-DAPファームの時はOpenOCDの実装がせっかくのブロック転送機能を
フルに利用していない残念仕様のためやたらと遅いのですがJlinkエミュなら
バルク転送がびしばし使えるので超早いです♥但しSRST/TRSTの操作が
ちょっと怪しい所があります。
seggerの純正のツールではちゃんと操作できるので時間を見て両者の挙動の違いを
詰めて行きたいと思います。現状SRSTを必ず要する場面は限られていますので
JLinkエミュにしっぱなしの方がサクサク作業を進められると思います。
ねむいさんのおすすめです。
(※ただしNxP製品以外の書き込み/デバッグに使っちゃ駄目ですよ!)
20140820追:
F**K
今回は数日前のOpenOCDのコミットでHLA(HighLayerAdapter)系デバッガ
アダプタのcfgが一般の物に統合されたというかなり重要なことについても
お伝えしたかったのですが、JlinkのSWD対応の紹介で長くなりすぎましたので
次回じっくりと解説させていただきます。
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のボードとともに
ご紹介させていただきます。
STM32F4シリーズを使ってみる10 -CMSISがバージョンアップした-
STマイクロさんから超安価なArduino用拡張ボード互換且つmbedサポートな
STM32 Nucleoなるボードが発表されすでに販売されております。
ねむいさんもSTM32F030シリーズが載ったタイプのnucleoボードを
mouserから購入しました。
…のはいいのですが一緒に購入したEFM32のCortex-M4バージョンWonder Geckoの
単品が輸出規制に見事に引っかかりてんやわんやがあったため今だ手元には
届いておりませんorz入手出来たらぶろぐに書きますのでしばしお待ちを。
ちなみに元凶のWonderGeckoにはハードウエアAESが搭載されています。
これが暗号に関する技術のため他社のマイコンでも暗号化機能を持つ品種は
しばしば輸出規制に引っ掛かります。ちなみに"ZeroGecko"にもばっちり
ついていたのですがマイコン単品ではなく評価キットという形で同時に
購入したので引っ掛からず素通り。なんといい加減な…#
…まぁ海外またぐ流通では非情にとてもよくある事柄ですねorz
EFM32の件については後日OpenOCDカテゴリでもご紹介します。
さて、前置きが長くなりましたが少し前にCMSISがバージョン4
(以下CMSIS-V4)に上がっております。但し"ARM,LTD.が提唱しているCMSIS
という規格全体"がバージョン4になったという意味ですのでcore_cm0.h等の
コアに関するヘッダファイル単体はV3.20->V3.30と
いうバージョン推移となっておりますのでご注意ください。
非常にややこしいですがV4.00ではありません。
あと以前も述べました気がしますがARM社がリリースしているCMSISのコアヘッダファイル
(本来はここまでがCMSISと呼べる範疇)とSTマイクロやNxP等各ベンダがリリースして
いるCMSIS"準拠"ペリフェラルライブラリまで全部ひっくるめて"CMSIS"と混同して呼称
される方が2014年の未だになっても非常に多いです。
ARM本家に日本語で概念が記されていますのでしっかり覚えておきましょう。ちゃんと
違いを理解しておかないと展示会とかイベントやセミナーで"CMSISって無駄にコード
サイズ増えるから使いづらいですね(地獄のミサワみたいな顔で)"と言ってしまい数か月
後に自分の言った言葉の意味を漸く理解して時間差で恥かきます。
かくいう私もえらそうなこと(地獄のミサワみたいな顔で)言ってますが最初にSTM32に
触れた時は思いくそ勘違いしておりましたがー!
…すみませんまた話が脱線しました。今回のCMSIS-V4からは前回の更新で
ヘッダファイルのみが付与されていたcmsis-osが全てのソースコードが
添付されCMSIS_RTXというフォルダに同梱されております。
ライセンス的にもBSDライクなのでむしろFreeRTOSよりも自由度が高いかも
しれません。GCCのコマンドラインでビルドできるようになったら爆発的に
普及すると思います。私もどのようにして実装するか試行中です。
そういう訳で私のいつものSTM32F4のプロジェクトは上記の最新のCMSIS
コアヘッダファイルに差し替えさらにChaN氏のFatFs0.10aのかなり
クリティカルな修正も反映済にしてあります。
Makefileやリンカスクリプトの記述も将来を見据えていくつか変更を加えて
いるので、私のサンプルをベースに何かを作成されている方はご注意ください。
そしてこの記事を書く少し前にSTマイクロよりまたまた新しいSTM32向け
フレームワークが提示されていました。STM32CubeMXと呼ばれるコード
テンプレート作成のためのツールを通してプロジェクトの土台作りの簡略化を
狙うとのこと。
このSTM32CubeMXには今回のCMSIS-V4の思想を反映したCMSIS-Driverなる
ハードウエアの抽象化を狙った規格に準じた新たなSTM32F4向けのペリフェラル
ライブラリが準備されております。
以前のSTM32F4向けCMSIS準拠ペリフェラルライブラリはすでにNRND(非推奨)
となっていますのでF4以外のSTM32品種も今後はこちらをベースとした
ライブラリ群に置き換わっていくことになると思います。
サラっとみた感じでは以前と同じCMSIS準拠なのですがマクロ定義や関数が
かなり違うので右を左にやる感覚で置き換えは不可能で実質全くの別物を
移植する感じで挑みたいと思います!
まずはおなじみのF4系から攻めていきますのでこうご期待!
ちなみにNxPのLPCOpenではSTM32に先駆けて再配布の規約をようやく明確化し、
そして体系化もしたライブラリ群を提供していましたが微妙にCMSISに
準拠していないのでChaN氏にまたDisられないように早急にCMSIS-Driverに
基づいたペリフェラルライブラリ群の整備を行うべきだと感じます。
出た当初は少ない品種だったためまだまとまっていましたが周辺レジスタの
構成が全く違うのに無理矢理LPC1xxx系でひとまとめで括ろうとしたせいで
逆に冗長な記述が増えてしまい結局各シリーズごとにLPCOpenが分かれだした
始末で混乱を極めている感がします。
はっきり言って開発のしやすさ/ライブラリ整備の点ではSTM32やEFM32に
大きく引き離されています。
ChaN氏も言ってましたがこれは非常にまずいです。使いやすいライブラリを
提供するというのはチップのerrataを出さないことと同じくらい非常に
大事なことだと思います。
と、
mbedのセミナーに絶対に行けなくなるような最後っ屁を放ち今日の日記を〆ます。
かしこ
いろいろ試す19
あっという間に(仕事上の)夏が終わってしまいました・・・日記上は更新
してないので夏ばてしてた様に見えるでしょうけどもじつは更なる跳躍の
ために私なりにいろいろやっていたのですよぅ!
とくに東海自然歩道関連もトレーニングを重ねて猛暑の中で難所をクリア
してきたのでこちらも近いうちにじっくりと・・・
●夏休みの工作☆LPC4088
さて、円高の頃に買い込んでいた基板やチップの中で最後の大物で
残っていたLPC4088に着手をはぢめました。
基板はLPC1788ですがLPC4088はほぼピンコンパチなのでそのまま乗っけ
られます。生基板なので仕事や家事終わったあとに大量の部品をちまちま
ちまちま付け続けお盆休み明けにようやくFatFsまで動作を確認しました。
LPC1788のときと同様に大容量のSDRAM乗っけてます。STM32系と違って
heapやstackとしてがんがん使ってもコケないのがすばらしい!
(STM32F1系のFSMCはerrataとしてFSMC上のSRAMをheapやstackに使うな
ととうとう明記されてしまいました!!!11!!F***K!!!!)
LPC4088はLPC1788には存在しないSPIFIインターフェースを持ちます。
しかし・・・
困ったことにLPC1788系と互換性を保った結果LPC4300系と違いSSPポートの
互換性がなくOpenOCDから書けないことが判明orzOpenOCDはSPIFIではなく
ポート互換のSSPで書いてたんですよね〜
・・・ドライバの対応はnuvotonドライバの時よりしんどそうだったので
早々にあきらめ外付けのコネクタを設けてFlashROMを使って書き込みする
作戦に変更しました。SPIFIは容量を喰うFONTXファイルの置き場に
使用していきます。
あと付けてないのはLCDインターフェースですがこれは私がいつも使ってる
MCUバスではなくRGBでつなげるタイプのものを必要とするのでそれに合う
液晶の調達から手を付ける予定です。
●Kinetis K20/K10シリーズを触る
わざわざ独立の記事にするほどでもない超小ネタなのでここでさらっと
紹介します。少し前にFRDM-K20なるボードが販売されましたがこの
シリーズの一番小規模のチップであるMK20DX32VLF5とMK10DX32VLF5を
ちょっと触りました。写真はK10のほうです。
K20はUSBと内蔵3.3Vレギュレータが付いてて本当にこれひとつで完結した
基板も作れます。実際に安価に製作されている方もいるようです。
ねむいさんがこれを単品で購入した理由はOpenOCDの書き込み/デバッグ
確認のためだけに過ぎません・・・
が、このチップ特有の機能にちょっとはまってしまいました。
以前、私はKL25やKL05を触りOpenOCDへの書き込み/デバッグを可能にして
きましたが、K10/K20もコアがCortex-M4(F無し)違いでKLシリーズと同じ
ように楽勝だろうと高をくくってました。しかしPOR後のウォッチドッグ
タイマの挙動が違っていてブート直後に即効ウォッチドッグの機能を殺しに
いかないとせっかく書き込んだのにセキュリティ状態に突入してしまい、
mass-eraseして解除してからGDBからイメージをもう一回ロードしないと
デバッグできない事態になることが判明!
工場出荷時はセキュリティ状態は解除されてるらしいですがこのウォッチ
ドッグリセットのせいで実質セキュリティ状態になってる為STLink/V2などの
MDM-APを直接叩くことが不可能なデバッガハードウエアでは手詰まりに
なってしまいます・・・ぬぎゃー
(これFRDM-K20が国内販売されたらまたねむいさんのとこにプログラムが
書けなくなったって質問飛んでくるんだろうなぁ・・・・)
●EFM32シリーズもおさわり
同じくOpenOCDの書き込み確認のために単品購入したチップです。
EnergyMicroというメーカのチップでしたが現在はSiliconLabs社に吸収されています。
Gecko(ヤモリ)のマークがチップ上に付けられたイカすデザインでCortex系の
マイコンでは超低消費電力方面に力を込めたラインナップとなっています。
ねむいさんがチラッと触った限りではCMSISライブラリがSTM32ばりに充実
していてCMSISにどっぷりつかったねむいさんの流儀に非常に組み込みやすく
最初の取っ掛かりのLチカ作成が最速の30分で完成しました(逆に一番難儀
したのはあちこちにファイルが点在してて把握しづらく挙句の果てにKeilの
サンプル中にしかCMSISヘッダファイルが無い品種もあるKinetis・・・
てか公式のサイトでリンク切れはまずいですよぅ)。
書き込みデバッグももちろんすんなり完了ですごい相性よかったので
メインのSTM32からちょっと浮気しちゃいそうです・・うそですよぅうふふふ
というわけでOpenOCDのバイナリには上記3品種の書き込みcfgファイルを
追加してます。パッチも前回から不備が見つかったものをさらに改修して
ますので私と同じ環境をお持ちの方は試してみてくださいね〜
・・・すっかりOpenOCDありきのマイコンいじりになってしまいましたが、
実務ではルネさs
(日記はここで途切れている)
Project Examples and Misc Files
ねむいさん専用のFatFs中心のサンプルコード・プログラム置場です。
私が使いやすいようにGCC環境に勝手にポーティング&改造してあります。
文書の記述間違い・バグを見つけた場合は勝手に修正しています。
太字のリンクは更新頻度高。試される場合は自己責任でお願いします。
Dear All
Here is my ChaN's FatFs implementation examples.
Those projects are suitable to build in GNU-GCC environment.
If you have any question,see here to contact me.
●ARM
(Confirmed on 64bit Win7,8,10,11 by ARM-GCC)
ビルドの仕方はこちら
Building Method on Native Windows Environment is Here.
-Cortex-M7
STM32H7xx(STM32H747I-Discovery supported!)
(CubeH7:V1.12.0/HAL:V1.11.5)
(+ HelixMP3/AAC,libjpeg,libpng and giflib decode example)
*TFT Control Example with ChaN's FatFs(SDMMC-Interface)
It supports SDXC and eMMC!
STM32F7xx(STM32F769I/746G-Discovery supported!)
(CubeF7:V1.15.0/HAL:V1.2.9)
(+ HelixMP3/AAC,libjpeg,libpng and giflib decode example)
*TFT Control Example with ChaN's FatFs(SDMMC-Interface)
It supports SDXC and eMMC!
-Cortex-M33
STM32H5xx(STM32H563ZI-NUCLEO supported!)
(CubeH5:V1.1.0/HAL:V1.1.0)
(+ libjpeg,libpng and giflib decode example)
*SPI-TFT Control Example with ChaN's FatFs(SDMMC-Interface)
It supports SDXC and eMMC!
STM32L5xx(STM32L552ZE-Q-NUCLEO supported!)
(CubeL5:V1.5.0/HAL:V1.5.0)
20250501更新停止
(+ libjpeg,libpng and giflib decode example)
*SPI-TFT Control Example with ChaN's FatFs(SDMMC-Interface)
It supports SDXC and eMMC!
-Cortex-M4F
STM32F4(STM32F407ZGT6/PowerAVR-RedBull Compatible Circuit
& STM32F437IIT6/盈钰電子STM32F4xxIxT6开发板互換
& STM32F407VGT6/STM32F4Discovery
& STM32F429ZIT6/STM32F429I-Discovery are also supported!)
(FWLib:V1.8.0)
(+ HelixMP3/AAC,libjpeg,libpng and giflib decode example)
*TFT/OLED Control Sample with ChaN's FatFs(SDIO&SPI-Interface)
It supports SDXC and eMMC!
STM32F401xx(STM32F401RET6/NUCLEO-F401RE Compatible Circuit)
(CubeF4:V1.24.1/HAL:V1.7.6)
*KickStart & I2C-LCD/OLED and many Devices example
STM32F334(STM32F334R8T6/NUCLEO-F334R8 Compatible Circuit)
(CubeF3:V1.11.0/HAL:V1.5.3)
*KickStart & I2C-LCD/OLED many Devices examples!
LPC4088(LPC4088/EA4088 Board Semi-Compatible Circuit)
*ChaN's FatFs Sample(SDMMC-Interface)
It supports SDXC and eMMC!
LPC4357(盈钰電子LPC4357开发板互換)
*ChaN's FatFs Sample(SDMMC-Interface)
It supports SDXC and eMMC!
LPC4330(LPC4330-Xplorer Compatible Circuit)
20150912更新停止
*Dual/SingleCore-KickStart
LM4F120H5QR(Stellaris Launchpad Compatible)
20150912更新停止
*KickStart
-Cortex-M4
K20(MK20DX32VLF5)(Bare-Metal)
*KickStart
-Cortex-M3
STM32F103(STM32F103VET6/STM32 Primer2)
(FWLib:V3.6.1 ,USBLib:V4.0.0 ,
FatFs STM32F1 SDIO-Interface Imprementation)
*Bare-Metal GPS & GNSS-Tracker using ChaN's FatFs
EFM32TG822F32(Bare-Metal for TinyGecko)
*LED-Blink & UART
LPC13xx(LPC1347/LPCXPresso Compatible Circuit)
20150912更新停止
*KickStart
STM32F2(STM32F207ZGT6/PowerAVR-RedBull Compatible Circuit)
20150912更新停止
(FWLib:V1.1.2)
*(Deprecated) TFT/OLED Module Control Sample with ChaN's FatFs(SDIO-Interface)
STM32F107(STM32F107VCT6/CQ-STARM-JUNKBOARD Compatible Circuit)
20150912更新停止
(FWLib:V3.6.1 ,USBLib:V4.0.0)
*(Deprecated) TFT/OLED Module Control Sample with ChaN's FatFs(SPI-Interface)
STM32VL(STM32F100RBT6/STM32VL-Discovery Compatible Circuit)
20150912更新停止
(FWLib:V3.6.1)
*(Deprecated) TFT/OLED Module Control Sample with ChaN's FatFs(STM32VL SPI-Interface)
STM32L(STM32L152RBT6/STM32L-Discovery Compatible Circuit)
20150912更新停止
(FWLib:V1.1.1)
*(Deprecated) TFT/OLED Module Control Sample with ChaN's FatFs(STM32L SPI-Interface)
MB9BF618T(FRK-FM3-GARBAGEBOARD Compatible Circuit)
20150924更新停止
*(Deprecated) LED-Blink & UART
*(Deprecated) TFT/OLED Module Control Sample with ChaN's FatFs(MFS SPI-Interface)
MB9AF112K(Bare-Metal)
20150912更新停止
*(Deprecated) LED-Blink & UART
LPC177x/8x(LPC1788/EA1788 Board Semi-Compatible Circuit)
20160331更新停止
*(Deprecated) ChaN's FatFs Sample(MCI-Interface)
-Cortex-M0+
STM32U083xx
(STM32U083RCT6-NUCLEO Compatible Circuit)
*KickStart & I2C-LCD/OLED and many Devices examples!
STM32C031xx/STM32C011xx
(STM32C031C6-NUCLEO/STM32C011XX-DK Compatible Circuit)
*KickStart & I2C-LCD/OLED and many Devices examples!
STM32G03xxx(STM32G0316-DISCO Compatible Circuit)
*KickStart & I2C-LCD/OLED and many Devices examples!
LPC824(LPC824/LPCXPresso Compatible Circuit)
*KickStart
KL25(MKL25Z128VLK4/FRDM-KL25Z Compatible Circuit)
*KickStart
KE02(MKE02Z64VQH2/FRDM-KE02Z Compatible Circuit)
*KickStart
EFM32ZG222F32(For EFM32ZG-STK3200)
*LED-Blink & UART
STM32L05xxx(STM32L053C8/STM32L0538-Discovery Compatible Circuit)
*KickStart
LPC812(LPC812/LPCXPresso Compatible Circuit)
20160331更新停止
*(Deprecated) KickStart
KL05(MKL05Z32VFM4/FRDM-KL05Z Compatible Circuit)
20170629更新停止
*KickStart
-Cortex-M0
STM32F03x(STM32F030R8T6/NUCLEO-F030R8 Compatible Circuit)
(CubeF0:V1.7.0/HAL:V1.5.0)
*KickStart & I2C-LCD/OLED and many Devices examples!
NUC120LE3(NUC120LE3AN/NuTiny-SDK-NUC120 Compatible Circuit)
*KickStart
M0516LBN(NUC120LE3AN/NuTiny-SDK-M0516 Compatible Circuit)
*KickStart
LPC11u35(LPC11U35/501 CMSIS-DAP Compatible Circuit)
*KickStart
STM32F05x(STM32F051R8T6/STM32F0-Discovery Compatible Circuit)
(CubeF0:V1.3.0)
20150922更新停止
*(Deprecated) KickStart
LPC11xx(LPC1114/LPCXPresso and MARY and DIP28-package Compatible Circuit)
20150922更新停止
*(Deprecated) KickStart
-ARM7TDMI
LPC23xx(LPC2388/CQ-FRK-NXP-ARM-JUNKBOARD Compatible Circuit)
20181222更新停止
*(Deprecated) TFT/OLED Module Control Sample with ChaN's FatFs(MCI-Interface))
●AVR
-AVR-Dx
AVR128DA48 CuriosityNANO
(and AVR128DB28,AVR64DD28 baremetal supported)
*UART & Internal Temperature Test
-XMEGA
ATxmega128A1/Atxmega128A1U
20240101更新停止
*(Deprecated)TFT/OLED Module Control Sample with ChaN's FatFs(SPI-Interface)
●Windows Tools and Misc
- OpenOCD for Windows
ocd-0.12.0+dev-00927-g6834f022b(built on 20250413)
Windows 32bit Binary Nemuisan's Special Version
*Supported OS*
->Windows7,8,10,11(x86 or x64)
->WinXP last version is here.
*Supported Debugger Hardware*
->JTAGKey,JTAGkey2 and many FT2232 Devices(WinUSB)
->JLink(WinUSB)
->JLink On LPCLink2(WinUSB)
->JLink On LPCXpressoV2/V3(WinUSB)
->JLink-OB(WinUSB)
->STLink,/V2,/V2-1 and /V3(STMicro's Distributed USB-Driver/WinUSB)
->Versaloon(WinUSB)
->TI-ICDI(TI's Distributed USB-Driver/WinUSB)
->CMSIS-DAP(Generic USB-HID/Mbed VCP Driver)
->Nulink(Generic USB-HID)
*OPENOCD FOR WINDOWS BINARY HERE!
SHA-1 HASH:dbd869c023d119b05d879fee52125d16530cef71
OpenOCD(0.13.0)'s Specific MCU cfg Files for Flash Programming=
*OpenOCD spesific MCU-Aimed cfg files Nemuisan Special
↑Notice:Already contained in my OpenOCD Binary.
For self build users & linux users only.
OpenOCD(0.13.0)'s Patch Set(Useful Functions & Fix Patches)
*OpenOCD Patch Set Nemuisan Special
↑For self build users & linux uses only.
- AVRDUDE for Windows
AVRDUDE for Windows v8.0 32bit Binary(built on 20250413)
Nemuisan's Special Version
Supported OS
->Windows7,8,10,11(x86 or x64)
*AVRDUDE FOR WINDOWS BINARY HERE!
-SPIROM Writer Tools
FLASHROM for Windows(SPI-ROM Writer) (built on 20250413)
1.6.0-devel (git:v1.5.0-44-g4d4688cc) 32bit Binary
For FT2232/FT232H Devices(WinUSB)
*Flashrom_v1.5.0-44-g4d4688cc.7z
-JTAG Tools
UrJTAG for Windows v2021.03 #d9a2943f(built on 20250413)
*urjtag.tar.gz
SupportedHardware
->JTAGKey,JTAGkey2 and many FT2232 Devices(WinUSB)
->JLink(WinUSB)
->JLink On LPCLink2(WinUSB)
-JTAG Hardware
-Schematic of JTAGkey2 Compatible Circuit Rev.5
(Supports 1.4〜5.5V WideVoltage Range)
*JTAGKey2CompatibleCircuit_Rev.5
かつてこの欄でFirefox拡張「合間合間に」のバックアップを公開していました。
20191124更新:
waterfox向けの「合間合間に」のふたばの仕様変更対応版をサルベージしましたので
こちらでも公開します。
※「赤福Firefox版」/「合間合間に」は有志の方がGitHubにて管理されています。
※unmhtはこちらに残っています。
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (117)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (84)
- STM8 (2)
- Wirelessなアレ (16)
- おきぱ (1)
- ブラウザベンチマーク (29)
- 日本の自然歩道 (27)
- 中部北陸自然歩道を往く -砺波平野の県境を駆け抜ける!-
⇒ ねむい (12/18) - 中部北陸自然歩道を往く -砺波平野の県境を駆け抜ける!-
⇒ ひかわ (12/15) - 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)
- April 2025 (1)
- March 2025 (1)
- February 2025 (1)
- January 2025 (1)
- December 2024 (2)
- November 2024 (1)
- 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.