Compile programas para o PlayStation 3 em PC de 32 bits

Neste documento veremos de forma simples e objetiva, como efetuar uma compilação cruzada gerando um programa HelloWord para o famoso console PlayStation 3. A distribuição utilizada foi o OpenSuSE 10.3 e o equipamento foi um modesto PC de 32 bits.

[ Hits: 46.778 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 26/05/2008 | Blog: http://assuntonerd.com.br


HelloWord.c para Playstation 3



Crie o seu primeiro HelloWord.c para o PlayStation 3 com o conteúdo abaixo:

#include <stdio.h>
typedef union
{
    unsigned long long ull;
    unsigned int ui[2];
}addr64;

int main(unsigned long long speid, addr64 argp, addr64 envp)
{
    printf("Hello world, para o PlayStation 3!\n");
    return 0;
}

A compilação será executada em duas fases (criação do código objeto e binário). Abaixo o comando para compilar o código-fonte gerando o objeto do mesmo.

$ spu-gcc -W -Wall -Winline -Wno-main -I. -I /opt/cross/spu/sys-root/usr/include/ -include spu_intrinsics.h -O3 -c helloword.c

A seguir a sintaxe para criar o código binário (executável) utilizando a biblioteca libc estática.

$ spu-gcc -o helloword helloword.o -Wl,-N /opt/cross/spu/sys-root/usr/lib/libc.a

Agora copie o executável para o PS3 com Linux e execute o programa. Abaixo os resultados efetuado pelo Marcus Fazzi.

$ ./helloword
Hello world, para o PlayStation 3!

$ file helloword
hello_spu: ELF 32-bit MSB executable, Cell SPU, version 1 (SYSV), statically linked, not stripped

$ uname -a
Linux Nakoruru 2.6.23-ps3 #1 SMP Wed Dec 19 20:36:55 UTC 2007 ppc64 Cell Broadband Engine, altivec supported GNU/Linux

Fácil não? Agora basta um pouco de pesquisa e um PS3, para utilizar todo o poder de fogo do Software Livre nesta máquina criada para voar...



"Colaborar atrai amigos, competir atrai inimigos...
Use a força, LEIA OS FONTES!"

Sobre o Autor: http://www.netitec.com.br/alessandro

Página anterior    

Páginas do artigo
   1. PlayStation 3 - Um brinquedo de gente grande...
   2. O que CELL?
   3. HelloWord.c para Playstation 3
Outros artigos deste autor

Xtraceroute: O traceroute tridimensional

Acessibilidade: Movimentos do mouse com a face (eViacam)

Biometria facial na autenticação do usuário root

Conheçam a linguagem D (saiu do forno)!

Como tornar-se um membro da comunidade Linux

Leitura recomendada

Top 10 melhores jogos FPS para Linux

Jogos para Linux (parte 4)

Emulando jogos arcades com xmame

Jogue DOOM clássico completo no Linux com Prboom

Criando um servidor de Counter Strike 1.6 + AdminMod + MetaMod + StatsMe

  
Comentários
[1] Comentário enviado por Pianista em 26/05/2008 - 10:34h

Ótimo artigo! xD.. gostei..

[2] Comentário enviado por rafastv em 26/05/2008 - 11:07h

Eu também quero meu PS3!!!
Para quem não sabe a Unicamp usa os bichinhos como um cluster rodando Linux em cima http://g1.globo.com/Noticias/Tecnologia/0,,MUL146410-6174,00-UNICAMP+USA+PLAYSTATION+PARA+REALIZAR+P...
Ótimo artigo, também queria ter um amigo que tivesse o console, ser liso é osso hehehe

[3] Comentário enviado por vodooo em 26/05/2008 - 11:24h

Primeiramente, parabéns pelo artigo!

Bom, enquanto não conseguirem desbloquear o PS3, rodar o Linux nele como usuário doméstico (Desktop) será apenas para "impressionar" os amigos, pois a performance obtida rodando sobre o Hypervisor (espécie de firewall da Sony que "capa" quase todos os recursos, incluindo recursos 3D do console) é equivalente a um Celeron D320 com 256 de ram.

Afirmo isso por experiência própia, pois tenho em casa um PS3 rodando Ubuntu 7.04.

Mas... o desenpenho e "potência" dos processadores Cell é inquestionável.

Abraços

[4] Comentário enviado por tjpp em 26/05/2008 - 11:36h

O problema não é desbloquear o PS3 nem o Hypervisor. O problema é que o forte do Cell são as SPUs, os cores adicionais. O Hypervisor roda em uma das SPU e, portanto, não afeta o desempenho. O que é bloqueado para o Linux é o acesso acelerado à placa gráfica; só isto! Para baratear os custos de fabricação, uma das SPUs é desativada, deixando 6 disponíveis. Uma camada como o hypervisor é o que é usado nos processos de virtualização, como o Xen.

Para usar estes cores adicionais é necessário modificar o fonte dos programas e de maneira radical. Esta é a razão pela qual temos poucos jogos para o PS3, comparado com o Wii. O artigo do Cabelo mostra como fazer a cross-compilation para o Cell, sem tocar nos SPUs (afinal é um "hello, world"). Sem usar as SPUs explicitamente, o Cell é um PowerPC com dois cores.

[5] Comentário enviado por SMarcell em 26/05/2008 - 12:21h

E eu aqui com um Xbox 360! =(

[6] Comentário enviado por marcosmiras em 26/05/2008 - 13:46h

Sempre arregaçando nos artigos...
[]'s

[7] Comentário enviado por anunakin em 26/05/2008 - 15:15h

Valeu CABELO!
1- Só uns comentários essa HelloWorld roda numa das SPUs ... para rodar na PPU (PPC 64/32bits) o gcc normal faz o trabalho...

2- O acesso à placa RSX (8800) com aceleração 2D/3D, não é bloqueado apenas não há drivers, há muita informação sobre isso aqui: http://ps2dev.org/

3- Há um projeto de fazer uma placa virtual rodando em uma das SPUs....

[8] Comentário enviado por asdf2 em 26/05/2008 - 16:25h

Nota 10, mano.

[9] Comentário enviado por tjpp em 26/05/2008 - 16:37h

anunakin,

no site que você postou tem o artigo sobre o bloqueio a RSX, que impede que o pessoal consiga desenvolver o driver 3D: tem http://ps2dev.org/News/Is_Sony_blocking_3D_access%3F

Quem não fez a atualização de firmware, ainda tem acesso.

[10] Comentário enviado por cesar em 26/05/2008 - 17:13h

Show,


Abraço.

[11] Comentário enviado por izavos em 26/05/2008 - 18:31h

Cabelo:

Com base no seu artigo que é de excelente nível técnico, verifiquei que sites publicaram que a Toshiba tem um prototipo de notebook com processador “ Intel Core 2 Duo” + “Cell de 1.5 GHz de 4 elementos” definido versão reduzida!

Esse realizou a seguinte demostração, o notebook converteu um filme de uma hora com resolução de 640×480 pixels em uma versão em alta-definição, a 1920×1080 pixels, aplicando alguns filtros para melhoria da imagem durante o processo. A operação, que levaria mais de 24 horas em um notebook equipado apenas com o chip da Intel, foi realizada em apenas três horas.

Fonte “http://alexandrequevedo.wordpress.com/2008/01/21/toshiba-demonstra-notebook-equipado-com-processador-cell/ “.

Em outro site mostra a cara por assim dizer da tecnologia batizada de “SpursEngine “ que deu esse empurrão no micrinho “http://crave.cnet.com/8301-1_105-9940771-1.html“.

Pegunta que não quer calar, sera que a Apple fez bem em abandonar a IBM com os PowerPc?

Sera que o Cell pode um dia ser uma ameaça para a Nvidia, ATI, AMD ou mesmo a Intel ???

Mistério !

[12] Comentário enviado por Gabriel_Silva em 27/05/2008 - 01:14h

Bela materia aqui no Orkut Linux, haaaaaaaaa.

[13] Comentário enviado por LéoUbuntu em 27/05/2008 - 10:45h

um dia tb terei um Ps3 !

[14] Comentário enviado por anunakin em 28/05/2008 - 13:28h

TJPP,

Há mais alguns artigos no site, aonde uns hacker demostram que não houve bloquei o que houve foi que a sony mudou os ponteiros, constantes e tudo mais no hypervisor, ou seja o que não há é documentação...

Por exemplo... a maioria dos processadores mais novos da linha ARM possuem aceleração 2D/3D (o iPhone é só 2D) mas vocÊ já viu algum rodando um openGL ? mesmo com a documentação ninguém fez um driver ... e isso dá muito trabalho...

A sony parece que soltaria um driver com aceleração 2D... pro Linux na PS3...

[15] Comentário enviado por izavos em 29/05/2008 - 16:27h

Muito bom o artigo de relevância técnica para user do “VOL” !

Mesmo considerando todo o poder do “C” como ferramenta de programação, nada substitui o “Assembly“ para que realmente quer aprender sobre processadores e por fim programação.

A IBM ou Sony já libero alem de esquemas do processador, alguma relação de instruções do “Cell”.

Alguma ferramenta tipo “assemblador” para o mesmo , ou no Linux portado para o PS3.

Alguem sabe como funciona o gerenciamento de memoria do “Cell”, interrupções, apontadores, registradores, relação de subrotinas se tiver alguma.

Alguem já fez um Dump de um seguimento de memoria para ver o resultado ?

Como não poderia deixar passar essa, quero afirmar que gosto da abordagem do autor do artigo. Sem essa de auto promoção de “Sinônimo de qualquer coisa que escrevem por ai” !

[16] Comentário enviado por octopos em 10/03/2009 - 23:05h

ÓTIMO texto, como sempre muita coisa para apreender =].

Vim só ressaltar que na minha distribuição, as lib se encontravam em locais diferentes, em /usr/lib/cell :

spu-gcc -W -Wall -Winline -Wno-main -I. -I /usr/lib/cell/toolchain/lib/gcc/spu/4.1.1/include -include spu_intrinsics.h -O3 -c hello.c

spu-gcc -o hello hello.o -Wl,-N /usr/lib/cell/sysroot/usr/spu/lib/libc.a

Ainda não testei, para saber se usei as lib certas, pois assim como muitos, não tenho PS3 :P

Mas assim que testar volto e reposto.


Boa Cabelo!!

[17] Comentário enviado por XimenesWambach em 04/06/2009 - 15:44h

Mandou bem, testei em meu PS3, e tudo ok...
Estou com Yellow Dog no meu PS3 e funcionou blz

[18] Comentário enviado por PietroPC em 04/02/2010 - 21:10h

XimenesWambach:
Eu estava instalando o YDL 6.2 no PS3, mas a instalação começou ontem dia 3 por volta das 19:00 e agora ainda não acabou.
Tipo o PS3 estava lendo o DVD, dava para ouvir, mas não saia da tela a mensagem:
"Iniciando o processo de instalação. Isso pode demorar vários minutos."
Não é possivel que em 1 dia não tenha copiado todo o conteúdo do DVD.
Eu selecionei a instalação de games, o GNOME, KDE, XFCE, ferramentas de desenvolvimento e desenvolvimento WEB.
Agora eu cancelei a instalação e vo ve se começo de novo!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts