2014-05-05 (月)
*ポケットミクで遊ぶ
会社寄って,5/1の続き.
改めてよく見る.電源が1.2V,3.3V,5Vの3系統あって面倒だな.主な部品は,
- YMW820-S 音源
- MX25L1635E フラッシュメモリ
- GPEL3101A 謎(ARMという噂
ポケットミクのフラッシュメモリはMX25L1635Eで,見慣れたやつだし問題ないだろうと考え,とりあえず基板から剥がす.
PCとSPIの接続はhidaspxを流用した.hidaspxはAVRライタだけど普通にSPI通信すること考えて作ってあるようです(他人ごとのように).フラッシュメモリ読み書きするプログラムも昔書いたやつが発掘出来たので,これもほぼそのまま使うことができた.
とても適当.汚い.
最初,なんだかデータが化けると思ったら,電源3.3Vなのに信号5Vで入力してた.クロックを3.3Vにしたらマシになったので,ちゃんと3.3Vにする.それでも,配線がいい加減なのでビットがずれたりするので何回か読み出す.この状態だと書き込むのは怖いな.
ほとんど道具が会社に置きっぱなしになってたので,休みの人気のないオフィスで作業してたのだけど,自称Webエンジニアな人間の机とは思えない感じに...
ファームウェアを読む
ファームウェアのライセンスとか確認してないし,ここから先は夢の中だった気もするし,きっと寝てただけだと思う.
フラッシュメモリの最初の4バイトはSPII.
次に,2000000chという値があるけど,たぶんエントリポイント.というか,フラッシュは20000000hにマップされている雰囲気なので,先頭12バイトがヘッダでその後がコードだと言いたそうだ.
続く4バイトは謎._PIiなので定数かも.
そのあとは実行できそうなコードが書かれてる.32ビットの固定長命令っぽい.Thumbではない?先頭には明らかにARM用であろう割り込みベクタがあるのでARMであることは確実.
バイナリエディタでコード読んでいてもSAN値が下がりそうなので,とりあえず逆アセンブラに突っ込む.それっぽいコードが出てきた.やっぱり開始アドレスそ20000000にしておくとそれらしい感じになる.
ARMのアセンブリコード見てると,ポケステ思い出すな.
人間が読める文字列プールもあるので,見てると色々と想像出来る.
ちなみに後ろの方に色々データ入ってるけどこんな感じ.デコードする実装は読めてないけど,暗号化や複雑な圧縮はされてないので暫く眺めてれば分かりそう.元の値は16ビットで,何かごにょごにょという感じかなあ.
起動時に何かメッセージを出力しているけど,どこに出てるんだろうか.GPEL3101AにJTAGかシリアルインターフェイスがあるのだろうけど,データシートとか無いしなあ.
せっかくだし,初音ミクに"Hello, World"って喋らせるプログラムを書き込んで実行してみたい.MIDIのインターフェイスからコントロールすれば良いと言われればそれまでだけど,やっぱりCPUとメモリがそこにあるなら自分で書いたコードで動かしたいところ.
でもすでに飽きてきたので,たぶんできない...
という夢を見た気がする.