domingo, 22 de agosto de 2010

Instalação do ambiente de compilação para mini2440

Neste post vou mostrar os pacotes mínimos para a compilação de qualquer programa para a placa mini2440, em uma máquina com SO que utilize pacotes deb.

$ sudo apt-get install build-essential

Este pacote contém uma lista informativa de pacotes que são considerados essenciais
("build-essential").

Outro pacote importante é o autoconf que é um conjunto de programas que ajudam a gerar o Makefile, ele é um script que ajuda a criar o configure. Para instalar o autoconf execute o comando:

$ sudo apt-get install autoconf

Para compilar os programas que iram rodar no ARM é necessário instalar o compilador ARM, para isso adicione o fonte do pacote para o emDebian, o emDebian é uma versão da distribuição Debian mas compilada com para rodar em ARM, também são retirados os pacotes que não são necessários para sistemas embarcados.

Para instalar o compilador é necessário adicionar os fontes dos pacotes com o comando:

$ sudo nano /etc/apt/sources.list

Adicione essa linha no final do arquivo sources.list

deb http://www.emdebian.org/debian lenny main

Após adicionar, salve o arquivo e atualize executando um update nos pacotes, com o comando:

$ sudo apt-get update

Para compilar os programas para o ARM é necessário instalar as os arquivos de header das bibliotecas padrões da linguagem C, estas bibliotecas já são cross-compiladas para a plataforma ARM, por isso o nome delas é xxx-armel-cross.
Onde ARMEL quer dizer, ARM EABI Little. EABI quer dizer (Embedded Abstract Binary Interface) e Little vem de Little Endian, que é o modo como os bytes são lidos no processador ARM.

Para instalar as bibliotecas execute os comandos:

$ sudo apt-get install linux-libc-dev-armel-cross libc6-armel-cross libc6-dev-armel­crossc

O pacote binutils é utilizado para instalar o GNU Assembler o "linkador" e utilitários para binários no formato ARM. Os programas neste pacote são usados para montar, "linkar" e manipular arquivos binários e arquivos objeto. Eles podem ser usados em conjunto com um compilador e várias bibliotecas para construir programas.

Para instar o binutils execute o comando:

$ sudo apt-get install binutils-arm-linux-gnueabi

O GCC é o compilador C da GNU, um compilador otimizado e realmente portável para linguagem C. Agora é a parte da instalação do compilador que gera o binário executável para o ARM.

$ sudo apt-get install gcc-4.3-arm-linux-gnueabi

O G++ é um pacote de dependência que fornece o GNU compilador C++ padrão, neste
caso para gerar executáveis para o ARM. Para instalar, execute o comando:

$ sudo apt­get install g++-4.3-arm-linux-gnueabi

A partir daqui o ambiente está configurado para compilar qualquer código fonte para plataforma ARM. Os binários dos compiladores são instalados na pasta /usr/bin não é necessário adicionar nada ao PATH.

Abraços,
fsanches

referência:

http://wiki.debian.org/EmdebianToolchain




quinta-feira, 25 de março de 2010

emDebian com LXDE


Olá, Depois de alguns pedidos eu consegui rodar o emDebian com interface gráfica.
Consegui rodar a XFCE e também a LXDE.
Instalei o Iceweasel o que consumiu muita memória do S3C2440.
Vejam a foto:
















Abraços,
fsanches



















sexta-feira, 31 de julho de 2009

Instalando emdebian na mini2440

Essa postagem ensina como instalar o distribuição Debian embarcada na mini2440 chamada emdebian.

