いろいろ試す55

もう1か月過ぎそうですがあけましておめでとうございました!!
1月2月は毎年死ぬほど忙しいのでいつも月末ギリギリの投稿です・・・



●OpenOCD 0.12.0ついにリリース!

あれ・・?0.13じゃなかったの…まぁいいや
いちおうRCが取れて正式にOpenOCD0.12.0となりました…

ナイトリービルドが当たり前になっちゃって正式リリースとか関係なしに
動いている今最新のが安定版…みたいな哲学的な状態となってますが今回は
ちょっと注意点があります

libusbのほうの最新のコミットでdeprecatedになった関数があり、
libusbに依存しているライブラリの中でdeprecatedなのを使っている奴が
ビルドエラーになってしまってます。


OpenOCDで引っかかっているのはJ-Link用ライブラリlibjaylinkで今の
ままではビルドが通らないのでおきぱのOpenOCDのバイナリでバインドして
いるのは古いv1.0.26のままとなっております。
libjayの方に更新かかってv1.0.27対応になったらまるっと差し替えます。

OpenOCDのwindowsバイナリはこちらです!


●avrdudeもついにv7.1に!
avrdudeのほうも長らく7.0だったのがようやく7.1となりました…!

相変わらず日付が間際らしいですがバージョン上がった日付のまま
いくらコミット進んでもここの日付は変えないみたいですね…

先月述べた通り表示関連が大幅変更になっていますが見た目は変わって
ないのでいつもと同じ感覚で使用できると思います。
また、libusbはOpenOCDと同じくv1.0.26としております。特に動作に
支障はないので当分1.0.26で行きましょう…

avrdudeのwindowsバイナリはこちらとなります!



●FatFsディレクトリ破壊問題に進展
MMCに書き込んだらFATディレクトリ構造が破壊される問題
下記の段階まで絞り込めてきました。

アロケーションユニットサイズが512バイト(1セクタ)以外
のものは書き込んだらディレクトリ構造ごと破壊



もうこれ以外の違いは判りませんがSDフォーマッタでくだんのMMCを
フォーマットするとFAT16で32セクタ(アロケーションユニットサイズが
16kバイト)になってしまうので512バイト以上のファイルをコピー(f_writeを
実行)したら確実に破壊されることがわかりました。


これを回避するためにはFAT32もしくはexFATでアロケーションユニット
サイズを512バイトでフォーマットしてやればどのサイズのファイルを
コピーしても破壊されることはありませんでした。

現行最新のFatFs0.15でも同現象を確認してさらに上記対処法で回避
可能なのですがどうしてそうなるのかというメカニズムは今後も解析を
続け、わかりしだい追ってお伝えします…!

MMCとか今頃使ってる人はいないでしょうけどもし同じ現象にぶち
当たった人はアロケーションユニットサイズを512バイトに固定して
FAT32かexFATでフォーマットしたら回避はできますのでお勧めします?


ついでですが今回の検証でSTM32F4のSPIモード時のMMCv3のクロックの
処理が誤っていたので(MMCv3は最大20MHz以下)修正しておきました。


●↑のついでにFatFs移植例の整備
STM32F4のソースに久々に手を付けたついでにSTM32F7とSTM32H7のFatFs
移植例も整備を行いました。makefileも見直しており、デバッグ時の
スイッチ新設とアセンブラファイルのビルド時のファイル名の小文字化
とかももう少しマトモな表現に直しました。

# Exchange Uppercase into Lowercase
#MPU_MODEL_LOWER = $(shell echo $(MPU_MODEL) | tr A-Z a-z)
lc_jimae = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
MPU_MODEL_LOWER = $(call lc_jimae,$(MPU_MODEL))

# Exchange Uppercase into Lowercase
MPU_MODEL_LOWER = $(shell echo $(strip $(shell echo $(MPU_MODEL) | tr A-Z a-z)))

なんで私はこんな苦しみ紛れに屁をこいたようなものを数年も放置して
しまっていたのか…時間を見てほかのSTM32シリーズにも展開しておきます。

現状は下記3つのプロジェクトに対して最新のものを反映しております。
ついでにHALライブラリもgithubの新しいものを反映するようにしました。
・STM32F4
・STM32F7
・STM32H7


●半導体品切れがいくつか復活するも
秋月ですごい高くなってる…特にLDOとかSTM32とか

私の記憶ではLT1963Aは450円くらいで買えたはずですが…円安とインフレ
めっ…ちなみにdigikeyでは20230131現在950円となりやがっておりおいそれと
使うことができない高根の花となってしまいました…

そしてADP3338もEOLNRNDとなってしまった今ドロップアウト電圧の低い高性能な
LDOを求めて難民になってしまいましたがいろいろ探して値段性能的に妥協
できそうなやつを見つけてみました(注:SOT-223-3パッケージ、Vin=5V限定)。

まずはSOT223パッケージで真ん中の足がGNDのLT1963A系のやつはMicroChip社の
MIC37100-3.3WSなんかが妥協できそうですね。MLCC使用OKです。
ドロップアウト電圧は0.5V/1AMAXで十分な性能があると思います。
そして値段も300円以下(20230131現在)なので価格的にも優しいです。

お次にSOT223パッケージで1PinがGNDの"LT1117系"のLDOですが、こちらは
DIODESのAP2114HA-3.3TRG1とかですね。こちらもドロップアウト0.75/1AMAX
でドロップアウト0.8V切りは一応クリアでESP32でも持ちこたえられると思います。
もちろんこちらもMLCC使用可です。


まだデータシート上で選定しただけですが特にLT1117系LDOの置き換えを狙う
AP2114HAについては実際に入手してESP32の基板で試してみたいところです!

Go to top of page