いろいろ試す66

先月修正して公開したコードに細かい修正ずっと加えてたら
あっという間に1か月過ぎてしまいました…


●Picoscope7のソフトアップデート!ようやく安定
…か?

7になってからあちこちが不安定になって使いづらくなってしまった
Picoscopeのソフトですが7.1.50にバージョンアップしております。
バージョンアップのたびに修正項目に"improvements to stability"
の文字列が出てきますが一抹の不安を胸にインストールしました・・。


orz
固まった…
マウスのホイールで時間軸カチャカチャ変えてただけなのに…
ねむいさんはよくいらん事してシステムとかプログラムとか人間を
機能不全にさせてしまう能力があるようです。
でもそれがバグ出しの役に立ちません。いらん事してるからね。

で、無駄だとは思ったけどPicoscopeに英文で発生条件の詳細を
添えてバグレポート提出してみたのですが、意外にも向こうでも
再現確認取れたようで対策も2点教えてくれました。
対策1. 'File' menu ->
  'Startup settings' ->
  'Load factory default settings'を実行

➡全然ダメ

対策2.C:¥Users¥%USERNAME%¥AppData¥Local¥Pico Technology
 の中にあるファイル全部削除
 
➡完全とはいきませんがなんでか不具合の発生確率がだいぶ
 下がりました…もうこれでいいや…
 
てわけで会社で使用しているPicoscpe7のソフトは次のバージョン
アップまでこれで乗り切ることにしました…次に期待…


どうでもいいですが便利なダウンロート直リンクがクリック
したら404にリダイレクトしやがるようになりましたファ〇ック!



●LAP-Cのソフトが神対応!有償のハードウエアトリガが無料に!!
かつて秋月電子でも販売され、改造もできたりして一世を風靡した
台湾製のLAP-Cというロジックアナライザがありました。

そして2025年になった今もソフトはアップデートされており、Win11にも
対応したV3.14.14が新たにリリースされたのですがななんと!
有償だったハードウエアトリガが無料解放となりました!!
ハードウエアトリガはプロトコルアナライザ機能のひとつで特定のデータ
でトリガをかけることができる超便利機能です!!

販売初期はプロトコルアナライザすらも有償だったのですがハードウエア
トリガが無料開放になったこれはまさに神ですね…!
ちなみにねむいさんこのロジアナ(LAP-C162000)を持ってるのですが
残念ながら私の頭が悪く正直ほとんど使いこなせていません。
Picoscopeのデータ解析機能でほとんど用が足りちゃうから…

でも持ち腐れてるのもよくないので使用記は一つ書いてみたいです。


●TEAMGroupのS.M.A.R.T.が見れるMicroSDカード
S.M.A.R.T.(以下SMART)が見られる非産業用MicroSD第二弾です。
EXPERT S.M.A.R.T. Micro SDXC メモリーカードですって〜
なんというか9年くらい周回遅れですnゲフンゲフフン





最近のUHS-1では当たり前になった100MByte/Sec越えの転送と
寿命がわかるSMART機能を搭載したカードです。
最近は2TByteモデルも追加されています。

ねむいさんも256GByteモデルのTTCS256GIA2V3003購入してとりあえず
メーカーが提供しているWindowsの寿命判定ツールとやらで寿命を見て
みようとしましたが…


死ーん…
寿命判定用のツールがなんだかちょっと作りが悪いです。
ねむいさんの環境ではUSB接続のHDDを複数つないでいるですが
その状態だとツールからドライブは認識してるのになんでか
SMARTのデータが捕れません。エラーも出ません。


ほかのUSBドライブを全部外してこのMicroSDつないだUSBカード
リーダーだけにしたら認識して寿命が出てきました。
使えねぇですよぅ…

ねむいさんの興味はマイコンからCMD56発行してSMARTのデータを
引っ張ってこれるかどうかなのです。
TeamGroupに英文でストレートに問合せしたら5時間くらいの過去最高速で
ストレートに意思の疎通を断られたので、
ねむいさん独自に調べたこのカードに関するあれこれの
情報を当ぶろぐ上にて全公開させていただきます!!!!


結論から言うとCMD56の手順はDELKINとまったく同じとなります。
以下の手順でSMART情報を得ます。
1.まずCMD56コマンドの引数に0x00000010を取り、
 512バイトのデータ(ゼロフィルでよい)を書き込みます。
