Here is some information about PSP Linux.
-------------------------------------------------------------------------------------------------------------------------------------
PSP Linux to a usable
uClinux OS
Part 1: Toolchain
The Toolchain is an
important piece when you are going to cross-compile. It lets you
compile for another cpu instead of your host cpu,in this case we are
going to compile from i686-gnu-linux to mipselnommu-uclibc-linux.
The toolchain consists from GNU binutils and other programs that are
needed for cross-compiling like gcc,make and make. You can add other
libraries but shared libraries will not work. There is the option to
download the toolchain from
https://sites.google.com/site/linuxonpspproject/.
The website has the toolchain,uclinux for psp binaries,buildroot
patches,kernel installation instructions and Busybox installation
instructions.
Part 2: PSP hardware and
uClinux
The Cpu of the psp is an
mips R4000 without mmu (mipselnommu).The current kernel is
2.6.22-uc1.
Devices that work:
Basic Framebuffer
Keyboard
Mouse
Memory Stick
We have some useful stuff
working. The Basic Framebuffer is the only video driver we have for
output, the device is listed under /dev/fb0. Now we also have the
memory stick working which is great because now we have a simple way
to run binary on the psp. The memory stick will be mounted under /ms0
if you have one partion. An on-screen-keyboard is very useful because
we can input text it and it we can interact with it by the psp
buttons. Last but not least is the mouse driver which isn’t that
useful but once a gui is running we can interact with it like we were
using a normal computer. The uClinux website is
http://www.uclinux.org/.
Part 3:Compiling and
DSLinux
To compile a simple hello
world program like this:
main()
{
printf("hello,
world\n");
}
You
need to compile it like this:
mipsel-linux-gcc
-static -Wl,-elf2flt -fno-jump-tables hello.c -o hello
mipsel-linux-gcc
is the type of gcc we are going to compile with. The –static option
is there because on nommu systems we can’t use shared libraries.
Shared libraries are parts of a program that don’t load in the
actual binary but separately in RAM.The –Wl,-elf2ftl option is to
turn the binary from an elf image to a flat binary. The
–fno-jump-tables option is there
to
prevent gcc from generating relocation entries of GPREL32 that is
frequently used in jump tables. Now what do the PSP and DS have in
common?
They
are both nommu systems.
They
both use their own Operating system.
They
both run uClinux because of the lack of mmu.
They
both use external storage. DS uses SD card and PSP Memory Stick
DS
Linux is way ahead of PSPLinux but they are both unsupported.
To
use ./compile scripts you need to copy the toolchain to /usr/bin. You
also need to add the path of the cc1,cc1plus and cc2 binaries.
Example
./configure
-host mipsel-linux
Then
you need to edit to makefile to use these options -static
-Wl,-elf2flt -fno-jump-tables. The options will compile the
application for the mipsel-nommu platform.
That's
it for now.
------------------------------------------------------------------------------------------------------------------------------------Here are some pictures of it running programs:
1. Running an addition program on it.
2. Displaying the 2 times table.
3. Displaying a hello world program.
4. Displaying /proc/cpuinfo.
I didn't port PSPLinux so don't ask me how I did it.
Ported by somebody named Jackson.
No comments:
Post a Comment