Archive for fevereiro, 2008

Poke-a-Hole

fevereiro 16, 2008

Ótima ferramenta para encontrar “buracos em estruturas”.

Para quem utiliza o Debian aqui você encontra o binário.

Esse texto do acme, mostra mais informações sobre essa ferramenta.

Relógio

fevereiro 16, 2008

Um simples programa em C usando curses.h, time.h e signal.h:

relogio.c

Para compilar:

 gcc -o relogio relogio.c -lcurses 

How To Plugin

fevereiro 9, 2008

Continuando minha saga no desenvolvimento em outras plataformas, fiz um exemplo de como criar um plugin para o rockbox.

Construir um plugin para ele é muito simples, porém no exemplo que disponibilizo eu apenas defini o macro:

#define STATS_STOP BUTTON_POWER

Pois é um sinal para os aparelhos Sansa e200 para “fnalizar” uma execução; caso você utilize outro aparelho é só alterar esse macro para o seu correspondente. Nos fontes disponibilizados no rockbox há mais exemplos.

horario.c

Algumas coisas no plugin são abrigatórias, como:

#include “plugin.h” /* header com os macros para a criação de plugins */

PLUGIN_HEADER /* é um macro que sempre deve ser incluído no topo do arquivo fonte */

static struct plugin_api* rb; /* ponteiro da estrutura global */

enum plugin_status plugin_start(struct plugin_api* api, void* parameter) /* chamada do plugin */

As demais funções :

rb->splash() /* imprime uma mensagem no display */

rb->lcd_clear_display() /* limpa a tela */

rb->lcd_update() /* atualiza para a impressão de novos dados */

rb->lcd_puts(0,0,const) /* imprime o conteúdo de const na tela */

Para compilar é necessário que nos arquivos CATEGORIES e SOURCES que ficam em: rockbox/apps/plugins, sejam incluídos os dados:

CATEGORIES

Incluir na linha acima de “invadrox,games”:

horario,apps

SOURCES

Incluir na linha acima de “jackpot.c”

horario.c

Feito isso é só compilar. Após compilado basta acessar a seção “aplicativos” do rockbox e lá estará esse plugin, que irá mostrar o horário.

Se alguém tiver uma ideia para algum plugin é só me avisar, pois até agora eu não tiver nenhuma que possa ser útil a alguém :(

Preparando um ambiente para Compilação Cruzada

fevereiro 5, 2008

Recentemente, um amigo me emprestou seu Sansa para que eu pudesse ouvir algumas músicas. Impressionado com o Firmware Open Source que nele há, o rockbox, resolvi entender como
funciona o desenvolvimento de aplicativos nesta arquitetura.

Aqui vou explicar como baixar os fontes do Rockbox e criar o ambiente Cross compiler para o Sansa da séria e200.

Instalando o Subversion:

Primeiro devemos baixar os fontes do rockbox, para isso é necessário você ter os tools do svn:

aptitude install subversion

Baixando os fontes da árvore do Rockbox:

svn co svn://svn.rockbox.org/rockbox/trunk rockbox

Compiladores

No desenvolvimento do rockbox, para compilar e testar suas alterações é necessário ter os pacotes:

binutils-2.16.1
gcc-4.0.3
gdb-6.6

E com eles que criaremos o ambiente para a compilação cruzada.

Preparando o ambiente

O ambiente para compilação foi criado no home de meu usuário na pasta cross. Nesse caso, devemos descompactar os arquivos no diretório:

/home/usuario/cross

Onde será criada a estrutura para a compilação para a arquitetura do Sansa

cd /home/usario/cross

Descompactar nesse diretório o gcc, gdb e o binutils, após isto seguir:

mkdir build
cd build
mkdir gcc
mkdir gdb
mkdir binutils

Para cada programa, entramos no diretório criado, e compilamos passando o target=arm-elf

cd build/binutils/

../../binutils-2.16.1/configure –target=arm-elf –prefix=/home/usuario/cross/sh1
make
make install

Volte a raiz de seu ambiente, /home/usuarios/cross, e inclua o caminho do ambiente cross no PATH

export PATH=/home/usuario/cross/sh1/bin:$PATH

Após isto compile o gcc e o gdb:

cd build/gcc

../../gcc-4.0.3/configure –target=arm-elf –prefix=/home/usuario/cross/sh1 –enable-languages=c
make
make install

cd build/gdb

cd gdb
./../gdb-6.6/configure –target=arm-elf –prefix=/home/usuario/cross/sh1
make
make install

Pronto, seu ambiente para compilação cruzada esta criado. Para compilar o Rockbox para o Sansa, basta seguir os passos:

cd rockbox ( entrar na pasta onde estão os fontes baixados pelo svn )

mkdir build
cd build
../tools/configure

Escolha seu aparelho Sansa, e responda as questões seguintes. No meu caso é um Sansa e250, então escolhi a opção 50, e na próxima questão selecionei (N). Agora é só compilar:

make
make zip

Após esse comando (make zip), ele vai gerar o arquivo rockbox.zip, ai é só seguir o processo normal de instalação.

Veja o post do jalexandre sobre o Sansa.