0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ファイル転送後にシリアルターミナルになるPythonプログラムを生成AIで作成した話

Last updated at Posted at 2025-12-07

はじめに

2025年に初代プレステで動作するuCLinux用rootfsが公開されて以降、実機での動作環境を構築しています。
初代プレステにシリアルポート経由でKernelを転送することで、uCLinuxが起動します。
ファイル転送後に、ターミナルエミュレータに手動で切り替えると、起動メッセージの一部しか確認することができません。
そこで、ファイル転送機能と、転送後にターミナルエミュレータとして機能するpythonスクリプトを作成しました。
この発表内容の一部は、2025年5月24日に行われた「[ゆるIT勉強会浜松] 土曜勉強会 (+懇親会)」の発表内容を含みます。

初代プレステでのuCLinuxの起動プロセス

  1. 初代プレステ側でファイル送受信プログラム(unirom8)を起動
  2. PC上でファイル転送用ソフトを使って、シリアルポート経由でカーネル(kernel.exe)を初代プレステに転送
  3. 転送終了後に、初代プレストでソフトウェアリセットが起こり、カーネルが起動
  4. カーネルがメモリーカード内のrootfsをマウント
  5. 起動プロセスが、初代プレステの映像出力からモニターに表示

Windows上で動作するファイル転送プログラム

これまでに公開されているファイル転送プログラムには、pythonスクリプトの「sioload.py」、「pypsxserial.py」があります。
これらは、初代プレステ側のモダンなファイル送受信プログラムのプロトコルにあっていないので、転送に失敗します。
一方、Windowsで動作する「nops.exe」を使うと、ファイル転送に成功します。
プレステで動作するファイル送受信プログラムのソースファイルが公開されていません。
「nops.exe」はソースファイルが公開されているので、転送の段取りを「sioload.py」に移植することとしました。
「nops.exe」のソースファイル内の「TransferLogic.cs」に転送の段取りが記載されていますので、移植することにします。

生成AIでのファイル転送プログラム修正段取り

  1. 「TransferLogic.cs」をアップロードして、詳細な説明をさせる
  2. 修正したい「sioload.py」をアップロードして、 「TransferLogic.cs」の転送の段取りを追加させる
  3. 修正後の「sioload.py」の動作を確認
  4. エラーメッセージや不具合を明記して修正させる
  5. 項目3と項目4を完成するまで繰り返す(今回は2周で完成)

転送後にターミナルエミュレータになるスクリプトの作成

LLMを使った事前調査では、以下の回答が得られました。
「python3 -m serial.tools.miniterm は、Python の pyserial ライブラリに含まれる シリアル通信のターミナルツールで、シリアルポートを通じてデバイスと直接通信するために使われます。」
python3で、「-m serial.tools.miniterm」をつけてやると、 pyserial パッケージ内の miniterm モジュールをモジュールとして実行するようです。
minitermの用途は以下のように回答されました。
「miniterm は、シリアルポートに接続して、送受信されるデータをリアルタイムで表示・送信できるターミナルです。たとえば、マイコン(Arduino、ESP32など)と通信する際に使われます。
通常は、Ctrl+] を押すと miniterm を終了できます。」

生成AIを使ったスクリプトの修正

上記の学習の後、スクリプトの修正を行いました。
提案されたスクリプトでは、ファイル転送後にSerial Monitorがラウンチされるが、受信した文字列が表示されませんでした。
修正を続けると、今度はファイル転送後プログラムが終了してしまいました。
さらに修正することで、ファイル転送後に serial.tools.miniterm をサブプロセスとして起動し、シリアル通信ができるようになりました。

スクリプトの実行例

まず、Kernel.exeが転送されます。
ファイル転送終了後、minitermが起動しているのがわかります。
image.png
メモリーカードの検出を行い、スロット1のカードをマウントし、ルートプロンプトが表示されます。
image.png

おわりに

生成AIを利用して、初代プレステ用の実行ファイルの転送とその後のシリアルモニタの作成を行いました。
ログの保存や自動コマンド入力の機能を追加していきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?