8000 Home · uofw/uofw Wiki · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
artart78 edited this page Oct 16, 2021 · 25 revisions

Welcome to uOFW - the project of reverse engineering the entire PSP kernel.

Introduction

Its purpose is to provide an entirely free and open-source PSP firmware, based on the official one, so we can fully understand how the PSP works, and so we can do whatever we want with it.

Our goal is not to improve the current firmware. Instead, we aim to create a 100% vanilla firmware on which some other project (i.e a PSP emulator, PSP custom kernel) could base its work on to make its own modifications.

Getting Started

Prerequisites

As the PSP uses a MIPS processor, we reverse engineer code compiled into the MIPS Assembly Language. Check out our MIPS page for information about MIPS.

Get the documentation

A doxygen documentation can be found right here. It is generated automatically after a change was committed to the master branch. The documentation is intended for developers using the PSP SCE API.

A general documentation about the PSP system, its hardware components and its system software can be found here.

Contributing to the project

If you wish to contribute to the uOFW project, there are some steps to follow. Note that you don't even need to own a Playstation Portable to work with us.

  1. First, you will need to learn how to reverse engineer a module. Read the Reverse Engineering Tutorial at least twice.

  2. Next, choose a module (firmware 6.60) from the Current Modules Status page. Pick a small module if it is your first reverse.

  3. Fork this repo and create a topic branch to put your work in. Send us a pull request once your module is finished. If you need help, come to ask us @ irc.freenode.net#uofw.

Happy reversing!

Generating stub libraries

The PSP linking process is a bit particular, and when you build module A requiring functions from the library SuperLibB of module B (if it's missing the libSuperLibB.a in lib/) you need to:

  • make an exports.exp file for the module B (the prxtool tool with the -p flag can generate it automatically for you from an existing module from the official firmware) and place it in src/<module B>
  • make a static library out of it, which contains the stubs, using cd src/<module B> && make -f ../../lib/build.mak exp
  • move the static library/ies (there can be several libraries for one module!), ie the .a files (in our example libSuperLibB.a), to the lib/ directory at the root of the project
  • then, in module A, add LIBS = -lSuperLibB, and you're good to go!
0