O guia profissional de ferramentas e técnicas de depuração para dispositivos IoT

By Jacob Beningo

Contributed By DigiKey's North American Editors

O desenvolvimento de um sistema embarcado, em que o software e o hardware têm de funcionar bem em conjunto, tornou-se extremamente complexo e desafiante, mesmo para os aparentemente mais simples dispositivos da Internet das coisas (IoT). Tanto que, quando algo dá errado — como inevitavelmente dará — os períodos de depuração geralmente não são de algumas horas, mas podem levar semanas ou meses. Esses atrasos adicionam custos de desenvolvimento, impedem que um produto entre no mercado a tempo, atrasam os cronogramas de fabricação e destroem as cadeias de fornecimento e os planos de negócio.

A melhor maneira de diminuir o tempo gasto em depuração e manter um projeto nos trilhos é usar uma combinação de ferramentas de depuração de hardware e software gratuito disponível para obter informações sobre como um sistema está rodando e onde os problemas estão ocorrendo. Assim, tanto para os profissionais como para os entusiastas, ter as ferramentas certas para o trabalho ajuda dramaticamente a fazê-lo de forma rápida e correta.

Este artigo discutirá software e ferramentas de desenvolvimento que podem ser usadas para depurar e analisar o desempenho de um dispositivo IoT. Usaremos uma placa de desenvolvimento da STMicroelectronics como um dispositivo IoT de exemplo e as ferramentas e software da SEGGER Microcontroller Systems para entender e depurar o sistema. Iremos discutir também várias dicas e truques sobre como minimizar o tempo de depuração e apresentar um projeto IoT dentro do cronograma.

O dispositivo IoT típico a depurar

Os dispositivos IoT tornaram-se comuns em quase todos os setores, desde a automação residencial até o controle e monitoramento industrial. Apesar da variedade de aplicações, existem vários componentes típicos que um dispositivo IoT vai ter. Elas incluem:

  • Um microprocessador
  • Um rádio para conectividade
  • Sensores

Um desenvolvedor não vai querer personalizar sua própria placa para explorar técnicas de depuração ou testar partes de seu código de aplicativo. É demorado demais. Em vez disso, é mais sensato trabalhar com uma placa de desenvolvimento de baixo custo como o kit Discovery B-L4S5I-IOT01A da STMicroelectronics para o Nó IoT. Ele tem quase tudo que se encontra em um dispositivo IoT típico (figura 1).

Diagrama do kit Discovery B-L4S5I-IOT01A da STMicroelectronicsFigura 1: o kit Discovery B-L4S5I-IOT01A da STMicroelectronics para Nó IoT inclui todos os componentes tipicamente necessários em um dispositivo IoT. (Fonte da imagem: STMicroelectronics)

A placa inclui o STM32L4S5VIT6, um microcontrolador Arm® Cortex®-M4 rodando a 120 megahertz (MHz). Ele suporta até 2 megabytes (Mbytes) de memória flash e 640 kilobytes (Kbytes) de RAM. Acima de tudo, para efeitos deste exercício, a placa inclui Wi-Fi e uma infinidade de sensores que podem ser utilizados para criar rapidamente um dispositivo de teste IoT simulado.

Ferramentas de hardware de depuração profissional

Quase todas as placas de desenvolvimento vêm com uma interface JTAG/SWD integrada para que os desenvolvedores não tenham que sair procurando pelo seu próprio gravador de memória. Em vez disso, podem trabalhar com a placa de desenvolvimento do jeito que vem de fábrica. Embora isso seja ótimo para fins de marketing, não é o ideal para engenharia de verdade: os depuradores integrados geralmente são versões drasticamente reduzidas que têm limitações, como o número de pontos de interrupção disponíveis e a taxa de transmissão da interface. Para os novatos, essas limitações podem não parecer um grande problema, mas ter pontos de interrupção ilimitados evita ter que ativar e desativar esses pontos todas as vezes, e altas taxas de transmissão são necessárias para o rastreamento de aplicativos (saiba mais sobre o rastreamento na seção de ferramentas de software).

