uClinux on PSP TM 日本語公式サイト


ここは,Jackson Mo氏によるLinux on PSPのサイトです.最新情報は原文の英語公式サイトにて確認してください.

 

Linux on PSPのサイトへようこそ.このウェブサイトは私が面白半分で行っている小規模のプロジェクトを掲載しています.

プロジェクトでは,uClinux version 2.6をPSPに移植しました.もし,あなたが他の組み込みシステムと同様に,PSP上でソフトウェアを開発しようとしているなら,このサイトで有用な情報,興味の引くものを見つけることが出来るでしょう.

 

楽しんでください!  -- Jackson Mo

コンテンツ 

実装コマンド一覧

フォーラム  

お役立ちサイト

uClinux on PSP 

Emu on PSP

BusyBoxサポートコマンド

Palm Universal Wireless K/B

uClinux on the PSP

A new port of uClinux on PSP (with accessibility to ms0)

QJ.NET PSP Updates

PLANEX IEEE802.11b+g WLAN USBアダプタ GW-US54GXS

iR Shell v3.7 リリース

Custon Firmware Extender v1.9|PSPV

PSP用開発ツール

PSPソフトウェア開発環境構築メモ

uclinux for mips

PSP Downloads

News - 新着情報 

2008年2月3日 - uClinux on PSP 0.22をリリース

 ***********************************
  uClinux on PSP 0.22 リリースノート
 2008年2月3日 Jackson Mo
 ***********************************

■インストール

ダウンロードしたファイルを解凍し,uClinuxフォルダに含まれる全てのファイルをms0:/PSP/GAMEにコピーし,XMBからローダを起動します.

いささか不満ではありますが、新型PSP対応のローダよりも、ファームウェア1.5用ローダのほうがよく動くようです.

修正箇所

カーネルの主な修正点:
・新型PSP上にて64MB RAMの利用を可能にして,ブート時に自動的にRAMサイズを判断する機能を追加.
・ローダを実行する際,小さなプログラム(約8KB)がクラッシュするバグを修正.
・メモリマップ関数やフラッシュ制御でアクセスすることができるフレームバッファドライバ(参考までに,新しいオンスクリーンキーボードのソースを見てください)
Refactoring the joypad driver by moving all console-related function out of the driver and relocating them into the console screen driver, making the overall structure more clear and reasonable.
Adding new ability to the joypad driver to block access to the driver if the HOLD lock is on. Also, a new emulate mouse driver is attached to the joypad driver to simlate a PS/2 mouse device on PSP controlled by both analog and dpad.

オンスクリーンキーボードの主な修正点:

・十字キーなどを含めた入力デバイスを選択,指定できる様になりました.
・スナップショット機能を追加しました.明るさ調整ボタンを押すと画面のスナップショットを撮ることが出来ます.ファイルは/usr/screenshots(
ms0:/pictureへのリンク)に保存されます.
・シャットダウンするのにコマンド入力することなく,
HOME+○+×キーで行えるようになりました.
・既存のキーボード入力モードの他に,マウスモードを追加しました.SELECTボタンを押下するとモードを切り替えます.

PSP用テキストコンソールマウスデーモンの実装:
・このプログラムはユーザや開発者に,どのようにマウスをエミュレーションするかを示すデモンストレーションです.さらに,より快適にテキストコンソールを使えるようにコピー&ペースト機能を提供しています.

PSPbootの主な修正点:
・「FW150=1」と指定することにより,ファームウェア1.5用のPSPbootを作ることが出来るようになりました.

ファイルリスト

uClinux/
    ├FW150
    │└EBOOT.PBP
    ├EBOOT.PBP
    ├kmodlib.prx
    ├pspboot.conf
    ├README
    └vmlinux-0.22.bin

2008年1月9日 - PSPBoot 0.22 for 2.0+firmware and slimをリリース

最 新のPSPBoot 0.22をリリースしました.このバージョンは,少々バグを修正して,より安全にファームウェア1.5なしのカーネルモードを実行することができます.こ れにより,ファームウェア2.0+や新型PSPで動作することが出来,1.5 addonが不要となりました.

2008年1月3日 - 新サイトを作りました

さわやかな見た目にして,新年の雰囲気にしました!

2008年1月1日 - 統合開発環境(toolchain)を使うことが出来るようになりました

カーネルやその他のアプリケーションを構築することができるgcc 4.2.1とuClibc0.9.29による新しいtoolchainを利用することができます.これにより,以前よりさらに簡単に移植することが出来るようになりました.

