Configurando e usando o Eclipse em Linux embarcado
- por Sergio Prado
Neste artigo irei responder uma pergunta que recebo frequentemente no blog e no dia-a-dia do trabalho que realizo na minha empresa:
“Sergio, como faço para configurar um ambiente de desenvolvimento de aplicações para Linux embarcado?”
A resposta? Mais fácil do que você imagina.
Existem algumas ferramentas de ambiente de desenvolvimento integrado (IDE) disponíveis para quem trabalha com Linux, dentre elas o KDevelop e o Eclipse.
Eu particularmente gosto bastante do KDevelop, mas o Eclipse é definitivamente a IDE open-source mais popular do mercado. E aqui nós iremos aprender a configurá-la como ambiente de desenvolvimento para Linux embarcado.
HISTÓRICO
No fim da década de 90, a IBM iniciou o desenvolvimento do Eclipse, inicialmente como um ambiente de desenvolvimento para a linguagem Java. Em 2001, para alavancar o desenvolvimento do projeto, a IBM doou o código para a comunidade de software livre. E em 2004, foi criada a Fundação Eclipse. Desde então, o projeto evoluiu bastante, e hoje ele esta bem maduro para ser utilizado em projetos de diferentes propósitos.
Mas Sergio, o que vou fazer com um ambiente de desenvolvimento para Java se irei programar em C?
É aí que esta o segredo do Eclipse. Sua arquitetura baseada em plugins possibilitou a expansão das suas funcionalidades, como por exemplo a adição de um editor C/C++.
Então algumas empresas começaram a pensar: porque vou criar um ambiente de desenvolvimento do zero, se posso pegar uma ferramenta pronta, madura e funcional, e apenas adaptá-la ao meu produto?
Daí surgiram muitas ferramentas de desenvolvimento baseadas no Eclipse. Quer alguns exemplos?
- DevRocket da Montavista.
- TimeStorm da Timesys
- Sourcery CodeBench da Mentor Graphics
- LPCXpresso’s IDE da Code Red (para uCs da NXP)
- AVR32 Studio 2.6 da Atmel
- E por aí vai!
PORQUE UMA IDE? PORQUE O ECLIPSE?
Dependendo do tamanho e da complexidade do seu projeto, você vai precisar de uma ferramenta para agilizar seu trabalho. Em se tratando de Linux embarcado, uma IDE pode te ajudar bastante, principalmente se tiver:
- Um bom editor de código-fonte, com suporte a highlighting de sintaxe, auto-complete de código e navegação entre os objetos do projeto (funções, estruturas, variáveis, etc).
- Um gerenciador de build do projeto para gerar automaticamente o arquivo de build a partir do código-fonte.
- Um debugger decente.
- Um mecanismo de gerenciamento remoto do dispositivo alvo (seu produto, kit de desenvolvimento, etc).
Conseguimos tudo isso (e muito mais) através do Eclipse e de dois plugins, o CDT (C/C++ Development Toolkit) e o RSE (Remote Systems Explorer).
E configurar este ambiente nao tem muito segredo.
INSTALANDO
A versão mais atual do Eclipse no momento em que escrevo este artigo é a Eclipse Indigo. É ela que utilizaremos para nossos testes.
Pela página de downloads você pode baixar a ferramenta em diferentes “sabores” (IDE para java, java EE, javaScript, modelagem de dados, testes de software, etc).
Nós queremos a versão com suporte a C/C++ para Linux: Eclipse IDE for C/C++ Linux Developers. Nesta versão já estão empacotados todos os plugins que mencionei acima.
Se sua máquina for de 32 bits, você pode executar os comandos abaixo para baixar, instalar e executar o Eclipse:
$ wget http://eclipse.c3sl.ufpr.br/technology/epp/downloads/release/indigo/SR1/eclipse-linuxtools-indigo-SR1-incubation-linux-gtk.tar.gz $ tar zxfv eclipse-linuxtools-indigo-SR1-incubation-linux-gtk.tar.gz $ cd eclipse/ $ ./eclipse |
Se sua máquina for the 64 bits, execute os comandos abaixo para instalar e executar o Eclipse:
$ wget http://espelhos.edugraf.ufsc.br/eclipse//technology/epp/downloads/release/juno/SR1/eclipse-cpp-juno-SR1-linux-gtk-x86_64.tar.gz $ tar zxfv eclipse-cpp-juno-SR1-linux-gtk-x86_64.tar.gz $ cd eclipse/ $ ./eclipse |
Agora vamos começar a configurar a ferramenta, começando pelo Remote System Explorer.
TESTANDO E USANDO O RSE
O RSE (Remote System Explorer) é uma ferramenta que vai possibilitar o acesso e gerenciamento remoto do hardware. Através de uma conexão remota via rede com o dispositivo, você poderá manipular o sistema de arquivos, copiar/remover/editar arquivos, obter acesso ao shell, tudo pela interface do Eclipse!
Para começar, abra a perspectiva do RSE em “Window->Open Perspective->Other->Remote System Explorer“.
À sua esquerda vai aparecer uma janela com as conexões disponíveis. Por padrão, a única conexão disponível é uma local com o sistema de arquivos da sua máquina de desenvolvimento:
Vamos criar agora uma conexão remota via SSH com o equipamento. Esta configuração exige que seu equipamento esteja conectado em rede com sua máquina de desenvolvimento.
- Clique com o botão direito na janela à esquerda que contém as conexões disponíveis e selecione “New->Connection“.
- Selecione “SSH Only” e clique em “Next“.
- Digite o IP do equipamento no campo “Host name” e um nome que você quer dar para a conexão no campo “Connection name“.
- Clique em “Finish“.
Uma outra conexão com o nome que você configurou aparecerá à esquerda. Clique com o botão direito nela, selecione “Connect“, digite e usuário e senha, e pronto! Se você não receber nenhuma mensagem de erro, seu acesso remoto esta configurado e funcionando. Com ele você terá acesso ao shell do equipamento via SSH. Mas o mais interessante é o acesso remoto ao rootfs do equipamento:
Facilita bastante nosso trabalho quando precisamos navegar pelo rootfs do equipamento e alterar algum arquivo, não é verdade?
Obs: Esta conexão criada exige um servidor SSH com suporte à SFTP instalado no equipamento. O OpenSSH serve bem para este propósito, mas em alguns casos ele é grande demais para ser embarcado no dispositivo. Então você pode usar o Dropbear e um outro servidor SFTP. Você pode também querer usar o FTP ao invés do SFTP. Neste caso, você vai precisar criar no Eclipse duas conexões, uma para o SSH e outra para o FTP.
CROSS-COMPILANDO UMA APLICAÇÃO
Cross-compilar uma aplicação no Eclipse é muito simples, basta ter um toolchain configurado para a sua plataforma. Você pode baixar um toolchain pronto ou gerar seu próprio toolchain.
Escrevi dois artigos que podem te ajudar a entender o que são e como gerar toolchains para o seu equipamento. Se você quer entender o que são toolchains clique aqui e se quiser saber com gerar um toolchain clique aqui.
Agora vamos criar um projeto no Eclipse preparado para cross-compilar uma aplicação para seu equipamento:
- Vá para a perspectiva C/C++ em “Window->Open Perspective->C/C++“.
- Crie um novo projeto em “File->New->C Project“.
- Dê um nome ao seu projeto, selecione a opção “Executable->Cross-Compile Project” e clique em “Next“.
- Agora vem o segredo: precisamos configurar o toolchain. Na opção “Tool command prefix” configure o prefixo das ferramentas do toolchain, e na opção “Tool command path” configure o diretório onde se encontram as ferramentas do toolchain. A minha configuração ficou assim:
- Clique em “Finish“.
Crie uma aplicação simples para testar (File->New->Source File):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* hello.c * Created on: Dec 30, 2011 * Author: sprado */ #include "stdio.h" int sum(unsigned char a, unsigned char b) { return a + b; } int main() { printf("Hello Embedded World! Sum = %d\n", soma(1, 1)); return 0; } |
Agora é só compilar em “Project->Build Project” e pronto! Para testar, abra novamente a perspectiva Remote System Explorer e arraste o binário gerado da pasta do projeto do Eclipse para o target através da conexão SFTP. Teste abrindo um terminal via SSH. Assim fica fácil, não é verdade? :)
DEBUGGING REMOTO
Que tal agora debugar remotamente a aplicação rodando no dispositivo?
- Acesse “Run->Debug Configurations“.
- Clique duas vezes em “C/C++ Remote aplications“
- No campo “Connection“, selecione o nome da conexão remota que você criou com o Remote System Explorer.
- Configure o caminho completo onde será salva a aplicação no target, incluindo o nome da aplicação, no campo “Remote Absolute File Path“.
Por último, configure na aba “Debugger” o nome da ferramenta de debugging do seu toolchain, e salve:
Agora é só clicar no inseto verde!
Nunca foi tão fácil configurar debugging remoto em Linux embarcado, não é verdade? :)
O que mostrei neste artigo foi apenas o básico da configuração do Eclipse para iniciar o desenvolvimento em Linux embarcado. Esta IDE é cheia de plugins e funcionalidades interessantes. Vale a pena dar uma olhada, estudar, testar.
Para aqueles que se aventurarem, ou já tiveram experiências com o Eclipse (boas ou ruins), deixem seus comentários aqui!
Um abraço,
Sergio Prado