Configurando e usando o Eclipse em Linux embarcado

- por Sergio Prado

Categorias: Linux Tags: ,

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?

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:

  1. 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).
  2. Um gerenciador de build do projeto para gerar automaticamente o arquivo de build a partir do código-fonte.
  3. Um debugger decente.
  4. 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.

  1. Clique com o botão direito na janela à esquerda que contém as conexões disponíveis e selecione “New->Connection“.
  2. Selecione “SSH Only” e clique em “Next“.
  3. Digite o IP do equipamento no campo “Host name” e um nome que você quer dar para a conexão no campo “Connection name“.
  4. 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:

  1. Vá para a perspectiva C/C++ em “Window->Open Perspective->C/C++“.
  2. Crie um novo projeto em “File->New->C Project“.
  3. Dê um nome ao seu projeto, selecione a opção “Executable->Cross-Compile Project” e clique em “Next“.
  4. 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:

  5. 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?

  1. Acesse “Run->Debug Configurations“.
  2. Clique duas vezes em “C/C++ Remote aplications
  3. No campo “Connection“, selecione o nome da conexão remota que você criou com o Remote System Explorer.
  4. 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

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.