Features - 特徴 

A)uClinuxカーネル 2.6.22-uc1

カーネル2.4から2.6の間には,多くの改善がありました(レスポンスの早いプリエンティブカーネルなど).しかし,Allegrexに実装されているようなMMUのないMIPSマシンは,まだ最新のuClinuxに公式サポートされていません.したがって,PSP上で動作させるためには,カーネルにいくつかの重要なパッチを適用する必要があります.

B)可変ブートローダ

ブートローダの動作は,構成ファイルによって制御することが可能です.viviやubootと似ています.しかし,バージョン1.5のカーネル・ファームウェアを実行するだけで,カーネル1.5修正パッチ(3.71 m33-2)を適用しないと,様々な問題が発生することでしょう. 

C)多くのLinuxユーティリティを含むBusybox 1.7

これもまた,PSP上で動作させるためには,オリジナルを修正する必要があります.

D)仮想ターミナル

UART3(旧型PSPリモート制御ポート)を制御するシリアルドライバーは,シリアル入出力コンソールをPSP上で開くことを可能にしたり,複数の仮想ターミナルをPC上で使う時にキーボードをエミュレートしたりします.最高6個までの仮想ターミナルがPSPで利用することが出来,音量調整用の+ボタンと-ボタンでターミナルを切り替えることが出来ます.


E)LCDスクリーンドライバ

仮想ターミナルをPSPの液晶画面に表示させるための,単純なフレームバッファドライバです.

F)メモリースティック用ドライバ(Cool!)

新しく実装されたブロックデバイスドライバは,メモリースティックにアクセスしやすくなりました.特に指定しないと,システムの起動後に/ms0として自動的にマウントされます.また,複数のパーティションのあるメモリースティックを使用する場合は,/ms1,/ms2...のようにマウントされます.

G)ジョイパッドドライバ

PSPのボタンから,Linuxアプリケーションへの入力をサポートしているジョイパッドドライバです.

H)オンスクリーンキーボード

Linux環境で早い入力を簡単にすることができ(※訳注),ジョイパッドドライバを利用する例として用いられているオンスクリーンキーボードです.

※訳注)現在配布されているバージョンでは,アナログジョイスティックに対応していないため,コマンドの入力に手間取りますが,開発フォーラムの開発者の記事によると,次期バージョンにてサポートされる予定だそうです.

I)MIPS Toolchain

PSP上で動作するuClinuxカーネルとその他のアプリケーションを構築することが出来る,改良されたMIPS Toolchainです.

Installation - インストール

ブートローダ,構成ファイル,カーネルのバイナリイメージが同梱されたプリコンパイル版パッケージをダウンロードし,全てのファイルをms0:/PSP/GAME150/(任意のディレクトリ名)/以下にコピーします(※訳注1).そして,他のゲームと同じようにXMBからブートローダを起動させてください(※訳注2)

※訳注1)メモリースティックのディレクトリは、ms0:/PSP/GAME/(任意のディレクトリ名)/の場合もあります.PCからお使いの環境に合わせてコピーしてください.

※訳注2)公式ファームウェア1.5やカスタムファームウェアのように,自家製ソフトをメモリースティックから起動できる環境が必要です. 関連情報...

Build the Toolchain - Toolchainの構築

gcc4.2.1とuClibc0.9.29による新しいMIPS(el) toolchainは,カーネルとその他のアプリケーションを,以前よりもさらに構築しやすくなりました.オリジナルのtoolchainを作ったり,カスタマイズするために,http://buildroot.uclibc.org/にてbuildroot(20071216版,もしくはそれに近いバージョン)を入手しましょう.より詳しい情報は,以下のセクションで見つけることができます.

Building the MIPS(el) toolchain for uClinux on PSP (英語原文)

訳注)現在翻訳中につきYahoo!翻訳による翻訳をご利用ください.

Build PSPBoot - PSPBootの構築

ファームウェア2.0+と新型PSPをサポートしている最新バージョンPSPBoot0.22は,他の自家製ソフトと同様のPBPプログラムです.これを編集するためには,http://ps2dev.org/にて入手できるPSPSDKをインストールする必要があります.PSPBootのソースコードをここからダウンロードして,解凍したディレクトリで以下のコマンドを実行してください.

make INSTALL_DIR="任意のディレクトリ" install