2.その後CMD56コマンドの引数に0x00000021を取り、
 512バイトのSMARTデータを読み出します。


CMD56のデータのとり方としてはいわゆるDELKIN系で、
書き込み(プリロード)->読み出しの二段階アクセスが必要な
タイプとなります。

取得したSMARTの生データをこちらに置いておきます。

生のSMARTデータが得られたのは良いのですが寿命を示すデータの
オフセットはどこなのか!?今度はそれを調べることになります。

Windows上のツールからSMARTデータを引っ張ってくる仕組みが
わかればSMARTデータのハイジャックも可能かもしれないので
まずはWindows上のツールからどういうデータのやり取りしてるか
調べてみました。

ひとまずWireSharkでUSBバルク転送のデータのやり取り調べたら
大体何やってるかが分かりました。
このWindowsツールではTranscendみたいにCMD56パススルーする
特殊な方法は使っていません。
ていうか汎用のカードリーダーではTranscendのような技はできません。
実際やっていたのDELKINのものと同じく特定のアドレスに特定の
順番で読み書きして
SMARTデータを得る"開けゴマ"方式のやつです。

ねむいさんが買った256GBの奴は実際の流れはこんな感じでした。
1 ReadCapacity
2 ReadCapacity
3 ReadCapacity
4 READ LBA:0x00000100 0データ
5 READ LBA:0x00001000 0データ
6 READ LBA:0x00000300 0データ
7 READ LBA:0x00000800 0データ
8 READ LBA:0x00000500 0データ
9 READ LBA:0x00000600 0データ
10 READ LBA:0x00005380 0データ
11 READ LBA:0x00007374 SMARTデータ(暗号化してないモロデータ)
12 ReadCapacity ☜ここで通常モードに戻ってる

最後らへんのLBA:0x00007374にアクセスしたときに何の暗号化も
していないCMD56の時と全く同じSMARTの生データを得ています。
DELKINはこの辺しっかりしていてデータに何らかの暗号化をしている
らしく、読み出しだけじゃなく書き込みも交えており2025年の今も
何やってるか不明です(代わりにCMD56があるので問題ないですが)。

さて生データのやり取りしてるのならSMARTデータのハイジャック
簡単です。STM32F7のUSB-MSCプログラムを引っ張り出してきてツールが
LBA:0x00007374を読みだそうとしたらこちらが用意した偽SMARTデータを
お出しするプログラムを仕込めばよいわけです。簡単ですね〜
そして寿命を示すアドレスオフセットも大体当たりつけておりまして
ツールは99を返しているので0x63って値がある192番目のをわざと値を
変えて試してみました…

はい勝利。偽SMARTデータは78にしましたがドンピシャですね。
あとはねむいさんのおもちゃです。

100%超える値ぶっこんで見たら100%上限にしてるみたいですね。

0にしたらこんなんになりました。

というわけでかなりガバガバだったおかげでこのカードでいろいろ遊べて
だいぶ溜飲が下がりましたのでだいぶ満足してしまいました。
でもSMART捕りたいだけなら安くて入手しやすいTranscendのやつ買えば
断然良いので無理してTeamのこのカード使う意味はないです。


ちなみに転送速度100MByte/Sec越えはDDR200の規格外規格の手順を使って
ない独自規格のようで、DDR200対応のカードリーダーでも100MByte越えは
できませんでした。Team製の専用カードリーダーが必要みたいです。
汎用性考えるとやっぱり無理して買う必要もないかなと思います。

話は前後しますがSTM32H7のいつものでカード情報を引っ張っておきます。

FatFs module test terminal for STM32H747XIH6
LFN Enabled, Code page: 932
AppVersion : W.I.P
Build Date : Mar 11 2025
>fg piano

rc=0 FR_OK
>fo 1 ftbt.mp3

rc=0 FR_OK
>fr 132949600

132949600 bytes read at 21935 kB/sec.
>fs 0

FAT type = exFAT
Bytes/Cluster = 262144
Number of FATs = 1
Root DIR entries = 0
Sectors/FAT = 32768
Number of clusters = 945816
Volume start (lba) = 65536
FAT start (lba) = 98304
DIR start (lba,clustor) = 4
Data start (lba) = 131072

