В статье рассмотрена проблема переноса и запуска программных тестовых сценариев, разработанных на этапах моделирования СБИС- и ПЛИС-прототипирования на реальную микросхему. Рассматриваются особенности последующего использования этих тестов в ходе испытаний готовых микросхем, дальнейшей разработки программного обеспечения, а также дальнейшей поддержки в виде набора для разработчика (SDK).
В связи с ростом сложности современных СБИС класса «Система на кристалле» встаёт вопрос сокращения временных затрат на всех этапах проектирования. Одним из таких этапов является тестирование изготовленной микросхемы. После производства образцы микросхем должны пройти ряд проверок, прежде чем могут быть отгружены потребителям. Тестовая последовательность может включать в себя проверки, использующие встроенную логику тестирования (DFT) в тестовом режиме и тесты, проводимые в функциональном режиме, программные или смешанные тесты, использующие специализированную аппаратную логику, но запускаемые программно, например BISR-тесты внутренней памяти [1, 2].
Основная масса программных тестов – это тесты, предназначенные для работы без операционной системы, разработанные и запускавшиеся на этапе моделирования СБИС для её верификации. Часть этих проверок, имитирующих работу микросхемы в реальных сценариях применения, может быть использована далее для проверки работоспособности микросхемы в различных условиях эксплуатации и в качестве примеров, демонстрирующих работу с различными устройствами СБИС для разработчиков.
В статье описан опыт обеспечения переносимости программных тестовых сценариев между окружением моделирования СБИС и реальной микросхемой, который был применён при разработке СБИС 1888ТХ018 [3], 1888ВС048 и 1888ВС058. Отдельная часть статьи описывает особенности реализации начального загрузчика, предоставляющего возможность пакетного запуска тестов, как под управлением внешней системы контроля, так и без неё.
Задача разработки и отладки программных сценариев на модели СБИС обладает особой спецификой. Рабочее окружение характеризуется очень небольшой скоростью выполнения, которая может варьироваться в зависимости от особенностей верификационного окружения, используемых версий ПО для моделирования, а также размера моделируемой СБИС. Зачастую в этом случае отсутствуют полноценные средства отладки, что затрудняет проектирование и отладку сложных программных абстракций.
При разработке и верификации СБИС 1888ВС048 и 1888ВС058 для обеспечения переносимости верификационных сценариев и упрощения разработки были использованы следующие основные подходы:
При компиляции пакета тестового ПО для системы сборки должны быть заданы две входные переменные:
На основе анализа их значений производится выбор набора низкоуровневых драйверов, которые будут включены в данную сборку.
Для повышения производительности моделирования при работе на модели СБИС были применены следующие подходы:
Для некоторых блоков последовательность инициализации при работе на модели СБИС и реальной микросхеме различается (например, PCI Express, DDR-память и т.п.). Для проверки работоспособности ряда блоков используются упрощённые модели оконечных устройств (например, модели SPI Flash, SD-карт и т.п.). Они не обладают полной функциональностью или имеют иную последовательность инициализации.
Код для работы с такими устройствами разрабатывался и отлаживался на ПЛИС-прототипе, после чего проверялся на RTL-модели, и на основе этого вносились изменения как в верификационное окружение, так и в сам код для обеспечения его работоспособности во всех сценариях применения.
Система сборки играет важную роль в обеспечении переносимости верификационных сценариев. К тому же именно она должна обеспечить максимально типовой порядок работы с проектом во всех окружениях. При моделировании СБИС и разработке IP-блоков, система сборки должна обеспечивать поддержку многопоточной компиляции и элаборации проекта, а также обеспечивать поддержку использования MSIE для сокращения времени повторной сборки проекта [15]. Так как один и тот же блок может применяться в различных проектах, то также необходима поддержка разбиения большого проекта на подпроекты на уровне системы сборки. Дополнительно снизить время повторных сборок проекта позволяет использование системы кэширования результатов компиляции (ccache).
При работе с итоговой микросхемой система сборки должна поддерживать интеграцию с современными интегрированными средами разработки, такими как Eclipse, Code::Blocks и т.п, и при этом не зависеть от пакета ПО для моделирования СБИС, который может отсутствовать у конечных разработчиков решений на базе данной микросхемы. Для обеспечения регулярного автоматизированного тестирования проекта и сбора метрик о состоянии проекта система сборки и тестирования проекта должна иметь интеграцию с современными системами непрерывной интеграции, такими как Jenkins.
Для решения вышеобозначенных задач был выбран набор инструментов cmake [12, 15], а для запуска тестов – ctest. Это позволило обеспечить унификацию процесса запуска тестов как на модели, так и на готовой микросхеме, а также использовать существующие решения для анализа результатов автоматизированных тестовых прогонов: Jenkins xUnit plugin, Jenkins test results analyzer plugin, Jenkins code coverage plugin и другие.
На уровне системы сборки проекта реализован запуск окружения для пошаговой отладки при работе на модели СБИС [3], дополнительные сценарии для сбора покрытия и профилирования кода [16], подстановка соответствующих опций компилятора и вызов соответствующих инструментов после окончания тестового прогона, а также сборка документации при помощи системы документирования исходного кода doxygen.
ПО начальной загрузки СБИС (ROM-загрузчик) – ещё один важный компонент, которому уделяется неоправданно мало внимания в публикациях. ПО начальной загрузки СБИС 1888ВС048 и 1888ВС058 может не только обеспечивать начальную инициализацию, загрузку, проверку целостности и выполнение пользовательского кода на микросхеме, но и упрощает диагностику ошибок на этапе загрузки и в разрабатываемом пользователями коде. Дополнительно ROM-загрузчик обеспечивает разработчиков решением для внутрисхемного программирования внешней (по отношению к микросхеме) памяти, предоставляет программный интерфейс для пользовательских программ, что позволяет сократить объём необходимой встроенной SRAM-памяти микросхемы.
В ROM-загрузчик 1888ВС048 включена также процедура самотестирования и обеспечен интерфейс взаимодействия с внешней системой для пакетного запуска тестовых сценариев.
Процесс загрузки СБИС 1888ВС048 и 1888ВС058 происходит в несколько этапов:
Основная масса тестов компилируется в виде вторичного загрузчика, который загружается при помощи встроенного ROM-загрузчика. Схематично алгоритм работы ROM-загрузчика представлен на рисунке 2.
Диагностический вывод. Стандартным средством отладки для большинства СБИС является интерфейс асинхронного приёмника-передатчика (UART). Наиболее широко применяемые во встраиваемых решениях загрузчики операционной системы, такие как u-boot, barebox и redboot, ориентированы на использование терминала, подключённого через интерфейс асинхронного приёмника-передатчика как основного интерфейса взаимодействия с пользователем. Ядро операционной системы Linux при работе во встраиваемых системах аналогичным образом чаще всего использует последовательный порт для отображения отладочных сообщений и дальнейшего входа в систему.
Подробная диагностика на ранних этапах работы ROM-загрузчика может серьёзно облегчить выявление проблем с загрузкой. Дополнительно ROM- загрузчик может устанавливать в самом начале своей работы обработчики векторов исключений процессора. Таким образом, если произойдёт исключение в пользовательской программе, можно предоставить пользователю подробную информацию об ошибке, вплоть до программной трассировки стека вызовов, которые привели к этой ошибке. Пример вывода загрузчика 1888ВС048 в последовательный порт представлен на рисунке 3.
Проверка целостности и совместимости загружаемого кода. Образ вторичного загрузчика содержит заголовок, в котором указана служебная информация о загружаемой программе: порядок байт, адрес точки входа, размер, идентификационный номер микросхемы, для которой скомпилирована программа, и контрольные суммы CRC32 для заголовка и данных. Это позволяет гарантировать, что загружаемый код не содержит ошибок, а также предназначается именно для этой микросхемы. В заголовке также зарезервировано место, куда ROM-загрузчик поместит указатель на структуру, содержащую информацию о том, с какого устройства была произведена загрузка.
Инструменты для аварийной загрузки. В случае, если загрузиться не удалось ни с одного устройства, или необходимо произвести обновление ПО, записанного во внешнее ПЗУ, в ROM- загрузчике предусмотрен аварийный (хост) режим. Этот режим позволяет передать образ вторичного загрузчика, используя внешний интерфейс. Для СБИС 1888ВС048 и 1888ВС058 этим интерфейсом является UART, который используется также для отладочного вывода. Для 1888ВС058 этим каналом дополнительно может быть интерфейс EMI или канал Ethernet (EDCL). Для передачи бинарных данных по каналу UART используется протокол xmodem. Наличие этого режима позволяет загрузить вторичный загрузчик, реализующий процесс программирования внешней ПЗУ.
Данный режим также позволяет производить автоматизированное тестирование на платах, при условии наличия программируемого источника питания (APC) или при наличии на отладочной плате схемы управления питанием. Этот сценарий загрузки используется при проведении автоматизированного тестирования на реальной микросхеме.
ROM API для вторичного загрузчика. Вторичный загрузчик (spl) может получать от ROM-загрузчика информацию о том, какие компоненты процедуры самотестирования завершились на данной микросхеме с ошибкой, информацию о версии микросхемы и версии ROM-загрузчика. Наиболее полезной и необходимой является информация о том, с какого устройства была произведена загрузка, а также набор функций для чтения дополнительных данных (например, u-boot) с этого устройства, которое выполняется кодом, находящимся в ROM.
Для обеспечения этого взаимодействия ROM-загрузчик использует для хранения переменных только область стека, а при компиляции генерируется специальный заголовочный файл, включение которого в пользовательскую программу позволяет вызывать имеющиеся в масочном ПЗУ функции.
Поддержка объединения тестов в цепочки. Этот режим позволяет записать несколько образов вторичного загрузчика во внешнюю флеш-память и выполнять последовательно без сброса. После выполнения загруженной программы из цепочки, происходит возврат в ROM-загрузчик. В зависимости от кода возврата будет выполнен переход в хост-режим загрузки, попытка загрузиться с другого источника, или будет считан следующий образ вторичного загрузчика из той внешней памяти, откуда была произведена загрузка.
Такой подход позволяет записать набор существующих тестов без ручного объединения их в один тест и загружать их последовательно из внешней памяти. Количество тестов в такой цепочке ограничено только объёмом подключенной внешней памяти. Дополнительно это позволяет разделять готовую прошивку платы на несколько независимых компонентов для удобства разработки и отладки. Например, первый образ вторичного загрузчика инициализирует динамическую память, которая установлена на плате и может отличаться от платы к плате, и записывает уникальный MAC-адрес в регистры Ethernet контроллера. Следующий за ним вторичный загрузчик является spl-компонентом загрузчика u-boot, который в этом случае не содержит кода инициализации динамической памяти и может являться общим для всех плат на базе этой микросхемы.
Этот сценарий отлично подходит для верификации уже изготовленных микросхем при испытаниях.
Описанный выше подход оправдал себя при разработке и верификации СБИС 1888ТХ018, 1888ВС048 и 1888ВС058, так как позволил сформировать к моменту прихода микросхемы предварительную версию набора разработчика, а также обеспечил повторное использование кода при разработке и поддержке нескольких проектов. Дополнительным преимуществом стало создание единого инструментария для отладки и начального программирования ПЗУ, что позволяет инженерам работать с целым рядом микросхем.
Биометрические системы, информационные киоски (БИК), турникеты и шлюзы с АСО. Обзор оборудования, компонентов и особенностей установки
Повсеместно биометрическую идентификацию рассматривают как перспективный инструмент для быстрых и безопасных операций почти универсального (в самых различных сферах) применения. Несколько лет назад появились биометрические информационные киоски, турникеты и шлюзы. Эти модели постоянно совершенствуются. О новинках, связанных с расширением функционала и защиты современного оборудования, ставших возможными профессиональными усилиями разработчиков РЭА и производителей оборудования, предлагаем ознакомиться в нашем обзоре. Основной акцент в формате импортозамещения современной электроники сделан на серийные модели отечественных производителей. 04.09.2024 СЭ №6/2024 320 0 0Аккумулятор 18650 для радиоканала
Аккумуляторы 18650 имеют рабочие напряжения 3…4,2 В, что не позволяет использовать их непосредственно в схемах с 5-вольтовым питанием. В статье предложено схемное решение формирования требуемого значения напряжения методом накопления импульсов самоиндукции от дросселя. С целью уменьшения потребления энергии формируется режим «сна» для используемого микроконтроллера 12F675 и радиомодуля HC12 в комбинации с отключением общего провода других потребителей энергии электронным ключом на полевом транзисторе. Приведена методика расчёта длительности работы на аккумуляторе в режиме «измерение-сон». 02.09.2024 СЭ №6/2024 227 0 0Усовершенствованный двухканальный индикатор уровня звука на базе цветного 1,3” TFT дисплея и микроконтроллера EFM8LB10F16
В статье приведены принципиальная схема, разводка и внешний вид платы, а также программные средства двухканального индикатора уровня звука на базе цветного 1,3″ TFT-дисплея с разрешением 240×240 пикселей (с контроллером ST7789), сопряжённого с микроконтроллером EFM8LB10F16 по параллельному интерфейсу. Показаны результаты работы устройства в составе УМЗЧ. 02.09.2024 СЭ №6/2024 222 0 0Сверхпроводимость при высоких температурах реальность и фальсификации. Часть 2
Одним из последних ярких примеров несостоявшегося открытия сверхпроводимости при нормальных условиях стала история с веществом LK-99, названным так по первым буквам фамилий руководителей проекта Сукбэ Ли и Джи-Хун Кима. Группа южнокорейских учёных летом 2023 года разместила на сайте arXiv подробные результаты своих исследований, подтверждающих сверхпроводимость при температуре 127°С и атмосферном давлении синтезированного ими вещества LK-99. Детальное описание экспериментов не вызывало сомнений у мировой научной общественности. Однако попытки объяснить эти результаты поставили в тупик многих экспертов в области сверхпроводимости. Эта информация привела к взрыву в сетях комментариев и вопросов к авторам. Десятки лабораторий во всём мире попытались повторить эксперимент группы Ли Сукбэ. Однако никому не удалось получить точно такие же результаты, какие были опубликованы в южнокорейских препринтах. Только совместные усилия лучших специалистов в области сверхпроводимости позволили установить, что LK-99 не является сверхпроводником. При этом резкий скачок удельного сопротивления объясняется фазовым переходом кристаллической структуры сульфида серы, содержащегося в виде примеси в образцах LK-99. 04.09.2024 СЭ №6/2024 248 0 0