#author("2023-04-16T11:51:44+09:00","","") * Doc.9 マルチブート [#u4adedb2] マルチブートとは、カードリッジの入っていない状態でプログラムを動かす仕組みのことを指します。元々は初代ゲームボーイのテトリスの2台接続対戦から発展していって、気がついたら自作プログラムを単体で動かすという趣旨に目的がスライドしていったのかなあとは個人的に思っています。時代が進んでしまったおかげで敷居も低くなり、ぶっちゃけますと5v or 3.3v電源のGPIOをできるハードウェアならなんでもかまいません。~ ** raspberry pi [#sa745a2a] IoTの覇者とえいば[[raspberry pi:https://ja.wikipedia.org/wiki/Raspberry_Pi]]。情報も豊富で使い方は多様化を極めています。売上台数は累計4,600万台(2022年2月28日時点)で、すでに販売を終えたGBAの8,151万台と比べるとすごさを実感できるのではないでしょうか。シングルボードコンピュータでこの分野に叶う相手はそうそういないでしょう。まだ使ったことのない方(特に学生さん)がもしいらっしゃるのでしたら早めに触っておくことをお勧めします。 ** 用意するもの [#m83ea1fa] - raspberry pi b+(b+以外でも可) - ゲームボーイアドバンス専用通信ケーブル(AGB-005)(海外製の互換ケーブルでも可) - ブレッドボード - ブレッドボード用のケーブル(オス-オス) - ニッパ - 半田ごて - 絶縁テープ - テスター ** 通信ケーブル製作 [#v9a54d31] 通信ケーブルについてはAGB-005以外でも問題ないです。ポイントはGBAのシリアルポートに刺さるコネクタ部品と、そこから伸びている4本の線がmbedとspi通信できれば大丈夫です。配線は以下のとおり。左がGBA本体、右がケーブルプラグの拡大写真となっています。~ GBA --- raspberry pi b+ 6-GND GND 3-SI GPIO 10 (SPI_MOSI) 2-SO GPIO 9 (SPI_MISO) 5-SC GPIO 11 (SPI_SCLK) #ref(1.png,nolink) ** 製作例 [#qe6d2fba] #ref(2.png,nolink) ** 使い方 [#u3a2f4b0] ここからはraspberry piのコンパイル環境、wiringPiライブラリが導入済みであることを想定して書いています。別途、他所から勉強してきてください。[[github:https://github.com/akkera102/gba_01_multiboot]]にアクセスします。画面中央の緑色アイコンの「code」をクリックしてDownload ZIPしてください。~ #ref(3.png,nolink) 解凍後、以下のコマンドでコンパイルします。~ $ gcc multiboot.c -lwiringPi -o multiboot 実行前にケーブルを接続してGBAをONのみにします。初代GBAの場合はRボタンを押しつつON、そのあとはSTARTとSELECTボタンを同時押しします。~ $ ./multiboot 実行ファイルを起動すれば上記の製作例のように画像ファイルが表示されます。ちなみに仕様的な話をすると通信はspiが16bit単位であり、モード3でないとダメっぽいようです。~ -Dev'rs GBA Dev FAQs Can you modify a GBA link cable to connect to a COM serial port to support multiboot? There are many reasons you can't easily do this. The first reason is that a standard serial COM port uses 1/8/1 format but GBA multiplayer / multiboot link mode uses 1/16/1 format. (format = Start bit/Data Bits/Stop Bit) ** mbed [#yfb8ecfb] mbedバージョンもあります。 - https://os.mbed.com/users/kek/code/gba_multiboot/ ** 履歴 [#c4d9ece6] - 2023/04/14 - 2014/11/10