呼び込み君音源カード書き換え機 第一関門(ハードウェア編)
前回の記事、思ったよりたくさんの人に読んでもらい、面白いと言ってもらったので
調子に乗ってどんどん書いていきます。
↓いただいてる はてブコメント
前回まででカードからの読み込みと、内部フォーマットの大体の解析ができました。
改めて要求仕様を確認すると
息子「ドン・キホーテの音源カードが欲しい」
ということです。
これを目指すために、純正の音源カードの中身を書き換えることを目指します。
まず、音源カードのオリジナルのICはそれなりに大事なものですので、できれば別の書き込み可能なFlashに書き込み、前ページに書いてあるようなチップ選択方式を使ってスイッチなどで切り替えられれば最高です。
そのために、手持ちのジャンク基板から、同じ方法で読み出せるSPI Flashを外し、
この中に元の音源チップから吸い出したものをそのまま書き込み、このチップから再生できるかどうかということを試すことにしました。
もともと載っているFlashはMicrochip製 SST26VF032B ですが、試しに使ってみたのは全く違うメーカのXT25F128というものです。
基本的なアクセス方法は同じ(互換モード)ですので、単純なREADだけ使っているなら中身は同じように読み出せるはずです。
呼び込み君にセットしてみると…再生されません。。残念です。
このようなFlashメモリ、基本的なコマンドは同じですが、上位のコマンドや特性など、専用の機能を使ったりする場合にチップを判別するためのID「JEDEC ID」という3バイトのコードが埋め込まれています。
推測ですが、電源投入直後にこのコードを確認し、違うチップの場合拒絶するか、読み込みエラーとして作業を中断する仕様になっている可能性があります。
呼び込み君のマイコンのSPI端子をロジックアナライザで観察してみると…
確かに最初にJEDECを読んでます…
0x9F:JEDEC ID READ
0xBF 0x26 x42 : SST26F032のID
ダメか…
使用しているロジックアナライザは定番のLAP-Cです。
定番ですが、ドライバを落とす台湾のサイトが激重ですのでドライバは大事に保存しておくのが便利です(もう治ってるのかな)
では、同じFlashメモリを入手して書き込んでみるか…と思って探してみますが、
在庫切れで、入手には時間がかかりそうです。
仕方ない、やはり書き換えるしかないのか…
(FlashROMの代わりに、SPIメモリをエミュレートするマイコンなどを載せる方法もありますが、実装がめんどくさそうです。READだけならすぐだと思うけどね)
では、書き込むための機材を準備していきます。
Flashメモリ単体は、USBメモリのようにパソコンに接続してすぐに書き込めるものではなく、専用のライターが必要になります。すべてを自作することも可能ですが、一般的には安物の専用機を使うことが多いです。
私は普段から似たような作業を行うことが多いため、EZP2010というライタを持っていますが、調べてみるとこのMicrochipのFlashには非対応でした…
自作か…めんどいな…と思ったところ、別の方法を思い出しました。
Raspberry PI のSPIポートを使用してFlashを書き換える手法があり、
そのための専用オープンソースソフトウェア「flashrom」というものがあるのです。
PC自作の人たちがうっかりBIOSファームアップ中に壊してしまったりしたときなど、
チップを取り外して焼き直したりするのに使います。
よし、これならいける。接続はどうしようか…
このような用途では何回も書き換えたりすることが想定されるため、
毎度はんだ付けをするのは骨が折れます。
はんだ付けの例
しかし、この音源カードに改めてコネクタを取り付けるような厚み方向への余裕はありません。ポゴピンと呼ばれるような部品を使って開発用治具を作る方法もありますが、
なかなかめんどくさそうだなと思いながら、コネクタを眺めていると…何かに似てるな…
そう、ICカードのコネクタです。
よくよく計測してみると、パターンの形こそ違いますが、接点中央部の間隔は同じです。また、音源カードの中の基板は、一般的な電子機器の基板厚みである1.6mmより薄く約1mm、つまりこれは中身をカードとして扱えば、ICカードスロットを転用して書き込み治具が作れそうだ!
早速部品を探しますが…
こんなもん、その辺で売っているものではありません。
じゃぁ、手持ちにあるジャンクからなにか取り出すか…
携帯用のSIMカードが刺さる奴は…省略版の6ピンか…
ETCカードのスロットは…これもピン省略が多いようだ…
うーん…あっ、B-CASカードだ!!!
ジャンク箱をひっくり返し、地デジ移行期に配布された安価な地デジチューナを引きずり出しました。
これをばらしてカードスロットを取り外します。
接点の間隔は同じですが、カード隅からの位置は違うため、適当なカードを切ってスロットに詰め込み、音源カードを差し込んだ時に接点がぴったり合うように加工します。
ロイヤルホームセンターの会員カードに犠牲になってもらいました。
カードスロットの端子をRaspberryPiのSPI端子にはんだ付けします。
flashromコマンドを実行すると…認識した!!!これで読み書きができるはず!
書き込み装置物理層完成!!!!!
続いて、中身のデータを書き換えるソフトウェア編へ!
このブログにはAmazonアフィリエイトへのリンクが多数埋め込まれています。
そのものを買わなくても、リンク踏んでからしばらくの間に買い物をすると、還元されるようなことを書いてあったようななかったような気がします。大事なお小遣いです。あなたの懐からは持っていきませんのでお買い物前にぜひお立ち寄りください。
なんとアマギフを買ったりしても還元されるのです。びっくり。