ROM Writer CH341A を使いこなす

OpenMediaVault5 を HP ProLiant MicroServer Gen8 (以下 HP Gen8) で実現するのに、iLO4のファームウェアのバージョアップやCPUのBIOSのバージョンアップを頻繁に行いました。所がiLO4のファームのバージョンアップ中にソフトが止まってしまい、バージョンアップを失敗しました。その結果、HP Gen8 が立ち上がらなくなってしまい、途方に暮れる事に。修理にあーでもない、こーでもない、 色々試すうち気が付くと全部で5台 HP Gen8を手にいれて、その内2台は動かなくなってしまいました。ネット上には修理に参考になる記事もなく途中手探りで本当に、いらいら、どきどきしました。結局、内部のフラッシュROM2個、つまり、iLO4のフームウェア、CPUのBIOSをROM Writer CH341Aで直接書き直しました。CH341A は安い上に対応ROMも多いのですが、実際使ってみると、回路は間違っているノイズは拾うなど、かなり癖が強いです。この記事ではCH 341Aの改造、整備、使いこなし について説明します。実際のHP Gen8 の修理については HP Proliant microserver Gen8 の Firmware, BIOS ROMを焼き直して修理する。で説明します。

用語説明

  1. HP Gen8 : HP ProLiant MicroServer Gen8 の事
  2. WE基板 : CH341A でフラットパッケージ等を扱う為の拡張の基板 Writer Extend board の事

フラッシュROM書き換えの為に入手した物

フラッシュROM書き替えの為に入手した物を説明致します。

ハードウェア

まず、ROM Writer CH 341A と SOP 8 Pin & SOP 16 pin 拡張基板、SOP 8 Pin IC クリップを購入しました。

この拡張基板を Writer Extend board = WE基板 と呼びます。

(AliExpress 購入時 377円)

 

 

 

SOP 16 pin IC クリップも購入。

(AliExpress 購入時 276円)

 

 

 

この内 IC クリップは SOP 8 pin または 16 pinのフラッシュROM を基板上に載せたまま挟んで書き直す為の物なのですが、実際使ってみるとうまく挟めず、100回以上やっても書き直せませんでした。最終的にはICのはんだ付けを外して、WE基板に再はんだ付けして書き直すので、少なくとも私の場合はIC クリップは役に立ちませんでした。CH341A + WE基板のセットもありますので、そちらがお勧めです。また、予備にWE基板のみも購入できます。価格は枚数で違ってくるので、AliExpress を見て楽しんで買って下さい。

これらのROM WriterはAmazon(japan)でも買えますが、高いです。AliExpressの場合は 2-3 Weeks輸送に掛かります。速さをとるか、安さをとるかという所ですね。

この基板はただいま購入中です。沢山は必要ないので2枚購入しました。

一枚 68円x2+送料

(AliExpress 購入時 335円)

 

ソフトウェア

CH341Aは ROM Writer ですので、当然ながら、書き込みソフトが必要です。また色々な説明資料も必要になります。ネットを探すとCH341A 関係資料は山の様に出てきます。なにしろ超低価格、世界中で利用されています。色々あさりましたが、まず、お勉強に https://www.onetransistor.eu/ を訪れてみる。ここのprojectを一通り読めばCH341A については詳しくなります。でライターソフトですが、色々見つかりますが、偶々みつけた、mdclab の物を使っています。このクラブ .it なので イタリアかな。Software Downloadのファイルを展開すると CH341Programerの色々なバージョン、AsProgrammerのバージョン、NeoProgrammer と手に入る。すべてのバージョンではないが、それぞれのProgrammerを試しました。色々トラブルが有ったものの、最終的にはCH341Aを問題なく使用する事ができた。

CH341A改造 (回路手直し)

所で、このROM Writerの回路は一部、間違っているのです。回路を直さなくても書き込み出来るみたいですが、この間違いは回路屋さんとしては致命的に恥ずかしいレベルの間違いなのです。間違いと直し方の説明をします。まず、購入時の回路図は下図です。

