Introdução
O Eclipse é uma IDE de código aberto muito completa e querida entre desenvolvedores, além de muito flexível permitindo diversos tipos de personalizações. Neste artigo mostro como usá-la para criar um ambiente de desenvolvimento para o ESP32, de forma que dispense a linha de comando para compilar e gravar o projeto. Faremos tudo graficamente.
É importante salientar que este post não cobre a parte da configuração do ESP IDF, portanto, você já deve ter o ambiente configurado para dar prosseguimento. Você pode ver como configurar o ESP IDF neste artigo do Gabriel Almeida. Vale lembrar também que este artigo se passa em um ambiente Windows em minha máquina e talvez alguns passos não se apliquem para usuários Linux
Download e instalação do Eclipse
Primeiramente você deve fazer o download da ferramenta no site oficial. Na janela que irá abrir você deve escolher a instalação do “Eclipse IDE for C/C++ Developers”, conforme a figura abaixo.
Após escolher o pacote, os próximos passos serão escolher o diretório de instalação e aguardar a conclusão. Caso você tenha dúvida na instalação da ferramenta, você pode conferir o guia de instalação oficial.
Importando e configurando o projeto
Agora é hora de portar um projeto para o Eclipse! Cuidado ao seguir os passos deste tutorial ao pé da letra, já que pode haver algumas pequenas divergências entre o seu ambiente e a minha instalação e pasta de projetos.
Reconhecendo a estrutura da pasta de projeto
Navegue até a pasta msys32 e entre na pasta que você criou para alocar a pasta esp-idf. No meu caso é a pasta ESP32 e é nela que também fica as pastas dos meus projetos.
Agora é hora de criar um novo projeto, vamos importar um exemplo de projeto “hello world” localizado na pasta esp-idf. Entre na pasta esp-idf -> examples -> get-started. Na pasta “get-started” você encontrará uma pasta com o nome “hello_world”, copie-a na pasta “ESP32” (sua pasta de projetos) ao lado da pasta esp-idf.
O resultado deve ficar como na figura abaixo.
Vamos iniciar o eclipse para dar início à importação e configuração do nosso projeto! Abra o eclipse e na barra superior clique em file -> import. Obs: Se na inicialização ele pedir pra selecionar um endereço padrão para projetos, selecione a pasta ESP32.
Na janela de importação selecione C/C++ -> Existing Code as Makefile Project.
No campo Project Name coloque o nome do seu projeto. No nosso caso, como importamos o hello World, vou mantê-lo. Em Existing Code Location precisamos apontar o endereço onde está o nosso projeto, este diretório deve ser o que contém o arquivo Makefile do nosso projeto.
Selecione a Toolchain Cross GCC e clique em Finish.
Bom, nosso projeto já está no eclipse e o resultado deve ser como a figura abaixo. Agora a gente precisa configurá-lo, vamos lá!
O seu projeto fica aberto no campo do Project explorer, clique nele com o botão direito e clique em propriedades.
- Clique em C/C++ Build -> Enviroment e na janela vamos adicionar algumas variáveis e modificar outra.
- Clique em Add e preencha o campo name com “BATCH_BUILD” e valor 1.
- Clique em Add novamente e preencha o campo name com “IDF_PATH“ e o valor deve ser o caminho da pasta esp-idf, no meu caso o valor é “C:\msys32\ESP32\esp-idf“.
- Clique duas vezes na variável “PATH” para editá-la, no campo value, adicione ao final os seguintes valores
;C:\msys32\mingw32\bin;C:\msys32\opt\xtensa-esp32-elf\bin;C:\msys32\usr\bin
. Atenção: não é para apagar o campo value do PATH, é apenas para acrescentá-la ao final.
Clique em C/C++ Build e na aba Builder Setings desmarque a opção “use default build command”, coloque o seguinte valor no campo Build command: python ${IDF_PATH}/tools/windows/eclipse_make.py
Na aba Behavior habilite o campo Enable parallel build para dar mais velocidade ao processo de build.
Vá para “C/C++ General -> Preprocessor Include Paths, Macros…”. Na aba Providers selecione CDT Cross GCC Built-in Compiler Settings e mude o “Command to get compiler specs” para xtensa-esp32-elf-gcc ${FLAGS} -std=c++11 -E -P -v -dD "${INPUTS}".
Agora selecione o “CDT GCC Build Output Parser” e mude o “Compiler command pattern” para xtensa-esp32-elf-(gcc|g\+\+|c\+\+|cc|cpp|clang)
Vá para C/C++ General -> Indexer, habilite o campo “Enable project specific settings” e desabilite o campo “Allow heuristic resolution of includes“.
Tudo certo com as propriedades do nosso projeto, agora vamos clicar em “Apply and Close“. Agora é hora de adicionar os build targets, usaremos eles para build, flash e rebuild.
Com o botão direito na pasta do projeto clique em “Build Targets -> Create…”.
No campo Target name preencha com “all” e pressione OK. Repita novamente o processo para os seguintes nomes: “clean” e “flash”.
O resultado esperado deve ser como na figura abaixo.
Vamos na pasta raiz da instalação do ambiente ESP IDF, a pasta msys32 e execute o aplicativo mingw32. Agora use o comando cd para adentrar no diretório da nossa pasta do projeto:
1 |
$ cd /c/msys32/ESP32/hello_world |
Execute o comando:
1 |
$ make menuconfig |
O resultado deve ser como na figura abaixo. Use o menu de navegação para ir até o serial flasher config.
Preencha o campo default serial port com a porta em que está o seu dispositivo ESP32, no meu caso é a COM5. Salve e saia do menu.
Volte para o eclipse e nos build targets que criamos, clique em all duas vezes. A primeira execução pode demorar um pouco, mas em breve seu projeto estará compilado! Note que os erros que antes apareciam no main.c agora sumiram.
Para gravar o código na placa, clique no flash duas vezes.
Resolvendo possíveis erros na hora de compilar no eclipse:
Talvez você tenha tido o seguinte problema na hora de compilar:
File “C:/msys32/sdk/esp-idf/components/esptool_py/esptool/esptool.py”, line 24, inimport serialImportError: No module named serialmake[1]: *** [/sdk/esp-idf/components/esptool_py/Makefile.projbuild:49: /sdk/esp-idf/myexamples-01092016/02_blink/build/bootloader/bootloader.bin] Error 1make: *** [/sdk/esp-idf/components/bootloader/Makefile.projbuild:31: /sdk/esp-idf/myexamples-01092016/02_blink/build/bootloader/bootloader.bin] Error 2
Isto pode estar relacionado à sua versão do python instalada ou a forma como ele é chamado. Uma solução que resolveu no meu caso foi alterar o nome do interpretador python de python para python2.
Bom, é isto galera! Espero que tenham gostado. Qualquer dúvida estou disponível, seu feedback é muito importante para mim.
Referências
https://github.com/espressif/esptool/issues/171
https://docs.espressif.com/projects/esp-idf/en/latest/get-started/eclipse-setup.html
No meu não consegue resolver os includes. Acho que vou acabar usando o jeito burro, incluindo no campo Path and Symbols. Não entendo porque ele não consegue resolver os links.
Boa tarde pessoal
Estou usando o kit da espressif ESP32-DevKitC-32D
Fiz os procedimentos acima e compilou OK aqui mas quando fui gravar deu mensagem que não comunica com o módulo.
A porta serial está com o numero correto!
A MENSAGEM DE ERRO FOI:
esptool.py v2.6
Serial port COM4
Connecting…….._____….._____….._____….._____….._____….._____….._____
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
“python C:\msys32\esp\esp-idf/tools/windows/eclipse_make.py -j2 flash” terminated with exit code 2. Build might be incomplete.
12:49:15 Build Failed. 1 errors, 0 warnings. (took 26m:9s.362ms)
Quando a linha Connecting aparecer, basta segurar o botão BOOT da sua placa, e ela vai gravar normalmente.
É um passo exigido pelo hardware do ESP-32, para a liberação da memória
Conseguiu resolver seu problema?
Olá Jose,
Basta tentar novamente e quando aparecer “Connecting…….._____….._” fique pressionando várias vezes seu botão de boot da placa, até avançar a tela de conexão.
Abraços!
Quanto tempo levou para compilar seu projeto ? aqui demorou muito!!
Já sabe como configurar o eclipse para Esp32 utilizando o cmake?
Ele demora muito para compilar a primeira vez o projeto, depois vai rapidinho… Nas referencias deixei o link do site oficial de como configurar o ambiente. No link eles falam para alterar o comando de build para um script deles em python caso seu diretório do projeto esteja fora da pasta “C:\msys32\home”. porém isto acaba aumentando muito o tempo de build. No tutorial eu coloquei esse script como build padrão, para evitar problemas na hora dos leitores reproduzirem o artigo. Se você quiser deixar a build padrão, apenas não faça a alteração da build. em C/C++ Build, na aba Builder… Leia mais »
Muito bom. Me ajudou bastante! Parabéns. Abs
Valeu Marcos!
Parabéns Muriel!
Valeu Fábio!