Nesta página será abordada a temática do uso do Eclipse para programação do MCUs STM32 mais concretamente o STM32F407VG. Para isso será utilizado um conjunto de plugins e ferramentas do projeto GNU ARM Eclipse.
As secções serão as seguintes:
- Instalação
- Criação dum projeto
- Compilação
- Programação
- Debug
- Outros aspetos
Instalação
Passos da Instalação:
- Instalar o Java JDK: jdk-8u121-windows-x64.exe
- Instalar o Eclipse IDE for C/C++ Developers: eclipse-cpp-neon-2-win32-x86_64.zip
- Instalar o GCC-ARM: gcc-arm-none-eabi-5_4-2016q3-20160926-win32.exe (no final solicitar a edição do PATH)
- Instalar o GNU ARM Eclipse Windows Build Tools: gnuarmeclipse-build-tools-win64-2.6-201507152002-setup.exe
- Instalar o GNU ARM Eclipse plugin: ilg.gnuarmeclipse.repository-3.2.1-201701141320.zip. Dentro do Eclipse: Help > Install New Software… > Add… > Archive…: ilg.gnuarmeclipse.repository-3.2.1-201701141320.zip
- Instalar o STM32CubeMX: en.stm32cubemx.zip (a aplicação e não o plugin!)
- Instalar o STM32CubeF4: en.stm32cubef4.zip. Dentro do STM32CubeMX: Help > Install New Libraries > From Local…: en.stm32cubef4.zip
Criação dum projeto
Embora seja possível criar um projeto a partir do zero, o mais fácil é partir dum template presente num ficheiro zip. Os passos a seguir para criar um projeto myproj a partir do template são os seguintes:
- Descompactar o zip que contém o template
- No Eclipse: File > Import… > General > Existing Projects into Workspace > Next
- Select Root Directory: <selecionar a pasta do template>
- Copy projects into workspace
- Finish
Para mudar o projeto mtext_ethercat para myproj, fazer o seguinte:
- Rename* do projeto template para myproj
- Rename* do ficheiro template.ioc para myproj.ioc
- Rename* da pasta SW4STM32/template para SW4STM32/myproj
- No ficheiro flash.txt: loadfile usb_test.hex > loadfile myproj.hex
- Project > Properties > C/C++ Build > Settings > Cross ARM C++ Linker > General
- Editar Script Files: “${ProjDirPath}/SW4STM32/myproj/STM32F407VGTx_FLASH.ld”
- É conveniente no final fazer: Project > C/C++ Index > Rebuild
* O rename do projeto/ficheiro/pasta deverá ser feita selecionando-o com a tecla direita do rato e escolher a opção rename!
Compilação
A compilação do projeto faz-se assim:
- Project > Build Project (ou simplesmente carregando no botão com o martelo na toolbar do Eclipse)
- O processo cria entre outros dois ficheiros dentre da pasta Debug:
- .hex – a usar na programação do STM32
- .elf a usar no debug
Programação
A placa Discovery quando ligada ao PC pela primeira vez, surge como uma porta virtual série (STMicroelectronics STLink Virtual COM Port) e um disco externo (DIS_F407VG) contendo 2 ficheiros, um deles um link para aqui.
Se a porta virtual não surgir, ir ao “Gestor de Dispositivos” do Windows, o STM32 STLink e “Atualizar o controlador de Software” com o driver do STM32 STLink: en.stsw-link009.zip
Só depois passar a Discovery do ST-Link para o J-Link com a ST-Link Reflash Utility: STLinkReflash_161221.zip
Uma vez descomprimido, correr o STLinkReflash.exe, e depois de aceitar (A) as condições por duas vezes, escolher a opção: [1] Upgrade to J-Link. O LED verde da Discovery começa a piscar.
I hereby accept the amendment to the Evaluation Board License Agreement provided by STMICROELECTRONICS ("ST")(A)ccept / (D)ecline Selection>a [0] Quit [1] Upgrade to J-Link [2] Update J-Link firmware [3] Restore ST-Link Selection>1 Preparing for FW update (can take up to 10 seconds)...O.K. Identifying ST-LINK variant...O.K.: ST-LINK/V2-1 Performing firmware update...O.K.
Desligar e voltar a ligar a Discovery fazendo o LED verde ligar de forma contínua, surgindo agora o dispositivo: JLink CDC UART Port
Segue-se a instalação do J-Link Software and Documentation Pack: JLink_Windows_V612i.exe
No Eclipse criar uma ferramenta: Run > External Tools > External Tools Configurations… > Program > New button, com as seguintes configurações:
- Name: J-Link flash
- Location: C:\Program Files (x86)\SEGGER\JLink_V612i\JLink.exe
- Working directory: ${project_loc}\Debug
- Arguments: -if SWD -device STM32F407VG -speed 2000 ${project_loc}\flash.txt
Para flashar basta carregar no botão “Run Tool” (botão play com rectângulo vermelho).
Debug
As possibilidades de debug no Eclipse com o J-Link são descritas aqui, ou seja:
Instalar os Packs (uma vez após a instalação do Eclipse):
- Abrir a perspetiva “Packs”
- Clicar em “Update the packages definition from all repositories” (botão com 2 setas amarelas)
- Devices > STMicroelectronics > STM32F4 Series
- Packs > Keil > STM32F4xx_DFP > 2.9.0 > Install
Associar um Device ao projeto (uma vez por projeto):
- Abrir a perspetiva “C/C++” do projeto
- Project > Properties > C/C++ Build > Settings > Devices
- Boards > STMicroelectronics > STM32F4-Discovery > STM32F407VG > OK
Criar uma configuração de Debug (uma vez por projeto):
- Run > Debug Configurations…
- GDB SEGGER J-Link Debugging > New launch configuration
- Connect to running target
- Startup > CPU freq.: 168000000, SWO freq.: 3000000
- Common > Save as: Shared file
- Apply
- Close
Iniciar o Debug:
- Run > Debug Configurations… > myproj Debug > Debug (ou via toolbar)
Outros aspetos
USB VCP
Para usar o porto USB OTG da placa Discovery como porto série virtual (VCP) é preciso instalar o driver, algo que é feito pela aplicação VCP_V1.4.0_Setup.exe, presente no seguinte zip: en.stsw-stm32102.zip
Depois é só correr a aplicação dpinst_amd64.exe (64bits) ou a dpinst_x86.exe (32bits).
C++
Para usar código escrito em linguagem C++, é preciso usar a extensão cpp e as respetivas header files deverão incluir as linhas a amarelo:
-
#ifndef XPTO_H_ #define XPTO_H_ #ifdef __cplusplus extern "C" { #endif // includes // code #ifdef __cplusplus } #endif #endif /* XPTO_H_ */