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なるボードが販売されましたがこの
シリーズの一番小規模のチップであるMK20DX32VLF5MK10DX32VLF5
ちょっと触りました。写真は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はこちらに残っています。

Go to top of page