Configurando um Projeto de Hardware em Loop

Ari Mahpour
|  Criada: Maio 9, 2021  |  Atualizada: Julho 1, 2024
Configurando um Projeto de Hardware em Loop

Em Testes de Hardware no Loop: Uma Introdução, revisamos o que é o teste de hardware no loop (HIL), como seria uma configuração e por que gostaríamos de integrar isso no design de nosso projeto. Este artigo abordará um exemplo de projeto de uma placa projetada no Altium Designer e passará por um fluxo DevOps usando testes de hardware no loop contra seu firmware.

Projeto

Antes de configurar qualquer hardware no loop, precisamos de uma placa para trabalhar. Uma boa maneira de começar com um design antes de capturar o esquema e o layout é prototipar com placas de avaliação. A placa de avaliação que usaremos neste artigo será a SAM4E XPlained Pro da Microchip (anteriormente Atmel). Para começar, você precisará desta placa de avaliação e também do Atmel Studio instalado. Uma vez que seu hardware e software estejam funcionando, você pode clonar o projeto de exemplo do Gitlab. Este projeto de exemplo contém uma quantidade mínima de código - apenas o suficiente para demonstrar as capacidades de hardware no teste de loop. Este projeto também utiliza algumas bibliotecas do Atmel Software Framework (agora renomeado como "Advanced" Software Framework). O ASF fornece drivers que habilitam a comunicação serial USB, rotinas de atraso e outras bibliotecas que abstraem muitas implementações de hardware de baixo nível normalmente escritas para outros microprocessadores. Depois de puxar o repositório, compilar e carregar o firmware, você estará pronto para configurar e executar testes de hardware no loop.

Configuração

Para controle de versão e integração contínua/implantação contínua (CI/CD), o Gitlab foi escolhido como host. Como demonstrado em Como Criar um Pipeline CI/CD para Seu Design de PCB, controle de versão e CI/CD estão integrados como uma única ferramenta no Gitlab. Este projeto consiste em múltiplos estágios CI/CD (também conhecidos como "Pipelines" no Gitlab):

Figura 1: Pipeline do Projeto
Figura 1: Pipeline do Projeto

A primeira etapa cria os binários necessários para carregar os arquivos de programação no microprocessador. Após isso, o dispositivo downstream (ou seja, a placa de avaliação) é ligado. O dispositivo é então programado e a unidade está pronta para ser testada.

Teste

O teste de hardware no loop pode ser tão simples ou tão complexo quanto você projetar. Embora muitos sistemas HIL complexos exijam dispositivos externos para emular ambientes do mundo real, este exemplo usa um mecanismo básico para emular um estímulo externo: comunicação serial. A interface USB Device CDC da Atmel cria uma porta COM virtual para habilitar a comunicação via USB, assim como você faria com UART via RS-232. Nesta série de testes, nós:

  1. Definir um registrador enviando um comando
  2. Ler o registrador (para validar nosso comando)
  3. Limpar o registrador
  4. Ler o registrador mais uma vez

Enquanto o firmware do microprocessador é escrito em C, o software de teste (que envia os comandos e lê a telemetria) é escrito em Python usando o framework Pytest. Escrever o software em Python nos permite aproveitar scripts de alto nível e bibliotecas que normalmente exigiriam muito mais tempo e esforço para serem desenvolvidos em uma linguagem compilada como C++. Além disso, podemos executar esses testes em qualquer tipo de máquina, independente do sistema operacional ou até da arquitetura do chip. Os mesmos testes que rodam em um PC com Windows (Windows, x86) também podem rodar em um Raspberry Pi (Linux, ARM). Abstrair o desenvolvimento, a compilação e os testes da sua máquina é um princípio-chave no fluxo de trabalho DevOps. Queremos ser capazes de reproduzir um novo ambiente rapidamente. Além disso, queremos evitar as longas horas de configuração de um ambiente de desenvolvimento, lendo páginas e páginas de guias de “Como Fazer” ou “Começando”. Escrever scripts para este processo (incluindo os testes), como foi feito no arquivo de definição do pipeline, garante um ambiente reproduzível sem complicações. Para executar os mesmos testes manualmente a partir da linha de comando, consulte o arquivo do pipeline.

Após a conclusão do teste, os resultados são escritos em um arquivo XML do JUnit, que é então analisado pelo Gitlab e exibido na interface web.

Figura 2: Resultado do Teste de Unidade
Figura 2: Resultado do Teste de Unidade

Agora, demonstramos uma solução completa de hardware no loop com o Gitlab. Sinta-se à vontade para explorar o projeto e se familiarizar mais com a configuração e o formato.

Conclusão

Neste artigo, revisamos como configurar seu projeto para testes de hardware no loop. Isso incluiu um projeto de exemplo hospedado no Gitlab que os usuários podem clonar e configurar usando o arquivo de configuração do pipeline (ou seja, o arquivo .gitlab-ci.yml). Também abordamos a execução dos testes em Python usando o framework Pytest e discutimos como eles são exibidos na interface web. Agora, o usuário tem a capacidade de criar seu próprio setup de hardware no loop usando este guia e o projeto de exemplo hospedado no Gitlab.

Gostaria de saber mais sobre como a Altium pode ajudá-lo no seu próximo design de PCB? Fale com um especialista da Altium e saiba mais sobre como tomar decisões de design com facilidade e confiança.

Sobre o autor

Sobre o autor

Ari is an engineer with broad experience in designing, manufacturing, testing, and integrating electrical, mechanical, and software systems. He is passionate about bringing design, verification, and test engineers together to work as a cohesive unit.

Recursos relacionados

Documentação técnica relacionada

Retornar a página inicial
Thank you, you are now subscribed to updates.