まず、U2(=IC)の電源(VCC=28)に注目して下さい。5Vに直接つながっています。このCH341AはおそらくCMOS IC ですので、出力はGND(=0V)からVCC(=5V)までフルスイングします。したがって、ROM Writer ソケットに繋がっているIC 出力[クロック=CLK, チップセレクト=CS, シリアルインプット=MOSI]などは 0V-5V フルスイングします。一方フラッシュメモリの供給電源は 3.3V です。つまり、フラッシュメモリは電源より入力ピンに高い電圧が供給されます。フラッシュメモリのインプットはおそらくCMOS構造です、通常CMOS構造のIC入力は電源電圧以上で駆動してはいけません。電源電圧+VDD(シリコンダイオードのon電圧=0.7Vくらい)以上で駆動するとサイリスタ現象が起こる事があり、ICに大電流が流れ、酷い場合はICが破壊されます。もちろん、最近のICは色々対策されているので、サイリスタ現象が起こる事もすくないし、破壊される事も少ないです。ですが、電源電圧以上の入力電圧で駆動するのは設計としては落第、禁忌です。このROM Writerを設計した人は間違いなく回路設計は初心者です。実は私は昔 ICを設計していたので、(ICを使って設計していたのではなく直接ICを設計していた。)よく、サイリスタ現象(=ラッチアップと言う)を起こしていました。なので、ラッチアップには気を付けて設計します。

さて、それではどの様に回路を変更すれば良いかと言うと、IC,CH341AのVCCに5Vでなく3.3Vを与えれば良いのです。と同時にUSBインターフェースの関係で9番PIN V3 にも3.3Vを与えるみたいです。つまり以下の様になります。赤の部分が追加で、Xの部分はカットです。

実際の配線は、U2の28番ピンを基板から浮かして、導線で3.3V,U2の9番ピンにつなぎます。以下の写真を参考にして下さい。U2の28番ピンは導線と繋いだ後にホットメルトで固めています。

配線は#28=0.35mmのスズメッキ線を使っています。線の太さと番手の関係は以下です。

番手 ミリ表示 番手 ミリ表示
♯8 4.0~3.9mm ♯20 0.90~0.85mm
♯10 3.2~3.1mm ♯22 0.70~0.66mm
♯12 2.6~2.5mm ♯24 0.55~0.52mm
♯14 2.0~1.9mm ♯26 0.45~0.42mm
♯16 1.6~1.5mm ♯28 0.35~0.33mm
♯18 1.2~1.1mm ♯30 0.30~0.29mm

実際に書き換えたフラッシュROM

今回実際に書き換えたフラッシュROMは以下の4種類です。簡単な説明も追加しておきます。

Winbond W25Q64FV (DIP 8pin) 64Mbit = 8MByte

非常に有名な64Mbit = 8Mbyte のフラッシュROMです。よく市販のマザーボードのBIOSに使用されているのを見かけます。今回はリファレンスとして購入しました。ROM Writerの動作確認等に使用する目的で購入致しました。ROM Writerに直接挿入して動作確認できます。

 

 

 

Winbond W25Q64FV (SOP 8pin) 64Mbit = 8MByte

MICRON N25Q64 (SOP 8pin) 64Mbit = 8MByte

この2つはHP Gen8 CPUのBIOSに使われていました。CPUがXeonのTypeはMICRON製ICが使われていました。写真のICの4pin(GND)-8pin(VCC)にチップコンを挿入しています。バイパスコンデンサでこれが無いとROM Writerがうまく動作しませんでした。(重要) CPUがPentiumのTypeはWinbond製ICが使われていました。PentiumのTypeはBIOSの書き込みが非常に遅いので、MICRON とWinbondで書き込みモードが違って、速度差があるのかもしれません。N25Q64は手持ちが余分にないので確認用を追加注文中です。

【訂正 & 追加 2022年5月28日】ICをN25Q64に変えても書き込み速度が遅いのは改善しませんでした。それで、元のWinbond製ICに戻して、基板をアルコールで清掃した所、書き込み速度が改善しました。なんとも不思議ですが、フラックス等の汚れで速度低下が起こっていたと考える事にします。(再現できないので..)

WE基板を追加で2枚購入したのですが、注文物 (私がイメージした物) と違う物が届きました。右端にバイパスコンデンサの取付パターンがついています。まあ、注文品と違う物が届くのは中華あるあるですが、これはちょっとうれしい。(写真ではすでにチップコンデンサをはんだ付けしている)  【訂正 & 追加 ここまで

