Month: August 2005

Instalando Gnopernicus no Linux

O Gnopernicus é um software de tecnologia assistiva que permite a deficientes visuais usaram o computador.

Estamos interessado no suporte a voz deste software com integração com o Festival.

Para instalar no Debian execute:

apt-get install gnopernicus
apt-get install at-spi

Criando um binário teste p/ o Easybox

Código do led.S

.text
.code 32
.align 4

LEDADDR = 0x03200000
ON = 0xFC
OFF = 0xFF
DELAY = 0x1000000

ldr r0, =LEDADDR

infinite_loop:

ldr r1, =ON
strb r1, [R0]

ldr r2, =DELAY

wait_loop_1:

subs r2, r2, #1
bge wait_loop_1

ldr r1, =OFF
strb r1, [R0]

ldr r2, =DELAY

wait_loop_2:

subs r2, r2, #1
bge wait_loop_2

b infinite_loop

Para compilar:
arm-linux-gcc -nostdlib -nostartfiles -c -mlittle-endian led.S -o led.o
arm-linux-ld -EL -Tldscript -o led led.o

Transformar em binário:
arm-linux-objcopy -O binary led led.bin

Compilando o kernel do Linux para o Easybox

Para podermos compilar o kernel do Linux para o Easybox primeiramente devemos instalar o toolchain, baixe do site: ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/cross-2.95.3.tar.bz2

Para instalar (como root) vá até o diretório /usr/local crie um diretório arm, entre neste diretório e execute:
tar jxvf /caminho/para/arquivo/cross-2.95.3.tar.bz2

Será criado o diretório 2.95.3 com todas os binários do toolchain.

Acrescente o diretório /usr/local/arm/2.95.3/bin no PATH:
export PATH=/usr/local/arm/2.95.3/bin:$PATH

Extraia o arquivo do kernel 2.4.18
tar zxvf linux-2.4.18.tar.gz

Entre dentro deste diretório e aplique o 1º patch:
gunzip -c patch-2.4.18-rmk4.gz | patch -p1

Aplique o 2º patch:
gunzip -c patch-2.4.18-rmk4-wp3.gz | patch -p1

Edit o arquivo Makefile do kernel acrescente:
CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-

Em seguida, vem a compilação padrão
make menuconfig

make dep

make Image

Instalando BDM no Linux

Sera explicado neste artigo como compilar o BDM-TOOLS para controlar uma placa com processador Coldfire através da Interface BDM.

Será utilizado a processo de geração de device driver para o kernel, e não o processo de acesso direto as portas de IO (IOPERM).

Baixe o bdm-tools do site http://sourceforge.net/projects/bdm a versão atual é a 1.3.0.

Extraia o arquivo bdm:
tar jxvf m68k-bdm-1.3.0.tar.bz2

Entre no diretório criado
m68k-bdm-1.3.0

Agora compile a BDMlib e o bdm-chk, para evitar o erro de não encontrar a biblioteca bfd.h instale o binutils-dev:
apt-get install binutils-dev

Em seguida continue com a compilação:
./configure
make
make install

Precisamos compilar o device driver BDM, mas antes temos que modificar o arquivo driver/bdm.c porque o RAMBAR está com o valor errado, não funciona nos Coldfires V2 (MCF5282, MCF5235, etc).
mude de:
0xc04, /* BDM_REG_RAMBAR */

para:
0xc05, /* BDM_REG_RAMBAR */

Entre dentro do diretório onde contém o driver para a versão do seu kernel, estou usando o kernel 2.6:
cd m68k-bdm-1.3.0/driver/linux-2.6

Compile e instale:
make
make install

Crie o file device:
mknod /dev/bdmcf0 c 34 4

Agora vamos instalar o GDB com suporta à interface BDM.
Baixe o código fonte do GDB 6.1 (os outros patchs GDB estão errados, são para o insight na verdade):
ftp://ftp.gnu.org/gnu/gdb/gdb-6.1.tar.gz

Descompacte:
tar zxvf gdb-6.1.tar.gz

