※ちょっと編集しました
SDカードからのアップデートについて考えすぎてて、USBメモリ経由でのアップデートが不可能ではないことを忘れていました。。。
届いた でかい
外見、まじで満足感がある
スピーカのところの丸ネオン、LEDとアクリルとかでごまかすんじゃなくて、
ちゃんと粒々入りの高輝度LEDがビカビカしてて大変素晴らしい
という外見のレビューはほかの人に任せて、当然こちらは中身をレビューします。
#DDRmini 届いた!!!でかいwwww満足度高い!! pic.twitter.com/zTyDurHtYE
— ひろみつ@技術書典お07 カラオケハック本 (@bakueikozo) September 11, 2024
がっつりヒートシンクの付いたCPU、外してみるとAllwinnerのA527というのがついています。
なんと8コアx2Gヘルツの結構最近出た強力なCPUです。
これまでZUIKIが出してきたミニコンソールはZ7231というAllwinner A33と同等のCPUを詰んでいましたが、これは16ビット時代のCPUをエミュレートするのが精々で、事前人試したところプレステレベルのエミュレーションでもまともに動かなかったので、何かしら上位のCPUを搭載してエミュレーションにするか、マジで再実装してそのクラスに落とし込むかどっちかだと思っていたんですが、思ってたより強力なの乗せてきたな、という感じです。
基板のピンを当たってみましたがどうやら今のところ電源投入時のシリアルメッセージが表示されず、使用しているブートローダーがわかりません。
公開されているOSSの中に、u-bootが入っていないので、うっかり忘れていなければu-boot以外のものが使われている気がします。
ゲーム環境ですが、メニューからゲームシリーズを選んで起動した瞬間に、MAMEなどでおなじみのCDイメージの名前がちらっと表示されるので、間違いなくエミュレーションであると考えられます。
どういうベースで実装してくるかと思ったがemuベースだなこれ….まじか….まあそうなるよな そのためのA527 pic.twitter.com/xkUQqz3tZO
— ひろみつ@技術書典お07 カラオケハック本 (@bakueikozo) September 11, 2024
版権が取れなかったものは曲選択時にそのメッセージのテクスチャと、曲が始まると無音で譜面が流れるようになっています。
実はこの辺の作業、おそらくROMかエミュレータにちょっとフラグを立てて動かすレベルのパッチを当てて対応していると考えられます。
全部動くようにしといて、取れなかった奴はならない、とできるからね。
いや、これマジで英断だと思う。曲流せないならリストから外すもん。
でも、他の人の反応をを見てもわかるように、クラファンで支援するレベルの人は脳内再生が余裕なのでこれが大正解だったように思えます
で、一部の人がブーブー言ってるSDカードシステムが実装されなかったがどうして発生したのかに関して、基板を調査して想定される理由を検討してみましょう。
まず、基板にSDカードスロットのパターンが残っています。ので、普通にここに該当するパターンのソケットを取り付ければSDカードを挿すことができます。
が、それでは当然動かないです。
基板を拡大してみると、そのほかの小部品が実装されていません。
SDカードの配線が切断されている部分はもともと開発段階では0Ωジャンパが実装され、SDカードを認識できるように工夫してありました。
こうしておけば、基板のパターンを再変更して製造しなくても、実装段階での部品リストからこのジャンパを外せばいいだけになるため、コストがかかりません。
つまり配線がジャンパで切り離せるようになっているのは
「最初から製品版では削除する予定だった」からです。
搭載されているAllwinnerのシステムはアップグレードにUSBを使った「FELモード」というものがあります。しかし、ベータテストなどの段階でこれを使って毎回ファームを書き換えるのはPCも必要なので大変面倒です。そのため、必要なソフト本体をSDカードに入れて、差し替えて簡単に比較デバッグができるようにしてあったんでしょう。
どうも、発表会なんかでアップグレードを。。。みたいな話が出たのは、
担当者がうっかり口走っただけだと思います。
結果、真に受けちゃった人が出たのは失策でしょうが、最終発表仕様に書いてなかったものが当然載ってくるわけはないとは思うので騒ぎすぎな気がします。
で、先述したようにSDカードは配線が切断されているためまともに使用することができません。代わりに「FELモード」を使ったアップデートは原理的には可能ですが、USBを繋いだだけではだめで、FELモード用のピンをLOWにしなければいけません。
で、もちろんそれは開発中には必要になるため、特定のボタンなどに割り当てられた隠し機能になっていることが多いです。今回は分解した基板上、USBコネクタの近くにあるタクトスイッチを押しながらUSB-CコネクタをPCに接続すると、FELモードに入ることが確認できました。
【朗報】基板上のUSB2pコネクタの近くのボタン押しながらUSB-C給電でFELモードです
— ひろみつ@技術書典お07 カラオケハック本 (@bakueikozo) September 11, 2024
すぐに切れるので、PCEMiniと同じネゴなければ落ちるやつだと思います
あ!ソースどこ!!!!?! pic.twitter.com/MyhnV9WUF4
しかし、このCPU、新しすぎてこれに対応したFEL書き込み用のプログラムが転がっていません。まぁ、もちろんZUIKIは持ってるわけですが、
このモードに入るために分解が必要なので、ユーザー側でのアップデートが案内されることはおそらくないと思います。
※ですが、よく考えたらUSBメモリにファイルを入れて更新、の可能性がありました。
ーーーーーー 追記 -----
イーグレットツーミニはファームウェアアップデータをちゃんと内蔵していて、SDカードからですがアップデートができるようになっていました。
DDRMiniでも、ファームウェアアップデータを呼び出す方法が発見されたので、
このアップデータがUSBメモリに対応していたら同様にアップデートできるかもしれません
ーーーーーー 追記ここまで -----
で、それだけではちょっとつまんないよね。
ということで、例によって改造していくわけです。
まず、FEL書き込みをどうにかするために、本体側のプログラムを探らないといけません。普通はどっかにシリアルデバッグが出ているはずなんですが、全然見つかりません。困った。
もう一つの手段として、本体側のプログラムを吸い出すためのプログラムをSDカードから動かせないか、ということです。
このCPUであるA527のマニュアルを参照してみると、起動デバイスの検索順として、まずMMC0、続いてeMMC(MMC2)、見つからなければ基板上のそのほかのFlashを探す、ということになっています。ただし、この動作をeFuseというワンタイム設定レジストリで無効にすることもできます。FELから読んでみたところ、そうはなっていないように見えます。
ここで、MMC0はさっきから騒いでいる基板上のSDカードコネクタです。ここから起動できないでしょうか。
切られた配線を基板を拡大して追っていくと、大体の配線を繋ぐことができました。
本当に起動時にSDカードを探しに来ているか、ということは、オシロスコープでSDカードのピンを見てみるとわかります。
こちらに書かれているように、SDを探しに来ていればCLKピンに反応があるはずです。
参考:秋月白箱の調査
FLASH剥がしてもmicroSDスロットにクロック出てるのでカード起動ワンチャンあるかも知れない。 pic.twitter.com/hwCw6ooa22
— ひろみつ@技術書典お07 カラオケハック本 (@bakueikozo) March 17, 2023
何回か試してみますが、何も起きません。おかしい。
よく見てみると、CLKであるはずの配線、切断されている場所が見当たりません。
もしかして、と一度組み立てた基板のCPUヒートシンク、シールドを外してみると・・・なんとこの中にあと二本、切断されている場所がありました!!!
これを繋いでみると。。。。
やった!!SDクロックが来ています。
おそらく起動シーケンスとして使えるのは確実。
このSDカードに必要なブートローダーとOSを書いて、EMMCを吸い出せば中の構造がわかり、それに対応して改造したものを書き戻せば今回の制限が外せるかもしれません。また、おそらくエミュレーションベースで、ある程度汎用性があるはず。
このCPUを詰んでいれば、現状のポータブルなSystem573のエミュレータとしてはかなり強力な環境だと思います。つまり、ほかのACゲームも突っ込めるかも。という希望があります。
で、ブートローダーとOSは・・・・・?
とりあえず、このCPUを使った開発ボードや、u-bootのポーティングをやってる人と、そのほかのベアメタルBootloaderは一応あるっぽいので、まずはSDカードからこれを起動できるようにコンパイルする環境づくりだ!!!
AllwinnerT527はA527の自動車用(順序が逆かも)で、A523とは内部がだいぶ似ているはずです。ぴったりのが無くてもその辺から漁るしかない。