Editing Making Isolated SPU Modules and Loaders
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
=Introduction= | =Introduction= | ||
Line 6: | Line 5: | ||
=Tools= | =Tools= | ||
==SPU GCC Compiler== | ==SPU GCC Compiler== | ||
* You need SPU GCC compiler to compile your code and create binary version of it. | * You need SPU GCC compiler to compile your code and create binary version of it. | ||
* On PS3 Debian, just install spu toolchain | * On PS3 Debian, just install spu toolchain. | ||
* You can also cross-compile SPU GCC toolchain for your Linux PC. | * You can also cross-compile SPU GCC toolchain for your Linux PC. | ||
==ps3tools== | ==ps3tools== | ||
Line 21: | Line 16: | ||
* You need these tools to decrypt PS3 isolated SPU modules and loaders. | * You need these tools to decrypt PS3 isolated SPU modules and loaders. | ||
* You also need it to sign and encrypt your own SPU modules and loaders. | * You also need it to sign and encrypt your own SPU modules and loaders. | ||
* '''self_rebuilder doesn't work properly with isolated SPU modules or loaders. Therefore, i made a new tool which works with isolated SPU modules and loaders. It's called iso_rebuilder | * '''self_rebuilder doesn't work properly with isolated SPU modules or loaders. Therefore, i made a new tool which works with isolated SPU modules and loaders. It's called iso_rebuilder.''' | ||
* See my GIT repop: http://gitorious.ps3dev.net/ps3otheros/ps3tools | * See my GIT repop: http://gitorious.ps3dev.net/ps3otheros/ps3tools | ||
=How To Test Isolated SPU Modules and Loaders= | =How To Test Isolated SPU Modules and Loaders= | ||
Line 29: | Line 25: | ||
==spuisofs== | ==spuisofs== | ||
==spuldrfs== | ==spuldrfs== | ||
=Example: Making dump_ata_keys.self= | =Example: Making dump_ata_keys.self= | ||
Line 47: | Line 32: | ||
* First you need '''sb_iso_spu_module.self''' from your NOR/NAND flash or from PS3 update file. | * First you need '''sb_iso_spu_module.self''' from your NOR/NAND flash or from PS3 update file. | ||
<pre> | |||
# compile your SPU code | # compile your SPU code | ||
Line 89: | Line 74: | ||
# entry point is 0x880 which is in first program segment at file offset 0x100 | # entry point is 0x880 which is in first program segment at file offset 0x100 | ||
# now we kill all old code | # now we kill all old code with 0s before we put our code there. | ||
# seek parameter is the offset of the first program segment. | # seek parameter is the offset of the first program segment. | ||
# count parameter is the sum of the offset of the last program segment plus its size and | # count parameter is the sum of the offset of the last program segment plus its size and | ||
# minus the offset of the first program segmnet. | # minus the offset of the first program segmnet. | ||
dd if=/dev/zero of=dump_ata_keys.elf bs=1 seek=$((0x100)) count=$((0x51b0 + 0x34 - 0x100)) conv=notrunc | dd if=/dev/zero of=dump_ata_keys.elf bs=1 seek=$((0x100)) count=$((0x51b0 + 0x34 - 0x100)) conv=notrunc | ||
# after you | # after you fille SPU module with 0s, check it with spu-objdump | ||
spu-elf-objdump -d dump_ata_keys.elf | spu-elf-objdump -d dump_ata_keys.elf | ||
Line 109: | Line 92: | ||
00000880 <>: | 00000880 <>: | ||
... | ... | ||
</pre> | |||
</ | |||
=Example: Making dump_encdec_keys.self= | =Example: Making dump_encdec_keys.self= | ||