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 32: | Line 27: | ||
* You can test with spuisofs isolated SPU modules which are decrypted by isoldr. | * You can test with spuisofs isolated SPU modules which are decrypted by isoldr. | ||
* You cannot test loaders with spuisofs. | * You cannot test loaders with spuisofs. | ||
* But spuisofs has the advantage that it's alot easier to execute isolated SPUs with it than with spuldrfs. | * But spuisofs has the advantage is that it's alot easier to execute isolated SPUs with it than with spuldrfs. | ||
See http://www.ps3devwiki.com/wiki/Spuisofs | See http://www.ps3devwiki.com/wiki/Spuisofs | ||
Line 38: | Line 33: | ||
==spuldrfs== | ==spuldrfs== | ||
* | * http://www.ps3devwiki.com/wiki/Spuldrfs | ||
=Example: Making dump_ata_keys.self= | =Example: Making dump_ata_keys.self= | ||
Line 47: | Line 39: | ||
* 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 81: | ||
# 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 | ||
Line 121: | Line 111: | ||
# we are done :) | # we are done :) | ||
# time to test it with spuisofs !!! | # time to test it with spuisofs !!! | ||
</pre> | |||
</ | |||
=Example: Making dump_encdec_keys.self= | =Example: Making dump_encdec_keys.self= | ||
* First you need '''lv1ldr''' from your NOR/NAND flash or from PS3 update file. | * First you need '''lv1ldr''' from your NOR/NAND flash or from PS3 update file. | ||