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.444 ]

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

Compilador Clipper open-source, compile sem problemas os sistemas .PRG no Linux!

Impressione seus amigos com o Tux bonitinho no login modo console

Transforme o seu celular Android em webcam sem fio na plataforma Linux

Montando um mirror de atualização do anti-vírus AVG

TerminatorX: Linux nas discotecas para os DJs!

Leitura recomendada

Hippo Viewer: Cliente para acesso a mundos virtuais

"Wolfenstein: Enemy Territory" e "Hidden & Dangerous Deluxe" no Debian Lenny

DOOM mais fácil que atacar imp pelas costas

Jogos para Linux (parte 5)

MSX: os bons tempos estão de volta II

  
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