STM32 com Eclipse

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 JDKjdk-8u121-windows-x64.exe
  • Instalar o Eclipse IDE for C/C++ Developerseclipse-cpp-neon-2-win32-x86_64.zip
  • Instalar o GCC-ARMgcc-arm-none-eabi-5_4-2016q3-20160926-win32.exe (no final solicitar a edição do PATH)
  • Instalar o GNU ARM Eclipse Windows Build Toolsgnuarmeclipse-build-tools-win64-2.6-201507152002-setup.exe
  • Instalar o GNU ARM Eclipse pluginilg.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 STLinken.stsw-link009.zip

Só depois passar a Discovery do ST-Link para o J-Link com a ST-Link Reflash UtilitySTLinkReflash_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 zipen.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_ */