MiniPro (XGecu) TL866 Ⅱ Pluse という安価な ROM ライタを買ってみました。
もちろん、中華からです。
https://www.aliexpress.com/item/TL866A-Universal-programmer-adapters-kits-TL866A-Programmer-Adapter-Socket-Extractor-Electronic-Components-Kit/32733156901.html?spm=a2g0s.9042311.0.0.31c74c4d96eVSE
- amazon -
WINGONEER TL866II Plus USB高性能 EEPROM フラッシュBIOSプログラマ、ATMEL AVR ATMEGA AT90 PIC GAL SRAM CMOS
この ROM ライタの一番のウリは 15,000 以上のチップに対応していることかな。
- AVR、PIC、EPROM、EEPROM など 15,000種 ものチップに対応
- 48 pin までの Flash メモリに対応
- ICSP サポート
- VCC 1.8V〜6.5V、VPP 1.8V〜18V 保護機能付き
- COMS、TTL などのロジック IC チェック
- 形状は 10cm × 6cm × 2.5cm
他にも多くの特徴があるみたいですが・・・まだ、その全体がわかってません。。。
現在、15401 種のチップに対応してます。
TL822 は3タイプあります。
購入時は間違わないように注意してください。
■ ■
この TL866 は AliExpress の多くのショップで取り扱いがあります。
わたしは、オプションの拡張ボードの種類が豊富なショップから購入しました。
今どきは、 TSOP のような表面実装パーツを取り扱うことが多く、例えば手持ちのジャンク基板のメモリチップからデータを吸い出そうとした時に、チップに合う拡張ボードが無かったりするとシラケちゃうので、そうならないように最初からできるだけ多く拡張ボードを揃えておくことにしました。
アプリケーションのインストール
アプリケーションは公式ウェブからダウンロードできます。
現時点では V8.11 が最新バージョンのようです。
インストール先のドライブの指定は、setup 実行時のデフォルトじゃないと上手くいかないみたいです。
(”D:\Xgpro” のままということ。)
最初のアプリ起動で Firmware のアップデートを促されたので、アップデートしておきました。
起動時に勝手に最新の Firmware を確認してくれる、こういう仕様はイイですね。
起動画面です。
アプリの言語は英語や中文など数カ国から選択できますが、あいにく日本語はないのでデフォルトの英語のままとしました。
アプリのセットアップでドライバも勝手にインストールされるのかとパソコンの画面を凝視してたのですが、わたしの環境ではアプリケーションをインストールしただけで終わったように見えました。
このあと TL822 をパソコンに繋いだらちゃんとデバイスが認識したので、インストールの知らぬ間に勝手に入ったのかも知れません。(こわ)
TL822 を繋いどきのデバイス一覧
とりあえず、動作確認
手元にあった古い ROM (富士通 MBM27C64)のブランクチェックをやってみました。
デバイス一覧から MBM27C64 @DIP28 を選択します。
Device → Blank Check を選択します。
ROM の装着方法を図で示してくれるところも、親切です。
データの編集もできるので、適当に数字を入れて Write 、 Read をやってみました。
PIC のプログラムを複製する
プログラム入り PIC のクローンを作ってみました。
前に作ったモールス練習機の PIC(12F1822)を使いました。
〇 PIC からデータを Read
プログラム入りのコピー元となる PIC を装着して、データを Read します。
Read したデータを確認します。
保存する際のデータ形式として、BIN と HEX が選択できます。
〇 コピー先の PIC のブランクチェック
コピー先の PIC の Blank チェックをします。
〇 コピー先の PIC にプログラムを書き込む
保存したデータを読み込みます。
① の Read ID の後、② の Program ボタンを押下してデータを書き込みます。
正常に書き込めれば、「Programming successful !」と表示されます。
で、新たな PIC ですが、もちろん動作しました。
ロジック IC をチェックする
2回路入りのフリップフロップ、74HC74 をチェックしてみました。
各回路でチェックし、その結果を返しています。
2回路とも正常です。
USB メモリのフラッシュメモリからデータを抽出する
壊れて動かなくなった USB からデータを取り出す、データリカバリーができるかチャレンジしてみました。
現用中の USB を分解するのは流石にもったいないので、昔使っていて廃棄するだけの 128MB のものを分解することにしました。
左側の大きいやつがフラッシュメモリで、右のちょっと小さいやつがコントローラです。
フラッシュメモリはホットエアガンで簡単に外せます。
この USB メモリに搭載されているフラッシュメモリは
Samsung K9K1G08U0M(128M × 8bit NAND)
で、残念ながら TL866 のデバイス一覧にはありませんでした。
※NOR型、NAND型メモリは、電源を落としてもデータが消えない不揮発性のメモリです。
Samsung の Flash Memory 調べたら、128M × 8Bit のやつがあったので、不完全なまでも Read できることを期待して、作業続行です。
Samsung K9K1G08U0M(128M × 8bit NAND)
デバイス情報によれば、このチップに適合する拡張ボードは「緑色」とのこと。(TL866 のセットは「赤ボード」が添付)
チップによってはこの「赤ボード」を使う必要があります。
ということで、別口で購入していた緑ボードを使いました。
緑色の拡張ボード2枚を重ねて装着します。
(TSOP48 Base ボード + TSOP32/40/48、緑)
① Options の "Pin Detect" と "Check ID" のチェックを外します。
② データ保存用のファイルを設定します。
③ ID Check します。※これを忘れるとデータは正しく読めません!
④ Read ボタン押下でデータは読み出され、指定したファイルに保存されます。
データ Read 中は黄色の LED が点灯します。
Read が終了し、「Read successful !」と表示されましたが、Bad Block の嵐。。。
(Config の設定が正しくないかも・・・。)
保存した test.bin のプロパティでは、132MB のファイルサイズなのですが、Bad Block がこれだけあるとデータの救出は難しいでしょう。
書き出したデータをバイナリエディタで見たところ、なにやらデータは Read されてますが不完全です。(jpg のヘッダが見つからない)
一応、拡張子を img に変更してディスクイメージのマウントを試みましたが、エラーになりました。
ということで、Bad Block にならないデバイスはないかと・・・他のチップを手当たり次第にデバイス一覧から選択して Read してみたところ、K9F1208U0A という 64M のメモリで Bad Block は一か所だけだったので、この先の作業はこのバイナリで行うことに。
Bad Block になるのが少ないので、jpg を探すとそれなりのヘッダは見つかります。ただ、img としてマウントできないとあとは力業となり、FAT を解析してセクタ単位でつなぐ必要があります。
今日のところはここまでで、そもそもの「K9K1G08U0M」がデバイス一覧に追加されるのを待つか、FAT 解析ツールを探して自力で解析するか・・・まぁ、何れにしろ時間が必要です。
jpg は、”FF D8 FF” から ”FF D9” なので、ヘッダを探して切り出したところ、断片的ではありますが、写真の一部を取り出すことができました。
■ ■
ちょっと調査しただけですが、抽出したデータそのものの構造はそう単純じゃなさそうです。
NAND フラシュはそのハードの性質上(寿命の関係)、同じセクタばかり使わないようにコントローラが書き込みを制御しているので、まず最初に NAND フラッシュと対になっているコントローラの制御方法を解析する必要があります。
コントローラのファームを逆アセンブルして制御方法を解読するとか、NAND フラッシュのシステムエリアを解読してデータエリアの構造を推測しながら FAT 構造に組み替えるとか・・・そんな途方もない作業が必要です。
■ ■
さらには、紛失時のセキュリティ対策を施しているような高級な USB だと、データは強固な暗号で守られているため、たとえデータが抜き出せて FAT 構造に変換できたとしても、今度はその暗号を解くのは難しいので、最後までたどり着くことは極めて困難だと思います。
ただ、その USB に施したパスワードがわかっているなら、なんとかなりそうです。
コントローラ用のチップを解析して暗号型式さえ判明できれば、復号も可能だと思います。
データ解析のカギは、コントローラの制御方法の解読・・・ただ一点のような・・・気がします。
それと、チップは石みたいなものなので、結構強度があります。
たとえ手で折って壊そうとしても、固いチップ部分は避けて柔らかいところで折れるためチップが破壊されることは滅多にありません。
ということで、時間は無限に掛かりそうですが、データ救済は不可能なことではないと思います。
チップを自動で判定する
品番がわからないチップを判別する機能です。
チップの刻印を削ってるような場合に威力を発揮しそうです。
ただし、4ピンや8ピンのチップだけのようです。
手持ちのチップで試そうとしたのですが・・・わたしが持ってるチップはすべて対象外でした。
今のところ、対応するチップが少なく、今後に期待です。
結局、一番やりたかった USB メモリのチップからデータを救済することができなかった。。。
この件は、引き続き懸案事項とし、頭の隅っこに置いとくことにします。