[LAB] Configurando o Eclipse IDE
Para o treinamento vamos utilizar o Eclipse IDE para o desenvolvimento de algumas aplicaƧƵes. Esta escolha foi feita com base na praticidade da utilizaĆ§Ć£o da ferramenta, visto que a maiorida dos desenvolvedores embarcados jĆ” tiveram algum tipo de contato com a ferramenta.
AlĆ©m disso, uma abordagem utilizando editores de texto fazendo as compilaƧƵes por Makefiles/CMake pode ser um pouco abrupta para aqueles que nĆ£o tem familiaridade, visto que a curva de aprendizado Ć© mais complexa.
Desta forma, vamos realizar o download, configuraĆ§Ć£o e integraĆ§Ć£o desta ferramente para o desenvolvimento de aplicaƧƵes em Sistemas Linux Embarcados.
Instalando e iniciando o Eclipse
Instale o Eclipse CDT (C/C++ Development Tooling) atravĆ©s dos repositĆ³rios oficiais do Ubuntu:
O '*
' no terminal Linux significa algo como don't care, desta forma ele seleciona todos os pacotes que contenham o comeƧo "eclipse-cdt".
Ao terminar o processo de instalaĆ§Ć£o, abra o Eclipse (via terminal ou pelo launcher) e configure um Workspace de sua preferĆŖncia. Ex: /home/gbs/dsle20/workspace. Em seguida, clique no Ćcone superior direito Workbench.
Configurando a conexĆ£o entre Eclipse e Target
A conexĆ£o entre o Eclipse e a RPi serĆ” realizada via SSH, por meio do plugin RSE (Remote System Explorer). Se o comando anterior, de instalaĆ§Ć£o do Eclipse, foi executado corretamente, este plugin jĆ” estarĆ” instalado.
Antes de prosseguir nas configuraƧƵes do Eclipse, faƧa a liberaĆ§Ć£o de login sem senha de seu usuĆ”rio/mĆ”quina no servidor SSH da RPi. Para isso, primeiro gere uma chave RSA para seu host (Ubuntu):
A ferramenta irĆ” perguntar sobre local para salvar a chave criada e senha, deixe ambos como padrĆ£o, apenas tecle ENTER
.
Em seguida, copie sua chave recĆ©m criada para a RPi, utilizando o usuĆ”rio que vocĆŖ deseja vincular a key:
Por fim, adicione sua key recĆ©m-criada ao agente de autenticaĆ§Ć£o SSH:
Este passo final vincularƔ a key com o usuƔrio utilizado no passo anterior. Assim, sempre que o comando ssh gbs@10.1.1.100
for chamado, o agente fornece tal key e remove a necessidade de digitar uma senha. FaƧa o teste:
Pronto. Agora retorne ao Eclipse. Abra a perspectiva do RSE em: "Window > Open Perspective > Other...". Selecione Remote System Explorer e clique em OK.
Na janela mais a esquerda, chamada Remote Systems, clique com o botĆ£o direto no espaƧo em branco e selecione: "New > Connection...".
Na janela New Connection selecione o tipo Linux e clique em Next. Preencha com as seguintes informaƧƵes:
Host name: 10.1.1.100 - O endereƧo de IP da RPi;
Connection name: RPi3 - O nome para esta conexĆ£o (pode colocar o nome que achar melhor);
Description: Alguma descriĆ§Ć£o sobre essa conexĆ£o (opcional).
Clique em Next. Na janela superior esquerda, Configuration, marque a opĆ§Ć£o ssh.files e Next.
Novamente, na janela superior esquerda, Configuration, marque a opĆ§Ć£o processes.shell.linux e Next.
Em seguida, na mesma janela, marque ssh.shells, Next e por Ćŗltimo marque ssh.terminals e Finish.
A partir deste momento, serĆ” possĆvel explorar os arquivos da RPi atravĆ©s do Eclipse.
Expanda o menu Sftp Files e perceba que todas as pastas do RootFS estĆ£o listadas ali. Ć possĆvel copiar arquivos, editar, apagar, tudo de forma integrada com o Eclipse. Provavelmente serĆ” pedida a senha do seu usuĆ”rio da RPi, apenas digite-a e o acesso aos arquivos serĆ” liberado. Caso digite errado, clique no com o botĆ£o direito no projeto e limpe as senhas.
Logo abaixo de Sftp Files, no menu Shell Processes, vocĆŖ possui acesso Ć todos os processos (incluindo threads) em execuĆ§Ć£o no target. Ć possĆvel finalizar um processo pelo Eclipse e escolher o tipo de sinal que deseja enviar (botĆ£o direito no processo -> kill -> signal type).
No canto superior direito do Eclipse, existe um Ćcone de atalho para a opĆ§Ć£o "Open Perspective", ele estarĆ” do lado do atalho para Remote System Explorer perspective. Clique nele e selecione a perspectiva C/C++.
Adicione tambĆ©m a View do Remote Systems na perspectiva C/C++. Dessa forma vocĆŖ pode explorar os arquivos do target na mesma perspectiva de programaĆ§Ć£o.
Selecione o menu "Window > Show View > Other...". Em seguida, selecione "Remote Systems > Remote Systems". A View Remote System Details tambĆ©m Ć© interessante. Ela exibe informaƧƵes de permissĆ£o de arquivos e diretĆ³rios.
Na aba recĆ©m-adicionada Remote Systems, Clique no Ćŗltimo Ćcone da lista com o botĆ£o direito, Ssh Terminals, e escolha a opĆ§Ć£o Launch Terminal. Note que um novo terminal SSH serĆ” aberto numa nova aba. A partir de agora Ć© possĆvel tambĆ©m acessar o terminal da RPi3 via SSH, pelo Eclipse.
Cross-Compilando sua Primeira AplicaĆ§Ć£o
Na perspectiva C/C++, clique no menu "File > New > C Project". Em Project type, selecione Hello World ANSI C Project.
Em Toolchains, selecione Cross GCC. DĆŖ um nome para seu projeto em Project name: "MyFirstApp". Clique em Next e, se desejar, adicione informaƧƵes de autor (suas iniciais, por exemplo).
Next novamente, Next e, em Cross compiler prefix: arm-linux- e no campo Cross compiler path: selecione o caminho do toolchain gerado na primeira aula: /home/gbs/dsle20/toolchains/x-tools/armv8-rpi3-linux-gnueabihf/bin. Finalmente, clique em Finish.
Para compilar o projeto, acesse o menu "Project > Build All " ou CTRL+B
. Se tudo foi configurado corretamente, algo como a seguinte mensagem serĆ” exibida na aba Console: "15:46:14 Build Finished (took 183ms)"
Para testar o binƔrio, copie-o da pasta Binaries
, logo abaixo da pasta do seu projeto para sua pasta home
, na RPi, atravƩs da janela Remote Systems. Para fazer isso, basta clicar e segurar a pasta Binaries e arrasta-la para o Home em Remote Systems.
Note que ao tentar executar o arquivo pelo terminal SSH, serĆ” exibida uma mensagem de erro, dizendo que nĆ£o Ć© possĆvel executar o binĆ”rio:
Para corrigir este problema, basta dar permissƵes de execuĆ§Ć£o para o arquivo. Ainda no terminal SSH digite:
Pronto, basta rodar a aplicaĆ§Ć£o:
Configurando o GDB no Eclipse
Acesse o menu "Run > Debug Configurations":
Clique duas vezes em C/C++ Remote Application;
Na aba "Main", no campo "Connection", selecione o nome ("RPi3") da conexĆ£o que vocĆŖ criou anteriormente no Remote System Explorer;
Em "Remote Absolute File Path for C/C++ Application", digite o caminho do executƔvel na RaspberryPi . Por exemplo: "/home/gbs/MyFirstApp";
Na aba "Debugger", digite "arm-linux-gdb";
Clique em "Apply"e depois em "Debug";
Ao abrir a janela perguntando se vocĆŖ deseja abrir a perspectiva de "Debug", apenas clique em Yes;
Configurando o Eclipse para Copiar seu ExecutƔvel no Target Automaticamente
Clique com o botĆ£o direito no seu projeto, na janela da esquerda chamada Project Explorer, e acesse propriedades.
Na janela exibida, navegue em "C/C++ Build > Settings". Clique na aba "Build Steps" e digite o seguinte comando no campo "Command"do bloco "Post-build steps": scp MyFirstApp gbs@10.1.1.100:/home/gbs
O comando acima faz com que o Eclipse copie seu binƔrio para o Target, na pasta "/home/gbs
", a cada novo build. Apague o arquivo via terminal SSH:
e em seguida, compile o projeto novamente e verifique que o novo binĆ”rio estarĆ” disponĆvel na pasta e pronto para execuĆ§Ć£o:
Configurando e Linkando Bibliotecas Externas no Eclipse
TrĆŖs configuraƧƵes devem ser realizadas no intuito de linkar uma biblioteca a um projeto do Eclipse:
Definir o diretĆ³rio de headers da biblioteca: A adiĆ§Ć£o deste diretĆ³rio no projeto possibilita que o indexer do Eclipse reconheƧa as funƧƵes, definiƧƵes de constantes, declaraƧƵes em geral da biblioteca. Uma vez reconhecida a biblioteca, Ć© possĆvel utilizar o recurso autocompletar durante a programaĆ§Ć£o. Para adicionar um diretĆ³rio de headers a um projeto do eclipse: Clique com o botĆ£o direito no projeto desejado e selecione Properperties > C/C++ Build > Settings. Em seguida, no Menu da direita, selecione as opƧƵes: Cross GCC Compiler > Includes e, finalmente, adicione o path onde se encontra os headers da biblioteca a ser incluĆda.
Definir o nome da biblioteca para linkagem durante a compilaĆ§Ć£o: AlĆ©m de definir o diretĆ³rio de headers, Ć© necessĆ”rio especificar ao compilador quais sĆ£o as bibliotecas que devem ser linkadas com o executĆ”vel do seu projeto. Para isso: Clique com o botĆ£o direito no projeto desejado e selecione Properperties > C/C++ Build > Settings. Em seguida, no Menu da direita, selecione as opƧƵes: Cross GCC Linker > Libraries e, finalmente, adicione o nome das bibliotecas que deseja linkar com seu projeto. Note que, em C, apesar de os executĆ”veis de bibliotecas normalmente serem nomeados como
libNOMEDABIBLIOTECA.so
, deve- se adicionar apenas oNOMEDABIBLITOECA
, sem o lib e o .so. Ex: se o nome do executƔvel da biblioteca Ʃlibpigpio.so
, adiciona-se somentepigpio
.Definir o diretĆ³rio onde se encontra o executĆ”vel da biblioteca: AlĆ©m de definir quais bibliotecas deseja-se linkar com o executĆ”vel, Ć© necessĆ”rio indicar no projeto, o diretĆ³rio onde tal executĆ”vel se encontra, caso a biblioteca seja externa ou nĆ£o esteja incluĆda na GLibC. Navegue atĆ© o mesmo ponto descrito no passo anterior: Clique com o botĆ£o direito no projeto desejado e selecione Properperties > C/C++ Build > Settings. Em seguida, no Menu da direita, selecione as opƧƵes: Cross GCC Linker > Libraries. Note que existe uma barra de rolagem lateral e, ao rolĆ”-la para baixo, uma nova opĆ§Ć£o serĆ” exibida: Library Search Path:. Este Ć© o local onde deve ser indicado o diretĆ³rio contendo o executĆ”vel da biblioteca a ser adicionada.
Configurando o Path de Bibliotecas Externas no GDB
Normalmente, para debugar uma aplicaĆ§Ć£o remotamente que foi compilada com alguma biblioteca externa (nĆ£o incluĆda na GLIBC), Ć© necessĆ”rio definir o path de tal biblioteca em um arquivo de configuraĆ§Ć£o do GDB, chamado .gdbinit
. Esse arquivo, na verdade, Ć© utilizado para passar parĆ¢metros ao gdb, que normalmente seriam passados via linha de comando.
Crie um arquivo chamado .gdbinit
e adicione a seguinte linha no arquivo:
Salve o arquivo e adicione-o nas configuraƧƵes de Debug do seu projeto. Acesse o menu "Run > Debug Configurations":
Selecione a configuraĆ§Ć£o jĆ” realizada no passo descrito na seĆ§Ć£o de ConfiguraĆ§Ć£o do GDB no Eclipse.
Na aba "Debugger", no campo "GDB command file", clique no botĆ£o browse e selecione o path do arquivo
.gdbinit
;
Obs: a) Ć possĆvel selecionar um path qualquer para o arquivo ou; b) deixar essa opĆ§Ć£o inalterada e criar o arquivo na raiz do seu workspace atual;
Last updated