Настройка проекта с аппаратным моделированием в цикле

Ari Mahpour
|  Создано: 9 Мая, 2021  |  Обновлено: 1 Июля, 2024
Настройка проекта с аппаратным моделированием в цикле

В статье "Аппаратное тестирование в цикле: Введение" мы рассмотрели, что такое аппаратное тестирование в цикле (HIL), как выглядит настройка и почему стоит интегрировать его в проект. В этой статье мы рассмотрим пример проекта платы, спроектированной в Altium Designer, и прогоним DevOps-процесс с использованием аппаратного тестирования в цикле для проверки прошивки.

Проектирование

Прежде чем настроить аппаратное тестирование в цикле, нам потребуется плата для работы. Хороший способ начать проектирование до создания схем и компоновки — использовать оценочные платы. В этой статье мы будем использовать SAM4E XPlained Pro от компании Microchip (ранее Atmel). Для начала вам потребуется эта плата и установленная Atmel Studio. Как только оборудование и программное обеспечение будут готовы, вы можете клонировать пример проекта с Gitlab. В этом проекте содержится минимальный объем кода — только для демонстрации возможностей аппаратного тестирования в цикле. Проект также использует библиотеки из Atmel Software Framework (сейчас переименованного в "Advanced" Software Framework). Эти библиотеки предоставляют драйверы для USB-сериал связи, функции задержки и другие библиотеки, которые абстрагируют многие низкоуровневые реализации, обычно написанные для других микропроцессоров. После клонирования репозитория, компиляции и загрузки прошивки можно приступать к настройке и выполнению аппаратного тестирования в цикле.

Конфигурация

В качестве платформы для контроля версий и для непрерывной интеграции/развертывания (CI/CD) был выбран Gitlab. Как показано в статье Как создать CI/CD pipeline для проектирования печатных плат, управление версиями и CI/CD интегрированы в одно средство в Gitlab. Проект включает в себя несколько стадий CI/CD (также называемых "pipelines" в Gitlab):

Рисунок 1: Проект Pipeline
Рисунок 1: Проект Pipeline

На первом этапе создаются бинарные файлы, необходимые для загрузки программ на микропроцессор. После этого подключается устройство (например, оценочная плата). Устройство программируется, и теперь готово к тестированию.

Тестирование

Аппаратное тестирование в цикле может быть простым или сложным, в зависимости от вашей настройки. Хотя для сложных систем HIL требуются внешние устройства для имитации реальных условий, в этом примере используется базовый механизм имитации внешних воздействий — последовательная связь. Интерфейс USB Device CDC от Atmel создает виртуальный COM-порт для связи по USB, как через UART по RS-232. В рамках этого теста мы:

  1. Устанавливаем регистр командой
  2. Читаем регистр (для проверки команды)
  3. Очищаем регистр
  4. Снова читаем регистр

Хотя прошивка микропроцессора написана на языке C, тестовое программное обеспечение (которое отправляет команды и считывает данные) написано на Python с использованием фреймворка Pytest. Программирование на Python позволяет использовать высокоуровневые сценарии и библиотеки, которые в противном случае потребовали бы больше времени на разработку в языках вроде C++. Кроме того, эти тесты можно запускать на любой машине, независимо от операционной системы или архитектуры процессора. Те же тесты, которые работают на ПК с Windows (Windows, x86), могут запускаться на Raspberry Pi (Linux, ARM). Абстрагирование разработки, компиляции и тестирования от вашей машины — ключевой принцип DevOps-подхода. Мы хотим иметь возможность быстро создавать новые среды. Более того, мы хотим избежать долгих часов настройки среды разработки с помощью руководств "Как сделать". Скриптирование этого процесса (включая тестирование), как сделано в файле конфигурации pipeline, обеспечивает воспроизводимую среду без лишних хлопот. Чтобы запустить эти тесты вручную из командной строки, обратитесь к файлу pipeline.

После завершения теста результаты записываются в файл XML формата JUnit, который затем анализируется Gitlab и отображается в веб-интерфейсе.

Рисунок 2: Результаты юнит-тестов
Рисунок 2: Результаты юнит-тестов

Мы продемонстрировали полное решение для аппаратного тестирования в цикле с использованием Gitlab. Ознакомьтесь с проектом, чтобы узнать больше о его настройке и формате.

Заключение

В этой статье мы рассмотрели, как настроить проект для аппаратного тестирования в цикле. Включили пример проекта, размещенного на Gitlab, который пользователи могут клонировать и настроить с использованием конфигурационного файла pipeline (например, файла .gitlab-ci.yml). Мы также рассмотрели запуск тестов на Python с использованием фреймворка Pytest и обсудили, как результаты отображаются в веб-интерфейсе. Теперь пользователь может создать собственную настройку аппаратного тестирования в цикле, используя это руководство и пример проекта на Gitlab.

Хотите узнать больше о том, как Altium может помочь вам с вашим следующим проектом печатной платы? Свяжитесь с экспертом Altium и узнайте больше о том, как легко и уверенно принимать решения по проектированию.

Об авторе

Об авторе

Ари — инженер с большим опытом работы в сфере проектирования, производства, тестирования и интеграции электрических, механических и программных систем. Он стремится к созданию дружного сообщества специалистов по разработке, верификации и тестированию решений.

Связанные ресурсы

Связанная техническая документация

Вернуться на главную
Thank you, you are now subscribed to updates.