Share

Exemplo de software para Linux Embarcado

No artigo Linguagem C para Linux Embarcado foi mostrado as formas ou modalidades de programação para sistemas embarcados rodando Linux. E também já foi explicado O que é Linux Embarcado.

Neste artigo será mostrado como programar um software para Linux Embarcado e o que é necessário para isso. O exemplo que será apresentado roda em qualquer placa eletrônica com Linux, como, por exemplo, BeagleBone, Raspberry pi ou outras. No entanto, os testes serão feitos na placa da Olimex A13-OLinuxino. E o sistema host pode ser qualquer distribuição atual GNU/Linux: Debian, Ubuntu, Fedora…

Instalando e configurando a cross-toolchain

Se você tem dúvidas sobre o que é cross-toolchain leia o artigo O que é Linux Embarcado. Será utilizado para o exemplo o cross-toolchain da Linaro gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415, por ser estável e por rodar em praticamente qualquer distribuição de sua escolha.

1 – Digite o seguinte comando para baixá-lo:

2 – Descompacte o compilador

3 – Crie a pasta toolchains/eabi sob /opt

4 – Mova a pasta do compilador para a pasta /opt/toolchains/eabi

5 – Adicione o diretorio do compilador ao PATH de seu usuário

E adicione à última linha:

export PATH=”/opt/toolchains/eabi/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/:$PATH”

6 – Teste o funcionamento básico (antes de fazer o teste, feche e abra o terminal novamente)

Você deverá ver na última linha: gcc version 4.7.3 20130328 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.04-20130415 – Linaro GCC 2013.04)

Código de Exemplo: Hello world

Copie e salve como hello.c em sua pasta de trabalho.

Compilação do código

Digite o seguinte comando:

Se o compilador não gerou nenhum erro, funcionou! Verifique se o arquivo gerado é para ARM:

A saída deverá ser:

hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs)

Transferência para a placa

A transferência do arquivo para placa pode ser feito de várias maneiras. Se você roda o Linux a partir de um cartão SD basta copiar para o cartão. Aqui o método usado será transferência remota por ssh. Então basta digitar:

Mude o usuário, o ip e a pasta de acordo com as configurações de sua placa e conforme sua rede.

Teste do código

Então para testar, digite no Linux que roda na placa:

Compilação usando um Makefile

Iremos compilar o mesmo código, porém, agora faremos uso de um Makefile para automatizar o processo de compilação. A partir de agora, usaremos sempre o Makefile para compilação.

Copie este código e save como Makefile, usando o M maiúsculo mesmo! As linha abaixo das diretivas all e clean precisam ter uma tabulação para funcionar, caso contrário haverá erros! Caso tenha problemas com o Makefile, baixe aqui: Makefile.

Digite o comando:

Se nenhum erro for mostrado então tudo está funcionando. Não usaremos bibliotecas no momento, portanto deixe LIBS comentado mesmo! Pronto! Isto é tudo que você precisa para compilar qualquer software simples para Linux Embarcado. Veremos em outros artigos o uso de bibliotecas linkadas dinamicamente para projetos mais complexos.


Translate »