Volume name is TTCS256GIA2
Volume S/N is 1DF1-C03B
...rc=5 FR_NO_PATH
>ds 0

rc=0
Drive size: 484388864 sectors
Erase block size: 8192 sectors
Default r/w block size: 512 bytes
Card type: SDv2(Block)
CSD:
00000000 40 0E 00 32 DB 59 00 07 37 CB 7F 80 0A 40 00 89 @..2.Y..7....@..
CID:
00000000 45 2D 42 53 74 6F 72 61 07 7B 77 45 B9 71 85 F3 E-BStora.{wE.q..

Parsing SD CID Register
Manufacturer ID :0x45
OEM/Application ID :-B
Product Name :Stora
Product HwRev :0
Product SwRev :7
Serial Number :0x7B7745B9
DateCode.Month :5
DateCode.Year :2024

OCR:
00000000 C1 FF 80 00 ....
SD Status:
00000000 80 00 00 00 08 00 00 00 04 00 90 00 10 05 39 1E ..............9.
00000010 00 08 00 00 00 02 0F 00 03 00 00 00 00 00 00 00 ................
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
SCR:
00000000 02 05 84 8F 33 33 30 39 ....3309

Parsing SCR
SD Spec Version :2
SD Spec Version 3 :1
SD Spec Version 4 :1
SD Spec Version X :2
SD Security :0
SD Bus Width :5

SD_Spec V6.xx!
Detected as Not SD Card!
Available UHS-I Mode.
Available UHS Speed Class U3.
Available SD Speed Class 10.
Available Video Speed Class 30.
Available Application Performance Class2, A2 Card.
A2 CommandQueue Depth 2 Supported
A2 Cache Supported.
A2 Host-Initiated Maintenance Supported.
A2 Card-Initiated Maintenance Supported.
>

このカードのコントローラはSA3309というコントローラ
動かしてるようですね…DDR200対応のはずなのに通常の
DDR200移行の手順をさせなくしてるのほんとダメ


20250911追:
なんと9月に入ってHardDiskSentinelというSMARTを解析できる
ツールがTeamのこのカードに対応しちゃいました!!!
これはアツい!!アツすぎる…!!!!遅れてきた夏が始まる!!

とりあえず見てみました…!ダメダメな公式ツールからでは見えなかった
総書き込みセクタ数やPowerCycleCountなどの値が反映してるじゃあーりま
せんか!!!!なんという価値のある資料だッ…!!!そして…


ンアーッ!!TeamGroupの懐が(ガバガバすぎて)広すぎるよもぉおおん!!!!

…すみません表示してる数字に特に深い意味はないですが…
"smartデータハイジャッキング"でこんなお遊びできちゃいます♪

そんなわけでねむいさんが解析したEXPERT S.M.A.R.T. Micro SDXC256GBの
SMARTデータに情報を追記したものを改めて上げました…
Teamの中の人から刺客が来たら返り討ち処しますので取得はお早めに…!!
20250911追 終


●話は変わるが開発環境構築の記事更新の件どうなったの?
ギ ブ ア ッ プ
CodeLiteをGDBのGUIとしてなんとか使いこなそうとしましたがSIGINT発行による
HALTがどうしても出来ず、それ以前に安定してステップ実行することすらできず
諦めました…orz

しかし…
orzしたねむいさんの目と鼻の先には救済がありました。
マルチプラットフォームIDEのCode::Blocksです!!!!
最小構成のサイズは100MB以下と小さくGDBのGUIとして使うならこれで十分です。


runしてる最中にいつでもHALTがかかる!
IOVIEWも直感的で見やすい!なにより直接変更ができる!
GDB-Insightでできたこととほぼ同じ!

というわけでCodeBlocksに乗り換えてデバッグ環境を構築し、ねむいさんの
いつものではSTM32F4,STM32F7,STM32H7,STM32H5ですでにCodeBlocks環境に
乗り換えています!

Win10では安定してデバッグできるのが確認できたのでWin11環境へとアップ
デートして同じように動作確認が取れたら今度こそ開発環境の構築手順の
更新ができそうです…!!!

Comments

Post a Comment








Go to top of page