O diretório gdb-6.1 deverá esta no mesmo nível do m68k-bdm-1.3.0/gdb/patches para o patch se aplicado:
patch -p0 < m68k-bdm-1.3.0/gdb/patches/gdb-6.1-bdm-m68k.patch

Compile e execute o GDB:
./configure –target=m68k-bdm-elf
make
make install

Remova qualquer módulo que possa estar usando a porta paralela, para visualizar execute lsmod:

lp
parport
parport_pc

Para remove-lo use rmmod seguido do nome do módulo:

rmmod parport_pc
rmmod parport
rmmod lp

Insira o módulo bdm no kernel:
insmod /lib/modules/`uname -r`/extra/bdm.ko

Adicionando um novo aplicativo no uClinux

Para adicionar um novo aplicativo no uClinux crie um novo diretório dentro de uClinux-dist/user, como sugestão copie o diretório ‘ping’ para ‘olamundo’.

Em seguida acrescente uma entrada em uClinux-dist/user/Makefile para o diretório do seu programa, como no exemplo:

dir_$(CONFIG_USER_OLAMUNDO) += olamundo

A definição CONFIG_USER_OLAMUNDO deverá ser declarada em uClinux-dist/config/config.in, desta forma:

bool ‘olamundo’ CONFIG_USER_OLAMUNDO

Por fim, definimos o que será apresentado como informação (help) ao usuário no momento em que o mesmo estiver configurando os aplicativos que deverão estar presentes no uClinux. Para isso acrescente a seguinte entrada no arquivo uClinux-dist/config/Configure.help :

CONFIG_USER_OLAMUNDO
A simple welcome program.
Approx. binary size: 10k

Observe que as linhas abaixo de CONFIG_USER_OLAMUNDO iniciam-se com 2 espaços antes do texto de informação, este espaçamento deverá ser respeitado.

Procurando por palavra dentro de arquivos

Bom, esta é apenas uma dica para os novatos.

É comum procuramos uma palavra em arquivos recursivamente usando o comando:

find . -type f | xargs grep “Palavra” | less

Porém um comando simples que pode fazer a mesma coisa é:

grep -r “Palavra” * | less

Este comando é muito mais intuitivo e fácil de usar.

Compilando o COLILO para a M5238-EVB

Baixar o colilo no seguinte endereço:
http://www.reasonability.net/uclinux/colilo/colilo-20040221.tar.gz

Baixar o patch no seguinte endereço:
http://mailman.uclinux.org/pipermail/uclinux-dev/attachments/20050722/e008cedc/colilo.obj

tvd01:/comum/uclinux/colilo> ls
colilo-20040221.tar.gz colilo.diff

tvd01:/comum/uclinux/colilo> tar zxvf colilo-20040221.tar.gz

tvd01:/comum/uclinux/colilo> cd colilo-20040221

tvd01:/comum/uclinux/colilo/colilo-20040221> ls
arch colilo.S function.h main.c misc.c status.h
boot.S COPYING inflate.c Makefile prototypes.h ui.c
Changelog dprintf.c ledstate.h mcfuart.h serial.c vendors

tvd01:/comum/uclinux/colilo/colilo-20040221> patch -p1 -lt ../colilo.diff
patching file arch/5235/arch.h
patching file arch/5235/cache.S
patching file boot.S
patching file Changelog
patching file main.c
patching file Makefile
patching file mcfuart.h
patching file serial.c
patching file vendors/Motorola/M523xEVB/board.c
patching file vendors/Motorola/M523xEVB/flash.ld
patching file vendors/Motorola/M523xEVB/Makefile
patching file vendors/Motorola/M523xEVB/ram.ld
tvd01:/comum/uclinux/colilo/colilo-20040221>

Acrescentar no Makefile:

BOARD = M523xEVB
CF_ROOT = /usr/local/lib/gcc-lib/m68k-elf/2.95.3
GCC_EXEC_PREFIX = /usr/local/bin/m68k-elf-

tvd01:/comum/uclinux/colilo> make