Há várias ferramentas diferentes disponíveis que podem proporcionar uma experiência de depuração profissional, mas as ferramentas em si são apenas a metade da solução. As ferramentas precisam ser suportadas por um bom software. Um conjunto de ferramentas que se destaca tanto do ponto de vista do hardware quanto do software é a série J-Link da SEGGER. Essa série tem uma versão de depurador para praticamente qualquer tipo de desenvolvedor, desde alunos e entusiastas até profissionais experientes.

Há dois modelos que a experiência demonstrou serem os mais úteis para o desenvolvedor comum: o J-Link Base e o J-Link Ultra+ (figura 2). Em termos de fator de forma, as duas unidades são idênticas, mas o J-Link Ultra+ fornece um desenvolvedor com velocidades de download mais altas para RAM (3 Mbytes/s versus 1.0 Mbyte/s) e uma velocidade de interface SWD mais alta (100 MHz em vez de 30 MHz). As velocidades mais altas fazem toda a diferença quando um desenvolvedor deseja rastrear seu aplicativo para obter informações sobre desempenho, comportamento de RTOS e depurar seu sistema.

Imagem do J-Link Ultra+ da SEGGERFigura 2: o J-Link Ultra+ da SEGGER oferece aos desenvolvedores uma experiência de depuração aprimorada usando uma interface de destino de 50 MHz. (Fonte da imagem: SEGGER Microcontroller Systems)

O bom do J-Link e da placa de desenvolvimento B-L4S5I-IOT01A é que os dois podem ser conectados através de um cabo TC2050-IC-NL da Tag-Connect e do grampo retentor TC2050-CLIP-3PACK. Eles permitem que um depurador seja conectado à placa de desenvolvimento através do "pad de pinos" (figura 3). Pode ser necessário adaptar o conector de 20 pinos do J-Link ao conector de 10 pinos no cabo TC-2050. Uma opção que pode ser usada para isso é o 8.06.04 J-Link 10-Pin Needle Adapter.

Imagem da placa de desenvolvimento B-L4S5I-IOT01A da STMicroelectronicsFigura 3: na placa de desenvolvimento B-L4S5I-IOT01A, o cabo de conexão Tag-Connect pode ser conectado através de uma pegada na pci tipo cama de pinos (à direita). (Fonte da imagem: STMicroelectronics)

Uma vez que o desenvolvedor tenha resolvido o lado do hardware, poderá usar as ferramentas de software para analisar e depurar seus aplicativos.

Ferramentas de software de depuração profissional

Existem algumas ferramentas de software que funcionam bem com as ferramentas J-Link da SEGGER que, surpreendentemente, não são fornecidas pela SEGGER. A seguir, veremos várias dessas ferramentas gratuitas e como os desenvolvedores podem usar cada uma delas para depurar seu software.

A primeira é o J-Scope. O J-Scope é uma ferramenta semelhante a um osciloscópio que mostra valores variáveis ao longo do tempo. Os desenvolvedores podem monitorar uma única variável ou várias dezenas de variáveis. Observe, no entanto, que à medida que mais variáveis são monitoradas, menos amostras podem ser colhidas antes que o buffer de amostras estoure e haja perda de dados.

As variáveis são selecionadas fornecendo ao J-scope o arquivo elf que é produzido pelo compilador. Isso fornece os locais de memória a serem lidos, e o desenvolvedor pode então definir suas taxas de amostragem e monitorar como as variáveis mudam ao longo do tempo. Um exemplo simples de uma curva de três variáveis pode ser visto na figura 4.

Imagem da SEGGER. J-Scope pode ser usado para monitorar variáveisFigura 4: o J-Scope pode ser usado para monitorar variáveis pelo J-Link enquanto um aplicativo é executado em tempo real. (Fonte da imagem: SEGGER Microcontroller Systems)