また,プリコンパイルされたパッケージもダウンロード出来ます.ms0:/PSP/GAME/uClinux/に解凍した全てのファイルとカーネルイメージとコンフィグファイルをコピーし,XMBから起動してください.

Build the Kernel - カーネルの構築

 新しいtoolchainでは,カーネルの構築が容易になりました.少し前のバージョン2.6.22-uc-1(または,近いバージョン)のカーネルソースのtarballを解凍して,新しいパッチを適用してください.そして,以下のコマンドを実行してビルドしてください.

make ARCH=mips menuconfig (もしくは,この構成ファイルをカーネルの.configファイルに上書きしてください)

make ARCH=mips CROSS_COMPILE=mipsel-linux- vmlinux.bin

そして,gzipでイメージを圧縮してから,ブートロードスクリプトを修正してください.

注)新しいtoolchainで作成されたカーネル・実行ファイルは,古いtoolchainで作成されたものとバイナリ互換がありません.

Build Busybox - Busyboxの構築

http://busybox.net/でbusyboxのtarballを入手し,以下のコマンドを実行する前にこの新しいパッチを適用してください.

make CROSS_COMPILE=mipsel-linux- LDFLAGS="-static -Wl,-elf2flt" CFLAGS="-fno-jump-tables" menuconfig (もしくは,この構成ファイルをBusyboxの.configファイルに上書きしてください)

make CROSS_COMPILE=mipsel-linux- LDFLAGS="-static -Wl,-elf2flt" CFLAGS="-fno-jump-tables" install

 実行後,$YOUR_BUSYBOX_DIR/_installディレクトリ以下に全てのファイルがインストールされます.システム初期化のためのinitramfsとして,busyboxをカーネルに埋め込むために,cpioパッケージを_installフォルダに入れます.そして,カーネルコンパイルの途中で,その場所を指定する必要があるかもしれません.もし詳しく分からない場合は,Googleで「initramfs」を検索してみてください.

Build Your Own Application - 自分で作ったアプリケーションの構築

新しいtoolchainでPSPで動作する自作アプリケーションを構築するのは,ちょっとした仕様に注意を払うだけで,デスクトップPC用のアプリケーションを作るのと同じくらい簡単にやることができます.ここでは,Hello worldプログラムの例を示します.

mipsel-linux-gcc -static -Wl,-elf2flt -fno-jump-tables hello.c -o hello

非MMUシステムをサポートしている共有ライブラリがないので,-staticが必要です.-Wl,-elf2fltは,リンクの最終段階でELFイメージを実行可能なFLATに変換するようにリンカを設定するオプションです.そして-fno-jump-tablesは,ジャンプテーブルで多用されるGPREL32の再配置エントリを出さないようにgccを設定します.そのほかのオプションは,一般的なものと変わりません.

Download - ダウンロード

Buildroot-20071216 修正パッチ: buildroot-20071216-linuxonpsp.tar.bz2
 
Kernel-0.20 プリコンパイル版: uClinux.zip
Kernel コンフィグファイル: kernel.config.gz
Kernel-0.21 修正パッチ: kernel-0.21.patch.gz
 
Busybox コンフィグファイル: busybox.config.gz
Busybox-0.21 修正パッチ: busybox-0.21.patch.gz
 
PSPBoot-0.22 プリコンパイル版: pspboot-0.22-prebuilt.zip
PSPBoot-0.22 ソースコード: pspboot-0.22.tar.bz2
 
PSP On-Screen Keyboard v2.1 ソースコード: psposk2.1.tar.bz2

 
旧mips-toolchain プリコンパイル版: toolchain-mips.tar.bz2
旧mips-toolchain 修正パッチ: toolchain-mips.patch.gz 

その他のダウンロード

 (danzelさんの移植に感謝します)
danzel's port of PSPBoot プリコンパイル版: http://localhost.geek.nz/psplinux/ucboot340.tar.bz2
danzel's port of PSPBoot ソースコード: http://localhost.geek.nz/psplinux/ucboot340_src.tar.bz2

Links - リンク

http://jacksonm88.googlepages.com/linuxonpsp.htm (英語公式サイト)

http://jacksonm88.googlepages.com/linuxonpsp_o.htm (旧英語公式サイト)

http://forums.ps2dev.org/viewtopic.php?t=9476 (開発フォーラム)

http://uclibc.org/

http://ps2dev.org/

http://www.uclinux.org/

http://www.psp-linux.org/

http://www.hitmen-console.org/