MXIC MX25L12845E (SOP 16pin) 128Mbit = 16MByte

HP Gen8 ILO4のFirmwareに使われていました。特にバイパスコンデンサ等なくてもROM Writerは正常動作しました。偶々かもしれませんので、必要な時はバイパスコンデンサを入れましょう。CPU Type Xeon, Pentium で同じでした。

 

 

書き込みソフトの動作

ROM Writer ソフトは mdclabからダウンロードした物を使います。幾つか種類がありますが、基本的な動作は大差ありません。実験した4種類のROMに対応できて、使い易い NeoProgrammer_2.2.0.3 について説明致します。

NeoProgrammer 2.2.0.3 及び USBドライバー インストール

mdclab からダウンロードしたファイル CH341A.zip を解凍すると更に、幾つかの 圧縮ファイルが出てきますが、その中に NeoProgrammer_2.2.0.3.zip があります。更に解凍すると NeoProgrammer フォルダーと USBASP_USBISP_Driver_and_Firmware.zip が出てきます。この内 NeoProgrammer フォルダーの中身をすべてインストールしたいフォルダーにコピーします。ここでは分かり易く、インストールしたいフォルダー名は NeoProgrammer だとします。(つまフォルダー名は変えない)。CH341AはUSB2.0で動作するので、最初にUSB2.0 Driver ソフトを導入する必要があります。

NeoProgrammer → Drivers → CH341A → SETUP.EXE をクリックして実行すると左のウインドが出てきますので、INSTALL を押して下さい。Success の旨の表示が出れはOKです。もし、失敗する様ならば、既に導入したDriver が邪魔をしている可能性がありますので、先に UNINSTALL してから INSTALL すれば良いでしょう。

 

NeoProgrammer → NeoProgrammer.exe を実行します。最初の実行はWindowsから警告を受けますが、かまわず実行してください。

何語かわからないので、(ロシア語?) language を英語にします。

後は、色々いじって見れば、使える様になるでしょう。まあ、簡単に一度使ってみましょう。

NeoProgrammer で プログラムの練習をする。

練習として MICRON の MX25L12845E を使ってプログラムしてみましょう。ROM Writer に IC をセットして USB2.0専用ポート で PCに繋ぎます。USB3.xだとうまく動かない場合があるとの報告もありますので、最初の内はUSB2.0 専用ポートて確認します。

さて、最初にやる事は ICの確認です。Detect Chip (?の画像)をクリックすると、プログラムIC候補が出ます。MX25L12845E を選んで Select をクリック

 

 

 

 

右上に 認識しているICの画像が出ます。

 

 

 

 

 

 

この後はプログラムですが、フラッシュROM のプログラムの簡単な流れを確認して置きます、Program IC の横の▼をクリックしてみて下さい。

実はフラッシュROMはこの内容の順でプログラムすれば良いのです。最初のOff-Protect はICにプロテクトフラグがある場合書き込み時にはOff する必要があります。後はフラッシュを最初全部 Erase して Eraseの確認=Blank Check して Write して Writeの確認=Verify すれば、プログラム終了です。図の状態ではWrite だけcheck されていますので、Program IC機能 は単に Write として機能します。通常は一つ一つ、別々に確認して実行しますが、確認済みで各動作に信頼がおける場合は、すべて Check しProgram 全自動にする事もできます。 プログラム前に書き込むデータをロードして置く必要があるのは言うまでもありません。

整理すると フラッシュROM プログラム書き込み の流れは

IC確認 → OpenFile (=プログラムデータロード) → 全自動又は手動でProgram IC です。全自動の場合はProgra IC の▼をすべてCheck して置けば良いです。手動の場合は Program IC を Write 機能にして他の機能はそれぞれの項目をクリックして実行します。機能実行の順は Off-Protect → Erase → Blank check → Write → Verity となります。

全自動で実行した、結果のログを載せて置きます。

ちなみに、書き込んでいるデータは購入直後のHP Gen8 のILO4のFirmware をバージョンUPした後にHP Gen8 から Firmware Chip MX25L12845E を取り外し、CH341Aで吸い上げた実際のデータです。修理時には、この吸い上げデータとバージョンUPファイルのデータ部分を比較して検討しました。

 

タイトルとURLをコピーしました