A próxima é o Ozone. O Ozone é uma interface depuradora e um analisador de desempenho. Os desenvolvedores podem carregar seu arquivo elf na ferramenta e realizar a depuração no nível-fonte. Eles podem definir pontos de interrupção e atualizar seu código. Uma característica especialmente útil para os desenvolvedores é que eles também podem realizar o rastreamento de instruções (se seu hardware suportar) e identificar quais declarações de código assembly e C foram executadas. Isso é particularmente útil para verificar a cobertura de código dos testes HiL (hardware-in-loop).

O Ozone também pode ajudar os desenvolvedores a analisar seu desempenho do sistema (figura 5) e visualizar variáveis ao longo do tempo. Ele fornece recursos como o J-Scope, mas de forma mais integrada. Pode até ser utilizado para monitorar o consumo de energia e sincronizar todos esses eventos num único local.

Imagem da SEGGER. O Ozone pode ser utilizado para traçar variáveis pelo J-LinkFigura 5: o Ozone pode ser utilizado para traçar variáveis pelo J-Link enquanto um aplicativo é executado em tempo real, além da cobertura de código e depuração com reconhecimento de RTOS. (Fonte da imagem: SEGGER Microcontroller Systems)

Uma terceira ferramenta é o SystemView. O SystemView permite que os desenvolvedores analisem seu comportamento do tempo de execução do sistema RTOS. A troca de tarefas é registrada em um buffer de rastreamento e, em seguida, reportada ao SystemView pelo depurador (figura 5). Em seguida, o SystemView exibe essas informações de uma forma que permite que um desenvolvedor veja suas trocas de contexto e meça o desempenho do seu sistema. Essa é também uma ótima maneira de visualizar um sistema e encontrar erros e outros problemas.

Diagrama da SEGGER. O SystemView fornece um link para um RTOSFigura 6: o SystemView fornece um link para um RTOS que permite aos desenvolvedores medir o desempenho das tarefas e visualizar o que o RTOS está fazendo e quando o está fazendo. (Fonte da imagem: SEGGER Microcontroller Systems)

Dicas e truques para depurar um sistema embarcado

A depuração de um dispositivo IoT requer que os desenvolvedores tenham as ferramentas certas tanto do ponto de vista do hardware como do software. Ambos precisam estar bem implementados, se os desenvolvedores desejam minimizar o tempo que gastam na depuração. Para depurar com sucesso, existem várias “dicas e truques” que os desenvolvedores devem ter em mente, como:

  • Use um depurador profissional que maximize a taxa de transmissão da interface. A quantidade de dados úteis que pode ser obtida de um sistema dependerá da rapidez com que esses dados podem ser recebidos. Velocidades menores resultam em uma sessão de depuração mais longa.
  • Configure o software de depuração no início do ciclo de desenvolvimento. Os desenvolvedores não devem esperar até que tenham um problema para configurar suas ferramentas de depuração.
  • Use ferramentas de traçar curvas desde o início do desenvolvimento. Isso permitirá que os desenvolvedores monitorem o desempenho do seu sistema e entendam imediatamente como as alterações de software o afetam.
  • Aproveite o rastreamento de instruções ou a amostragem do contador de programas para entender a cobertura do código do sistema durante o teste. Erros existirão em ramificações condicionais e código não testados.
  • Aproveite os protocolos de transferência rápida para obter dados fora do chip, como as bibliotecas de transferência em tempo real (RTT).

Os desenvolvedores que seguem essas "dicas e truques" descobrirão que podem poupar um pouco de tempo e sofrimento ao tentar desenvolver um dispositivo IoT.

Conclusão

O software do dispositivo IoT tornou-se complexo, mas isso não significa que os desenvolvedores profissionais ou entusiastas tenham de ficar depurando seus sistemas todas as vezes. O uso de ferramentas e software de desenvolvimento profissional pode fornecer aos desenvolvedores os insights que precisam, não apenas para depurar, mas também para analisar e melhorar o desempenho de seus sistemas. Ao investir nessas ferramentas, os usuários podem diminuir drasticamente o tempo gasto na depuração e fazer com que seus projetos funcionem e sejam comercializados em um período razoável.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

About this publisher

DigiKey's North American Editors