Na primeira parte deste artigo foi detalhado o procedimento para a criação de um projeto em C/C++ no Eclipse para uso em sistemas embarcados bare-metal ou baseados em RTOS. Neste post vamos dar continuidade a esse processo e detalhar como configurar esse ambiente para depuração usando GDB e OpenOCD. É obrigatório que o procedimento listado no post anterior tenha sido seguido.

Neste post serão abordados os seguintes tópicos:

Plug-ins necessários

O conjunto de plug-ins GNU ARM Eclipse foi instalado no post anterior, cuja finalidade é dar suporte ao cross-toolchain e também ao depurador via hardware e OpenOCD.

Cliente GDB e servidor GDB (OpenOCD)

Assim como os plug-ins, o cliente GDB já foi instalado no post anterior, quando foi instalado o cross-toolchain. O seu binário, arm-none-eabi-gdb, faz parte do pacote do cross-toolchain da Linaro.

Os passos para instalação do servidor GDB, o OpenOCD, foram listados no primeiro post da série GNU ARM Cross-toolchain. Caso não tenha seguido esses passos, execute-os antes de dar prosseguimento a este artigo. Com isso os pré-requisitos já foram preenchidos e podemos seguir com a criação da configuração de depuração.

Criação da configuração de depuração

Antes de utilizarmos o OpenOCD, é preciso indicar no ambiente de desenvolvimento o local de instalação do OpenOCD, já que essa é uma ferramenta externa ao Eclipse. Para isso, siga os seguintes passos:

1) Na barra de menus do Eclipse, clique no comando Window -> Preferences. Vai aparecer a seguinte tela:

2) Selecione o sub-menu Run/Debug -> String Substitution.

3) Crie uma nova variável clicando no botão New. Na nova janela que é exibida, insira o conteúdo abaixo e clique em OK.

Name: openocd_path

Value: /home/<usuario>/work/tools/openocd/bin

Description: OpenOCD

Obs: Substitua o texto <usuario> pelo usuário atualmente logado no PC.

Agora podemos criar uma nova configuração de depuração, seguindo os seguintes passos:

1) Na barra de menus do Eclipse, clique no comando Run -> Debug Configurations…. Vai aparecer a seguinte tela:

2) Selecione o item GDB OpenOCD Debugging na lista que aparece à esquerda e clique com o botão direito. No menu que é exibido, selecione New. Vai ser criada automaticamente a configuração freertos_hello_world Debug, como mostrado abaixo:

3) Pequenas modificações devem ser realizadas com relação à configuração padrão. O conteúdo de duas abas deve ser alterado:

Debugger

Adicionar as opções abaixo no campo OpenOCD Setup -> Other options.

-s /home/<usuario>/work/tools/openocd/share/openocd/scripts
-f board/stm32f4discovery.cfg

Obs: Substitua o texto <usuario> pelo usuário atualmente logado no PC.

 

Common

Selecione o check-box Save as -> Shared file e adicione o nome do projeto (por padrão esse campo já vem preenchido corretamente).

/freertos_hello_world

4) O conteúdo da aba Startup pode deixar inalterado. Confira os valores que são configurados por padrão:

5) Clique no botão Apply para aplicar as mudanças realizadas. Em seguida, conecte a placa STM32F4Discovery na porta USB do seu PC e clique no botão Debug.

O código da aplicação começa a ser depurado com um breakpoint no começo da função main(), como mostra a figura abaixo:

6) A partir de agora podemos depurar o código da aplicação. Seguem alguns comandos:

Caso desejem, podem ser utilizados os atalhos disponíveis na barra de ferramentas da IDE:

Para iniciar uma nova seção de depuração, na barra de ferramentas existe um atalho chamado Debug . Clique na seta e escolha o nome da configuração de depuração desejada. No nosso caso, freertos_hello_world Debug.

Considerações finais

Nesse projeto foi utilizado um debug adapter já presente na placa de desenvolvimento, o ST-LINK/V2. Num projeto real, esse hardware pode ser um equipamento externo à placa do produto, e envolver comunicação JTAG, por exemplo. Nesse caso tem-se que alterar a compilação do software OpenOCD para oferecer o suporte a essa comunicação, ou gerar uma versão desse aplicativo que já forneça o suporte a diversos meios de comunicação.

No final de contas, vale a pena utilizar uma plataforma open-source para desenvolvimento de projetos na sua empresa? Agora chega aquela parte onde temos que avaliar as vantagens e desvantagens desse tipo de ambiente.

Vantagens

Desvantagens

Muito bem pessoal, gostaria muito da colaboração de vocês para trazerem sugestões e críticas para tentarmos promover o uso de um ambiente open-source, caso seja de interesse de vocês, é claro! Afinal de contas, é para uso da comunidade!

Artigos da série GNU ARM Cross-toolchain:

GNU ARM Cross-toolchain – Compilação e OpenOCD

GNU ARM Cross-toolchain – Configurando stack e heap

GNU ARM Cross-toolchain – OpenOCD + GDB

GNU ARM Cross-toolchain – FreeRTOS + GCC + STM32F4Discovery – Parte 1

GNU ARM Cross-toolchain – FreeRTOS + GCC + STM32F4Discovery – Parte 2

GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC – Parte 1

GNU ARM Cross-toolchain – Eclipse + FreeRTOS + GCC – Parte 2