マイコンとタブレットは接続してみましたけど、そもそもどうやって接続すればいいのかをまず試行錯誤しました。
winbond w25q64fwのデータシートをみて、ピン配列からマイコン側の電源、IOポート、GNDなどに適宜に割り振ってみました。
このフラッシュROM,1.8V動作で、マイコンは3.3Vだったので、ダイオードを2つ直接に接続して電圧を降下させてフラッシュROMの電源としました。信号線は
マイコン→フラッシュROMは、1Kの抵抗を2つつかって分圧したものをフラッシュROM側に接続します。
フラッシュROM→マイコンは、トランジスタのエミッタをフラッシュROMに接続して、コレクタは3.3Vにプルアップしてマイコン側に接続。ベースはフラッシュROM側の電源にプルアップします。これで電圧レベル変換になりますね。
けど、どうやったら読み出せるのか知らないんですよね x_x。
マイコンはSPIマスターのサンプルプログラムみて、解釈。フラッシュROM側はデータシートにコマンドが書いてあるのでそれをみて、適当にマイコンプログラムをかいてみました。
このESP-WROOM32って、今回が初めてなんですがまぁなんとかなるかなぁ・・・・と。
・・・・・・・・・・・・・・・・・・・・・・
けど、なかなかうまくいきませんでした。フラッシュROMの配線、最初は電源、接地、入力、出力、クロック、CSという6個だけ配線してたのですが、それだけじゃダメみたいなんですよね。W/P(ライトプロテクト)というピンをプルアップしておかないとコマンドが無視されるようです。で、後で配線ふやしてやってみたところ何かしらよみだせるようになりました。
同じ場所を読み出しているのに毎度値が違ってたり、なんかしら間違え続けてプログラムを何度も書き換えてやっと読み出せるようになりました。
で、全部読みだしてみて、BIOSファイルを比較してみるとかなり異なっているんですね。
最初の方は同じ・・・で、特定番地がまるまる違ってたり、後半はほとんど異なっていました。
結論なのですが、BIOS画面で設定した項目を、BIOSが書き込まれているROMの領域に書き込むような構造になっているようです。これじゃ、CMOSクリアとか絶対にできないですね。リセットする場合、特定領域を全て書き込まないとダメなようです。
ここまでできたら、後は書き込み用のプログラムを書けばいいだけ・・です。今回は2層構造になっていて、書き込みも読み込みも256バイトずつマイコンが読み書きして、パソコンのプログラムに送ります。パソコン側のプログラムはマイコンから送受信した情報をファイルに書いたり、ファイルから読み出したりするようになっています。
もっとマイコン側にSDカード読み込みの回路とプログラムを書けば、SDカードからBIOSを読み込んでフラッシュROMに書き込んだりもできるんですが、まぁ今回はまずは実験なのでWindowsプログラムを作りました。
で、なんとか書き込みプログラムを作って実行してみました。
これ、8M中の7.7Mくらいで失敗しちゃってました。x_x。。。さらにプログラムを書き換えて、特定のアドレスから再度書き込みができるようにして全部書き込みできるようにしてなんとか全部書き込んでみました。そしてバッテリーを再度つないだところ・・・
o_O!ナントふたたび動き出しました。
・・・まとめ。
1・タブレットのBIOSの設定を変更しない
2・BIOSの書き換えはやめたほうがいい
3・無理やりなおすのは超キケン!
くれぐれも、自分もやってみよう・・・とかやめましょう x_x 今回はたまたまうまくいきましたが、手が滑ってとなりの配線を傷つけたり、なにかのはずみでショートさせたりして全て壊してしまう可能性がありますよ~。
※コメント投稿者のブログIDはブログ作成者のみに通知されます