Slide 1

Slide 1 text

M5Stackサーバーを使って初代プレイステー ションでuClinuxのカーネルを起動 東海道らぐの万鹿博覧会ライトニングトーク大会 in 大阪南港 2024. 11. 9 1 kazueda か ず え だ

Slide 2

Slide 2 text

kazueda(かずえだ)の紹介 • 大阪出身、丙午、おとめ座、O型 • 科学者(化学) • 2003年4月から浜松で、働き始める • 自転車での移動が生活の足 • 趣味は「ラジオを聴くこと」、「アメリカの コミックの邦訳を読むこと」 @kazueda 2 slideshare speaker deck

Slide 3

Slide 3 text

PlayStation(プレイステーション、略称: PS, PS1) • ソニー・コンピュータエンタテインメント(略: SCE)が 1994年12月3日に発売した家庭用ゲーム機 • CPU:MIPS R3000A ベース • 32ビット RISCプロセッサ (R3051) • メインメモリ: 2 MB EDO DRAM 3 https://ja.wikipedia.org/wiki/PlayStation_(%E3%82%B2%E3%83%BC%E3%83%A0%E6%A9%9F) 30歳おめでとう!

Slide 4

Slide 4 text

RUnix on PlayStation 1 • MIPS-NOMMUなので、uClinux 2.4.x kernel • RS232 SIO経由のシリアルコンソール • プレイステーションのGPU経由の仮想コンソール • 保存メディアとしてマルチプルメモリーカード • SL811を使って、USBキーボードやマウスを接続 • 上記の環境が構築されるらしい。。。 4 https://en.wikipedia.org/wiki/PSXLinux

Slide 5

Slide 5 text

RUnix on PlayStation 1 • 起動プロセス 1. シリアルポート経由でKernelをPlayStationにロード 2. ロードが終わると、Kernelが起動 3. マルチプルメモリーカードに保存してあるrootfsをマウ ントして起動 するらしい。。。 • メモリーカードのEXT2ファイルフォーマッターとrootfsの イメージファイル(psx-mcard.0.8.2.tar.gz)が消失。 5 https://en.wikipedia.org/wiki/PSXLinux

Slide 6

Slide 6 text

RUnix on PlayStation 1 • 起動プロセス(2024年現在) 1. シリアルポート経由でKernelをPlayStationにロードする 2. ロードが終わると、Kernelが起動した後、rootfsが無くて PANICマルチプルメモリーカードに保存してあrootfsをマ ウントして起動 するらしい。。。 • 原因:メモリーカードのEXT2ファイルフォーマッターと rootfsのイメージファイル(psx-mcard.0.8.2.tar.gz)が消失。 6 https://en.wikipedia.org/wiki/PSXLinux

Slide 7

Slide 7 text

2007年前後のRUnixのサイト消滅後 • 主に2つの活動 • 現存するRunixのソースファイルを活用し、メモリカード の読み(書き)をフルスクラッチで実現する試み https://github.com/CodeAsm/PS1Linux • 本体のRAMを2 MBから4 MBや8 MBに張り替えて、 PSPの uCLinuxを参考に、 kernelとrootfsをRAMに展開して起動す る試み https://github.com/arkwise/blackroolinux 7

Slide 8

Slide 8 text

今回の試み • 実機でRUnixを起動して、カーネルパニックを眺める 1. シリアルアダプタを作成 2. M5Stackからファイルを転送するプログラムの作成 3. Kernelを初代プレステに転送して起動 8

Slide 9

Slide 9 text

シリアルポートアダプタの作成 • 対戦ケーブルのSCPH-1040を使うといいけど。 9 • 330円で入手した初代プレステには、もったいない!!

Slide 10

Slide 10 text

シリアルポートアダプタの作成 • 初代プレステのポートを見てみる。 10 • SERIAL I/Oは8ピンの特 殊コネクタ • AV MULTI OUTは12ピン の特殊コネクタ • これらのピン間隔は同 じ <ーAV MULTI用ケーブル を購入して、SERIAL I/Oのコネクタを作る SERIAL I/O ↓ AV MULTI OUT ↓

Slide 11

Slide 11 text

シリアルポートアダプタの作成 • 300円の「PS2/PS3用 コンポーネントAVケーブル」を加工 11 1. 端子の10番目のピンの側まで削除 2. 9番、10番ピンを除去 3. 端子を覆うようにシールドを加工 加工後のコネクタ ↓ 加工前のコネクタ ↓

Slide 12

Slide 12 text

LLMでファイル転送プログラム作成 1. 参考にするプログラムを提供して、関数の説明を含めて 解説させる 2. 提供したプログラムからArduinoIDE用のソースファイル を作成させる 3. 動作確認 4. 不具合を修正させる。その際、提供プログラムの機能が 欠落していたら、欠落部分の機能の説明を加える 5. 項目3、4を繰り返して、目的の動作を実現する 12

Slide 13

Slide 13 text

Copilotを使ってプログラミング • 突然、、、 13

Slide 14

Slide 14 text

ChatGPTでプログラミング再開 14 無事完成しました。 初代プレステ側で はunirom8という ユーティリティを 起動

Slide 15

Slide 15 text

実機でカーネルを起動 M5Stackの画面 初代プレステの画面 15

Slide 16

Slide 16 text

実機でカーネルを起動 M5Stackの画面 初代プレステの画面 16

Slide 17

Slide 17 text

実機でカーネルを起動 M5Stackの画面 初代プレステの画面 17

Slide 18

Slide 18 text

実機でカーネルを起動 • NTSC表示ではありませんでした 18

Slide 19

Slide 19 text

実機でカーネルを起動 • ドン・キホーテTV-171-BKだと、文字がずれてるけど静止画 19

Slide 20

Slide 20 text

まとめ • 初代プレイステーション用シリアルアダプタを格安コン ポーネントケーブルから作成 • LLMを駆使して、M5Stackで動作するファイルサーバーを 作成 • リセットしたら、自動でファイル転送 • ゲームコントローラーから操作 • KernelをNTSC表示の設定で、再コンパイル 20 今後の展開 おしまい

Slide 21

Slide 21 text

まとめ • 初代プレイステーション用シリアルアダプタを格安コン ポーネントケーブルから作成 • LLMを駆使して、M5Stackで動作するファイルサーバーを 作成 • リセットしたら、自動でファイル転送 • ゲームコントローラーから操作 • KernelをNTSC表示の設定で、再コンパイル 21 今後の展開 おしまい CD-RやMO等に眠っている psx-mcard.0.8.2.tar.gz を譲ってください。