Flash Memory が手に入った ROM ライターを作るか...
これまたひょんなことから AM29F010 という 1M bit の Flash Memory が 5,6 個手に入った。こいつに書き込みをしようということで Flash ROM Writer を作ることにしました。
AM29F010 は一昔前までは BIOS ROM に使われていたようですが、最近は 29F020, 29F040 のように 2M bit, 4M bit が主流の様です。ま、下駄で 2 個の AM29F010 を 1 個の AM29F020 に見せかけることもできますが、 ちょっと苦労しますね...
設計方針
まずとにかく簡単に作れることを目標にしました。簡単に焼くなら BIOS ROM に並列接続するライタでいいのですがこれはすでに「ROM 焼きだいじょうぶ」 があるし、同じものの手作りはつまらないので、
PC の蓋を空けたりして、焼くのに一苦労しないこと
ROM の書き込みアルゴリズムを色々作れること
とにかく安く手っ取り早くつくること
書き込み速度は遅くてもいい
PC/AT アーキテクチャの I/O Port が備わっていれば使える
ということを目標に設計しました。で設計結果は
UniDirectional の LPT ポートに接続
5V 単一電源の ROM のみサポート
主要な BIOS ROM 29F010, 29F020, 29F040 をターゲットする
特殊なコントローラは使用せず全て 74HC, 74HCT シリーズで構成
タイミングシーケンスの発生は全て PC 上のソフトで行う
となりました。
回路と実装(HardWare)
回路は次のようになりました。あと手配線で組み立てた基板です。
回路図(こっちはBSchソース)
(追加ライブラリ)
部品面
半田面
基板はちと汚いですね、思い起こしてみると 4,5 年ぶりです。 こんな基板を作るのは...
回路のソースは回路図エディタ BSch で見てください。Vector の サイトで見つかるはずです。手書きで図面を書くのより楽ですね。 一昔前は手書きで書いて、何枚もコピー作って定数決め、机上検証、 配線チェックそれぞれで鉛筆や赤ペンで修正・チェック入れしてい ました。
専用基板を起こそうかと思いましたが商品化するわけでもないので 手配線にしました。というかいきなり基板を作ってミスだったら 結構つらい。でも、ミニベンチャーの乗りで、試作基板を発注して みたいとも思ったりしました。
回路の部品について
いくつかの部品の選定は「おゃ」と思うかもしれません。好きで このようになったわけではなく、秋葉原で入手可能な部品で構成 したためです。あと、製作途中で部品がどっかに行ってしまったり (とほほ...)、配置上入らなくなってしまったりという結果です。
本当は原案の回路があったのですが、入手不能/可能なパーツで 臨機応変に(つまり頭の中で回路を再構成して)対応しました。
ソフト作り
現在のところ動作確認を進めていて AM29F010 に次のことができる ことは確認しています。
バイナリの吸出し
ManufactureID, DeviceID の読み出し
全イレース
バイナリ書き込み
ちょっとまだアプリケーションの格好には程遠いです。ただ、世の中にある 全ての Flash Memory に対応するまで保留するのも現実的ではないので、 ある程度、対応可能な Flash Memory が出てきたら、あとはアルゴリズムの 変更は各自で行うという方針で使ってもらおうと思っています(
ソースコードサンプル(AM29F010)
はここです。フリーで利用可能な Turbo C を入手すればコンパイル可能なようにしています)。
その他各デバイス毎のソフトはまだ少ないですが次のようになっています。
デバイス
ソフト
更新日
備考
ATMEL AT29C020
ソース・バイナリ
2002/3/14
-
WINBOND WB29C020
ソース・バイナリ
2002/3/14
手元にデバイスがないので未チェック
注意 Windows の中からは使用しないでください。 書き込みに失敗します。必ず Command prompt only モード または MS/PC-DOS で使用してください。
アクシデント
試し書きのために買っておいた 2M bit のフラッシュメモリを 紛失してしまったしかも 2 個も... ちょっとショックでした。 安く作ろう思っていたのに...。
これから
ソフトの完成度が上がったらもう少し詳しいく紹介したいと思います。
余談
メーカーの製造ラインで Flash Memory を出荷できるかどうか検査する装置に ついてすこし触れたいと思います。勤め先の仕事なもんで...
Flash Memory が D-RAM ほど入手性が良くなく、しかも高いのには訳があり ます。Flash Memory の書き込みアルゴリズムや消去アルゴリズムを見ると、 書込み操作の後、書き込みが完了したかどうかセンスするループ必要なことが わかります。ループにかかる時間はチップによってまちまちです。ちなみに 出荷されているチップは、ある程度書き込み時間や消去時間を調整してあります。
待ち時間がまちまちということは、チップが動作するかどうか検証にかかる 時間がチップによって違うということを意味します。ここで、ナルほどねー と思っていただければかなり感が鋭い方です。
ウエハーから大量に取れる複数のチップは全て検査(本当は修復も)されます。 これを安くするには同時に同じ検査を複数のチップにすれば良いのです。同時 に同じ検査をすることを業界用語で「同測」と言っています。
ところが、Flash Memory は検査にかかる時間が違うので、同時に同じ検査は できません。複数のチップの検査を一斉にはじめて暫くすれば、あるチップは 書き込み、あるチップは書き込み完了のセンスループ、あるチップは、検査 アドレスとデータの用意というようにばらばらの検査を行うことになります。 つまり、「1 個に 1 個の面倒をみるプロセッサが必要」なのです(実際はこ うでない場合もありますが...)。
対照的なのは D-RAM で SIMM, DIMM に見るように複数のチップが 1 つの基板 に乗せられ(宿命的に)同じ動作をするように作られたチップは「同測」ができ ます。複数のチップの検査を一斉に始めれば、どの瞬間も同じ検査をし、 一斉に完了することになります。「複数のチップを 1 個のプロセッサで 面倒を見ることができる」ということになります。
Flash Memory は明らかに検査にかかるコストが高くなります。しかも、検査 にかかる時間も長いです。S-DRAM,DDR-DRAM, RDRAM, QDR-RAM の様に高速の I/O を持たせることもできません。書き込みにフラグセンスループを必要と するのでは高速 I/O は検査のときには無意味です(セットに組み込まれた後 ならある程度意味がありますが、Flash Memoryの主な用途が携帯では、高速 I/O は電力ばかり食って意味ありません)。
続きがあるのですが今回はこのへんにしておきます。
管理人
「メールアドレスを表示させるには JavaScript を有効にしてください」
このページはリンクフリーです。特に監視している訳ではないし、検索サイトに登録 されているのでリンクに制限は設けていません。
戻る