Vou iniciar, imaginando que você tem o u-boot 1.1.3 instalando na placa, se não tiver você pode seguir seguir as instruções do blog do meu amigo Isaac ( http://icordeiro.blogspot.com/2009/07/instalando-o-u-boot-113-na-mini2440.html ).

Você vai precisar baixar o sistema de arquivos do emdebian da página (http://mini2440.googlecode.com/files/emdebian-grip-090306-armel-lenny-installed.tar.bz2).

Você pode descompactar ele no diretório que você escolher para ser compartilhado por NFS, no meu caso eu descompactei ele todo no diretório /home/fsanches/mini2440/nfs.

Para descompactar faça:

#tar -xvjf emdebian-grip-090306-armel-lenny-installed.tar.bz2

Depois de ter descompactado o arquivo você precisa dar os seguintes comandos[4]:

Esse serve para ele montar o proc.
# echo "proc /proc proc none 0 0" >>etc/fstab

Esse serve para dar o nome para a placa
# echo "mini2440" >etc/hostname

Cria o console
# mknod dev/console c 5 1

Cria o device serial na placa.
# mknod dev/ttySAC0 c 204 64

Adiciona o repositório no source.list
# echo 'deb http://www.emdebian.org/grip/ lenny main' >>etc/apt/sources.list

Você precisa ter instalado no seu PC o servidor do NFS, para isso você deve dar os seguintes comandos no debian:

#sudo apt-get install nfs-kernel-server nfs-common portmap sudo

#dpkg-reconfigure portmap

#sudo /etc/init.d/portmap restart


Caso você tenha problemas para configurar seu servidor, você pode seguir o link [3] da referência.

Agora com tudo funcionando, edite seu arquivo /etc/exports para exportar o diretório onde ficará o file system, com o seguinte comando.

#sudo vi /etc/exports

Insira a linha abaixo para exportar o diretório, no caso com o seu diretório.
/home/fsanches/mini2440/nfs 192.168.0.0/24(rw,no_root_squash,sync)


Essa linha exporta /home/fsanches/mini2440/nfs com leitura e escrita para todos os hosts na rede 192.168.0.0

Após isso, você deve resetar o seu serviço NFS, com o seguinte comando:

#/etc/init.d/nfs-kernel-server restart

No prompt do u-boot de os seguintes comandos:

MINI2440 # printenv

Com esse comando você pode visualizar todas as váriaveis.


MINI2440 # setenv serve
rip 192.168.0.100

Com esse comando você seta o ip do seu servidor, no caso seu PC.

MINI2440 # setenv ipaddr 192.168.0.101

Com esse comando você seta o ip da placa mini2440.

MINI2440 # saveenv

Esse comando salva as variáveis na flash. Como eu li em um tutorial "saveenv is your friend.."

MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=0tb ip=192.168.0.101 root=/dev/nfs rw nfsroot=192.168.0.100:/home/fsanches/mini2440/nfs

console=ttySAC0,115200: configura a serial para 115200

noinitrd: isso fala para placa não usar initrd.

init=/sbin/init: mostra pa
ra a placa onde está o script de inicialização, lembre-se isso está no diretório exportado no NFS.

mini2440=0tb: Aqui configura a placa para ser 3,5" e touch screen


ip=192.168.0.101: Esse é o ip da placa

root=/dev/nfs rw: Isso fala para a placa que o file system será montado por NFS, com permissão de leitura e escrita.


nfsroot=192.168.0.100:/
home/fsanches/mini2440/nfs: Onde a placa deve procurar o file system.
MINI2440 # setenv bootcmd 'nboot.e kernel ; bootm'

MINI2440 # saveenv


MINI2440 # reset

Depois disso é só aguardar que o emdebian será carregado, a senha de root é debian.









O bom de usar o sistema de arquivo compartilhado por NFS é que você pode colocar arquivos em tempo de execução veja a figura abaixo, o prompt de cima é da placa com mini2440#: e o prompt de baixo é do meu PC debian#: eu apenas criei um arquivo de teste, e logo ele pode ser visto na placa mini2440.







fsanches

referências:
[1] http://www.denx.de/wiki/view/DULG/LinuxNfsRoot
[2] http://devbored.com/wiki/index.php?title=NFS_Boot
[3] http://www.vivaolinux.com.br/artigo/Configurando-um-servidor-NFS-em-4-passos?pagina=1
[4] http://code.google.com/p/mini2440/wiki/Emdebian

quarta-feira, 29 de julho de 2009

Utilizando picocom com a placa Mini2440

Esse artigo é bem simples, são coisas que você não consegue achar nos tutoriais sobre essa placa, o pessoal que escreve algo sobre a mini2440 já imagina que você sabe tudo isso.

Eu uso o picocom para a comunicação serial com a placa Mini2440, mas você pode usar qualquer software de sua preferência, como: Minicom, gtkcom, você pode até escrever seu software de comunicação serial em C ou outra linguagem.

Eu utilizo o notebook para "brincar" com a placa, então precisei de um conversor usb-serial, eu uso o conversor da trendnet você pode achar mais informações sobre ele no site (http://www.trendware.com.br/products/TU-S9.htm), ele funciona muito bem e o linux com o kernel 2.6.29.2 reconhece ele automaticamente sem problemas. Acho que versões anteriores de kernel também funcionam, essa versão eu customizei para meu notebook.

As mensagens de debug e da BIOS vivi são enviadas todas em 115200 bps.

O comando que você deve passar para o picocom é:

#picocom -b 115200 /dev/ttyUSB0 --send-cmd "sx -vv"

-b 115200 indica o valor do baudrate

/dev/ttyUSB0 é o caminho do dispositivo serial, se você usa a serial do PC você deve procurar o correto que deve ser ( /dev/ttyS0 ).

--send-cmd "sx -vv" indica que você vai usar o comando para o programa externo "sx -vv" para enviar arquivos, quando você apertar as teclas de comando (ctrl+a + ctrl+s para enviar ou ctrl+a + ctrl+r para receber).

Apartir daí, você pode receber e enviar caracteres pela serial, ou seja, interagir com a placa.

Para sair do picocom, use ctrl+c.

fsanches

referências:
http://linux.die.net/man/8/picocom
http://code.google.com/p/mini2440/wiki/MiniBringup

quarta-feira, 22 de julho de 2009

Compilando s3c2410_boot_usb

Esse é meu primeiro post, eu comprei uma placa chamada Mini2440 essa placa tem um microcontrolador da Samsung o S3C2440, esse microcontrolador é utilizado na maioria dos PND´s (Personal Navigation Device), ou navegadores GPS, ele é utilizado em outros lugares também. Um projeto muito interessante que ele é utilizado é o OpenMoko (www.openmoko.org).

Eu comprei essa placa, por hobby e também para aprender um pouco mais sobre Linux embarcado.

Esse post ensina como compilar o sw que carrega os arquivos (u-boot, vmlinuz, etc...) para a placa Mini2440 pela USB, esse sw é para ser usado no linux, para o windows você pode utilizar o DLW que vem no DVD que vem com a placa.

Gostaria de saber se alguém conseguiu compilar e utilizar ele com o Cygwin ? Se sim, deixem comentários.

Antes de começar, você precisa instalar alguns pacotes, como o libusb, eu uso o Debian então eu intalei o que era necessário assim:

sudo apt-get install build-essential libusb libusb-dev

O pacote libusb não vem por default no Debian, eu estou usando Lenny 5.0.

Eu coloquei o pacote build-essential só para garantir vitória, ele instala muitas das coisas que você precisa para compilar qualquer código fonte.

O código fonte do programa s3c2410_boot_usb pode ser baixado do link abaixo, com o comando:

#wget http://mini2440.googlecode.com/files/s3c2410_boot_usb-20060807.tar.bz2

Na página só tem o código fonte.

Primeiro escolha um diretório onde você vai descompactar o fonte.

Para descompactar dê o seguinte comando:

#tar -xvjf s3c2410_boot_usb-20060807.tar.bz2

Para compilar, entre na pasta s3c2410_boot_usb-20060807 e dê o seguinte comando:

#make

Depois de compilado, você pode colocar o binário no path para poder utilizá-lo sem ter que passar sempre o local dele, isso é apenas uma sugestão, para fazer isso você pode passar o seguinte comando:

#cp
s3c2410_boot_usb /usr/sbin/

Para usar o programa é simples, é só você usar a "BIOS" da placa chamada vivi e carregar o arquivo que você deseja, como por exemplo:

#s3c2410_boot_usb u-boot.bin

É claro que, os passos passados no manual da placa podem ser seguidos até a parte que ele pede para você utilizar o DLW.

Quando o programa é utilizado no final de cada vez que ele carrega um arquivo ele mostra uma mensagem de erro no final que, segundo o pessoal do projeto, pode ser ignorado !

Espero que tenham gostado !

fsanches

referências:
http://code.google.com/p/mini2440/