В статье "Аппаратное тестирование в цикле: Введение" мы рассмотрели, что такое аппаратное тестирование в цикле (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):
На первом этапе создаются бинарные файлы, необходимые для загрузки программ на микропроцессор. После этого подключается устройство (например, оценочная плата). Устройство программируется, и теперь готово к тестированию.
Аппаратное тестирование в цикле может быть простым или сложным, в зависимости от вашей настройки. Хотя для сложных систем HIL требуются внешние устройства для имитации реальных условий, в этом примере используется базовый механизм имитации внешних воздействий — последовательная связь. Интерфейс USB Device CDC от Atmel создает виртуальный COM-порт для связи по USB, как через UART по RS-232. В рамках этого теста мы:
Хотя прошивка микропроцессора написана на языке C, тестовое программное обеспечение (которое отправляет команды и считывает данные) написано на Python с использованием фреймворка Pytest. Программирование на Python позволяет использовать высокоуровневые сценарии и библиотеки, которые в противном случае потребовали бы больше времени на разработку в языках вроде C++. Кроме того, эти тесты можно запускать на любой машине, независимо от операционной системы или архитектуры процессора. Те же тесты, которые работают на ПК с Windows (Windows, x86), могут запускаться на Raspberry Pi (Linux, ARM). Абстрагирование разработки, компиляции и тестирования от вашей машины — ключевой принцип DevOps-подхода. Мы хотим иметь возможность быстро создавать новые среды. Более того, мы хотим избежать долгих часов настройки среды разработки с помощью руководств "Как сделать". Скриптирование этого процесса (включая тестирование), как сделано в файле конфигурации pipeline, обеспечивает воспроизводимую среду без лишних хлопот. Чтобы запустить эти тесты вручную из командной строки, обратитесь к файлу pipeline.
После завершения теста результаты записываются в файл XML формата JUnit, который затем анализируется Gitlab и отображается в веб-интерфейсе.
Мы продемонстрировали полное решение для аппаратного тестирования в цикле с использованием Gitlab. Ознакомьтесь с проектом, чтобы узнать больше о его настройке и формате.
В этой статье мы рассмотрели, как настроить проект для аппаратного тестирования в цикле. Включили пример проекта, размещенного на Gitlab, который пользователи могут клонировать и настроить с использованием конфигурационного файла pipeline (например, файла .gitlab-ci.yml). Мы также рассмотрели запуск тестов на Python с использованием фреймворка Pytest и обсудили, как результаты отображаются в веб-интерфейсе. Теперь пользователь может создать собственную настройку аппаратного тестирования в цикле, используя это руководство и пример проекта на Gitlab.
Хотите узнать больше о том, как Altium может помочь вам с вашим следующим проектом печатной платы? Свяжитесь с экспертом Altium и узнайте больше о том, как легко и уверенно принимать решения по проектированию.