Выпуск #9/2018
Павлов Антон Николаевич, Ливенцев Евгений Васильевич, Силантьев Александр Михайлович
Технология удаленной отладки аппаратной части и программного обеспечения систем на основе ПЛИС
Технология удаленной отладки аппаратной части и программного обеспечения систем на основе ПЛИС
Просмотры: 3323
В данной работе рассматриваются вопросы повышения производительности труда разработчиков систем на основе ПЛИС в состав которых входит микропроцессорное ядро.
УДК 004.41
DOI: 10.22184/1993-8578.2018.82.186.189
УДК 004.41
DOI: 10.22184/1993-8578.2018.82.186.189
Теги: fpga hardware development hardware/software co-verification microprocessor ip-core open software remote control software development встречная верификация микропроцессорное ядро плис разработка аппаратуры разработка по удаленное управление
При создании системы на основе ПЛИС с микропроцессорным ядром одновременно разрабатывается как аппаратная часть, так и ПО, в первую очередь системное (программа начальной загрузки, ядро ОС).
Как при разработке аппаратной части, так и при разработке ПО, отладка и тестирование являются важным и трудоемким этапом. Для проведения данного этапа, как правило, создаются стенды либо на базе готовых отладочных комплектов с ПЛИС, либо на базе специально разработанных плат. Одновременная разработка аппаратной части и ПО позволяет организовать на стенде встречное тестирование: разработчики аппаратной части используют в качестве тестов приложения пользователя [1], разработчики системного ПО используют стенды для проверки работоспособности ПО на целевой платформе.
При использовании стендов на базе ПЛИС приходится сталкиваться со следующими трудностями:
стенды на базе ПЛИС, как правило, имеют высокую стоимость, а их количество ограничено, и значит, затруднительно выделить каждому разработчику отдельный стенд в персональное пользование; передача стенда от разработчика к разработчику происходит не мгновенно: как правило, требуется переналадка стенда, во время которой использование стенда невозможно;
стенды могут быть громоздки и требовать создания специальных условий для эксплуатации; т. е. не всегда возможно разместить стенд поблизости от рабочего места разработчика и наоборот;
для тщательного тестирования системного ПО приходится регулярно проверять промежуточные (внутренние) версии ПО, что может быть затруднено, если стенд в этот момент занят другим разработчиком.
Указанные трудности порождают проблему: уменьшается полезное рабочее время стендов, которое можно использовать для тестирования разрабатываемой системы, простаивают разработчики, что приводит к снижению производительности труда. Кроме того, несложные, но трудоемкие, времязатратные ручные операции со стендами повышают значение человеческого фактора как источника ошибок в работе.
Одним из путей решения данной проблемы является переход к удаленному режиму работы со стендами, при котором как можно больше операций, необходимых для тестирования и отладки аппаратной части и программного обеспечения, можно производить без непосредственного физического доступа к стенду.
В этой связи актуальной является задача создания технологии удаленной отладки аппаратной части и программного обеспечения систем на основе ПЛИС, которая позволит использовать стенды удаленно и организовать совместную работу нескольких разработчиков с одним и более стендами.
Идея, лежащая в основе предлагаемой технологии, заключается в том, что как можно большее число информационных интерфейсов стенда замыкается на специально разработанное устройство управления, подключенное к компьютерной сети; по возможности взаимодействие со стендом для тестирования и отладки производится при помощи устройства управления стендом удаленно (разумеется, кроме случаев, когда необходимо произвести ремонт стенда или внести физические изменения в аппаратуру стенда). Подобный подход уже описан ранее в работах [2, 3] и [4, 5], но в отличие от предлагаемой технологии, упор в них делается на автоматический прогон тестовых сборок ПО в фиксированных конфигурациях.
ТИПОВЫЕ ОПЕРАЦИИ И ИСПОЛЬЗУЕМЫЕ ИНТЕРФЕЙСЫ
Типовой цикл отладки системы на базе ПЛИС с микропроцессорным ядром включает в себя обновление конфигураций ПЛИС стенда, прогон тестового ПО для проверки по крайней мере базовой работоспособности обновленной конфигурации ПЛИС и дальнейшую совместную работу разработчиков ПО и разработчиков аппаратуры.
Для обновления конфигураций ПЛИС стенда традиционно используется интерфейс JTAG.
Прогон тестового ПО связан с получением информации от тестового ПО. Обычно для этой цели используются интерфейсы UART и/или сеть Ethernet.
При отладке ПО и аппаратной части нередко возникают ситуации зависания, для выхода из которых в разрабатываемую систему приходится подавать сигнал СБРОС; в тех случаях, когда подача сигнала СБРОС не приводит к выводу системы из состояния зависания, разработчику приходится прибегать к отключению питания стенда с последующим включением и, возможно, повторным конфигурированием ПЛИС.
В составе разрабатываемой системы нередко присутствуют накопители информации на базе микросхем ППЗУ с интерфейсами SPI и I2C; в этом случае в составе стенда отладки предусматриваются отдельные технические средства для программирования этих микросхем (программаторы).
Нередко отлаживаемая система поддерживает несколько режимов работы в зависимости от состояния входных линий интерфейса дискретных сигналов по снятию сигнала СБРОС; для отладки работы системы в разных режимах в составе стенда предусматривается возможность установки состояния входных линий интерфейса дискретных сигналов, например, при помощи внешних замыкателей.
СУЩЕСТВУЮЩИЕ РЕШЕНИЯ ДЛЯ ОРГАНИЗАЦИИ УДАЛЕННОЙ ОТЛАДКИ СИСТЕМ НА БАЗЕ ПЛИС
Существующие решения для организации удаленной отладки на базе ПЛИС представлены устройствами, подключаемыми к сети Ethernet и обеспечивающими конфигурирование ПЛИС через интерфейс JTAG. К таковым можно отнести EthernetBlaster II Communications Cable [6] и Catapult EJ-2 Ethernet-to-JTAG Cable [7]. Использованию данных устройств в качестве полноценных устройств удаленного управления стендом отладки препятствуют:
отсутствие поддержки интерфейсов UART, SPI, I2C;
невозможность использовать устройство для подачи общесистемного сигнала СБРОС;
отсутствие возможности управления питанием отлаживаемой системы.
Вместе с тем существует решение, которое можно использовать в качестве составных частей устройства удаленного управления: Bus Pirate [8], многофункциональное устройство, предоставляющее пользователю возможность подключиться к отлаживаемой программно-аппаратной системе через интерфейсы UART, I2C, SPI, JTAG. У Bus Pirate имеется ряд недостатков:
Bus Pirate не имеет сетевого интерфейса, подключение к ПК пользователя происходит через интерфейс USB;
интерфейсы UART, I2C, SPI, JTAG мультиплексированы, а значит, нет возможности их одновременного использования без перекоммутации;
имеются возможность управлять питанием подключенного оборудования, однако обеспечиваемое управляемым источником питания напряжение 3,3 В годится для узкого круга отлаживаемых систем, а максимальный выдаваемый источником ток составляет всего лишь 150 мА.
хотя имеется возможность использовать Bus Blaster в качестве JTAG-адаптера, однако это требует замены встроенного программного обеспечения Bus Pirate, а пропускная способность такого решения ограничена 115200 бит/с.
РЕАЛИЗАЦИЯ
Структурно стенд удаленной отладки в рамках предлагаемой технологии строится следующим образом (см. рис. 1):
основой стенда является устройство удаленного управления, которое контролирует одну или более отлаживаемых систем на основе ПЛИС (англ. device under test);
устройство удаленного управления оснащено двумя интерфейсами Ethernet, один из которых используется для подключения к локальной вычислительной сети (ЛВС), к которой подключены рабочие места разработчиков (пользователей стенда); второй интерфейс Ethernet используется для подключения к изолированной тестовой локальной сети, используемой, при необходимости, для обменов с отлаживаемыми системами;
в зависимости от потребностей отдельной отлаживаемой системы устройство удаленного управления соединяется с отлаживаемой системой требуемым набором информационных интерфейсов: UART, SPI, I2C.
для управления подачей сигнала СБРОС в составе устройства удаленного управления предусмотрен блок реле, работающих на замыкание/размыкание; этот же блок позволяет осуществлять управление подачей питания в отлаживаемую систему.
Для реализации устройства удаленного управления использованы готовые доступные (off-the-shelf) модули. Например, в качестве управляющей ЭВМ используется одноплатная ЭВМ Raspberry Pi 3.
ПО устройство построено на базе свободно распространяемых программных компонентов. В качестве ОС используется ОС на базе Debian Linux.
РЕЗУЛЬТАТЫ
Разработана технология удаленной отладки, включающая в себя комплекс аппаратных, программных и методических средств:
устройство управления стендом, которое реализует:
управление питанием стенда;
работу с интерфейсами RS232, UART, SPI, I2C, JTAG, Ethernet;
управление режимом работы отлаживаемой системы при помощи интерфейса дискретных сигналов;
подачу сигнала СБРОС;
наблюдение за состоянием стенда;
обновление конфигураций ПЛИС стенда.
ПО для организации авторизованного доступа к стенду, организации совместной работы, а также технологическое ПО для управления аппаратными средствами стенда;
методические рекомендации и типовые приемы работы со стендами.
ЗАКЛЮЧЕНИЕ
Дальнейшее совершенствование технологии удаленной отладки заключается прежде всего в расширении сферы ее применения, реализации в устройстве управления стендами функциональности измерительного оборудования и автоматизации запуска тестов.
ЛИТЕРАТУРА
1. Чибисов П. А. Встречное тестирование высокопроизводительных микропроцессоров: диссертация … кандидата технических наук: 05.13.11 / Чибисов Петр Александрович; [Место защиты: Ин-т систем. программирования].— Москва, 2013. — 174 с.: ил.
2. LinuxBIOS Automated Distributed Test System Test Integration Manual V1.0 2006/11/22 [Электронный ресурс] // URL: https://www.coreboot.org/PDFs/LinuxBIOS-testing/TestIntegrationManual.pdf (дата обращения: 09.08.2017).
3. Raptor Engineering Automated Coreboot Test Stand (REACTS) [Электронный ресурс] // URL: https://static.rpteng.com/REACTS/pdf/reacts_users_guide.pdf (дата обращения: 18.12.2017).
4. Hardware Infrastructure of Free Electrons’ Lab [Электронный ресурс] // URL: https://free-electrons.com/blog/hardware-infrastructure-free-electrons-lab/ (дата обращения: 18.12.2017).
5. Software Architecture of Free Electrons’ Lab [Электронный ресурс] // URL: https://free-electrons.com/blog/software-architecture-free-electrons-lab/ (дата обращения: 18.12.2017).
6. EthernetBlaster II Communications Cable [Электронный ресурс] // URL: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ethernetblasterii.pdf (дата обращения: 18.12.2017).
7. Catapult EJ-2 Ethernet-to-JTAG Cable [Электронный ресурс] // URL: http://www.byte-tools.com/product/catapultej2 (дата обращения: 18.12.2017).
8. Bus Pirate [Электронный ресурс] // URL: http://dangerousprototypes.com/docs/Bus_Pirate (дата обращения: 18.12.2017)
Как при разработке аппаратной части, так и при разработке ПО, отладка и тестирование являются важным и трудоемким этапом. Для проведения данного этапа, как правило, создаются стенды либо на базе готовых отладочных комплектов с ПЛИС, либо на базе специально разработанных плат. Одновременная разработка аппаратной части и ПО позволяет организовать на стенде встречное тестирование: разработчики аппаратной части используют в качестве тестов приложения пользователя [1], разработчики системного ПО используют стенды для проверки работоспособности ПО на целевой платформе.
При использовании стендов на базе ПЛИС приходится сталкиваться со следующими трудностями:
стенды на базе ПЛИС, как правило, имеют высокую стоимость, а их количество ограничено, и значит, затруднительно выделить каждому разработчику отдельный стенд в персональное пользование; передача стенда от разработчика к разработчику происходит не мгновенно: как правило, требуется переналадка стенда, во время которой использование стенда невозможно;
стенды могут быть громоздки и требовать создания специальных условий для эксплуатации; т. е. не всегда возможно разместить стенд поблизости от рабочего места разработчика и наоборот;
для тщательного тестирования системного ПО приходится регулярно проверять промежуточные (внутренние) версии ПО, что может быть затруднено, если стенд в этот момент занят другим разработчиком.
Указанные трудности порождают проблему: уменьшается полезное рабочее время стендов, которое можно использовать для тестирования разрабатываемой системы, простаивают разработчики, что приводит к снижению производительности труда. Кроме того, несложные, но трудоемкие, времязатратные ручные операции со стендами повышают значение человеческого фактора как источника ошибок в работе.
Одним из путей решения данной проблемы является переход к удаленному режиму работы со стендами, при котором как можно больше операций, необходимых для тестирования и отладки аппаратной части и программного обеспечения, можно производить без непосредственного физического доступа к стенду.
В этой связи актуальной является задача создания технологии удаленной отладки аппаратной части и программного обеспечения систем на основе ПЛИС, которая позволит использовать стенды удаленно и организовать совместную работу нескольких разработчиков с одним и более стендами.
Идея, лежащая в основе предлагаемой технологии, заключается в том, что как можно большее число информационных интерфейсов стенда замыкается на специально разработанное устройство управления, подключенное к компьютерной сети; по возможности взаимодействие со стендом для тестирования и отладки производится при помощи устройства управления стендом удаленно (разумеется, кроме случаев, когда необходимо произвести ремонт стенда или внести физические изменения в аппаратуру стенда). Подобный подход уже описан ранее в работах [2, 3] и [4, 5], но в отличие от предлагаемой технологии, упор в них делается на автоматический прогон тестовых сборок ПО в фиксированных конфигурациях.
ТИПОВЫЕ ОПЕРАЦИИ И ИСПОЛЬЗУЕМЫЕ ИНТЕРФЕЙСЫ
Типовой цикл отладки системы на базе ПЛИС с микропроцессорным ядром включает в себя обновление конфигураций ПЛИС стенда, прогон тестового ПО для проверки по крайней мере базовой работоспособности обновленной конфигурации ПЛИС и дальнейшую совместную работу разработчиков ПО и разработчиков аппаратуры.
Для обновления конфигураций ПЛИС стенда традиционно используется интерфейс JTAG.
Прогон тестового ПО связан с получением информации от тестового ПО. Обычно для этой цели используются интерфейсы UART и/или сеть Ethernet.
При отладке ПО и аппаратной части нередко возникают ситуации зависания, для выхода из которых в разрабатываемую систему приходится подавать сигнал СБРОС; в тех случаях, когда подача сигнала СБРОС не приводит к выводу системы из состояния зависания, разработчику приходится прибегать к отключению питания стенда с последующим включением и, возможно, повторным конфигурированием ПЛИС.
В составе разрабатываемой системы нередко присутствуют накопители информации на базе микросхем ППЗУ с интерфейсами SPI и I2C; в этом случае в составе стенда отладки предусматриваются отдельные технические средства для программирования этих микросхем (программаторы).
Нередко отлаживаемая система поддерживает несколько режимов работы в зависимости от состояния входных линий интерфейса дискретных сигналов по снятию сигнала СБРОС; для отладки работы системы в разных режимах в составе стенда предусматривается возможность установки состояния входных линий интерфейса дискретных сигналов, например, при помощи внешних замыкателей.
СУЩЕСТВУЮЩИЕ РЕШЕНИЯ ДЛЯ ОРГАНИЗАЦИИ УДАЛЕННОЙ ОТЛАДКИ СИСТЕМ НА БАЗЕ ПЛИС
Существующие решения для организации удаленной отладки на базе ПЛИС представлены устройствами, подключаемыми к сети Ethernet и обеспечивающими конфигурирование ПЛИС через интерфейс JTAG. К таковым можно отнести EthernetBlaster II Communications Cable [6] и Catapult EJ-2 Ethernet-to-JTAG Cable [7]. Использованию данных устройств в качестве полноценных устройств удаленного управления стендом отладки препятствуют:
отсутствие поддержки интерфейсов UART, SPI, I2C;
невозможность использовать устройство для подачи общесистемного сигнала СБРОС;
отсутствие возможности управления питанием отлаживаемой системы.
Вместе с тем существует решение, которое можно использовать в качестве составных частей устройства удаленного управления: Bus Pirate [8], многофункциональное устройство, предоставляющее пользователю возможность подключиться к отлаживаемой программно-аппаратной системе через интерфейсы UART, I2C, SPI, JTAG. У Bus Pirate имеется ряд недостатков:
Bus Pirate не имеет сетевого интерфейса, подключение к ПК пользователя происходит через интерфейс USB;
интерфейсы UART, I2C, SPI, JTAG мультиплексированы, а значит, нет возможности их одновременного использования без перекоммутации;
имеются возможность управлять питанием подключенного оборудования, однако обеспечиваемое управляемым источником питания напряжение 3,3 В годится для узкого круга отлаживаемых систем, а максимальный выдаваемый источником ток составляет всего лишь 150 мА.
хотя имеется возможность использовать Bus Blaster в качестве JTAG-адаптера, однако это требует замены встроенного программного обеспечения Bus Pirate, а пропускная способность такого решения ограничена 115200 бит/с.
РЕАЛИЗАЦИЯ
Структурно стенд удаленной отладки в рамках предлагаемой технологии строится следующим образом (см. рис. 1):
основой стенда является устройство удаленного управления, которое контролирует одну или более отлаживаемых систем на основе ПЛИС (англ. device under test);
устройство удаленного управления оснащено двумя интерфейсами Ethernet, один из которых используется для подключения к локальной вычислительной сети (ЛВС), к которой подключены рабочие места разработчиков (пользователей стенда); второй интерфейс Ethernet используется для подключения к изолированной тестовой локальной сети, используемой, при необходимости, для обменов с отлаживаемыми системами;
в зависимости от потребностей отдельной отлаживаемой системы устройство удаленного управления соединяется с отлаживаемой системой требуемым набором информационных интерфейсов: UART, SPI, I2C.
для управления подачей сигнала СБРОС в составе устройства удаленного управления предусмотрен блок реле, работающих на замыкание/размыкание; этот же блок позволяет осуществлять управление подачей питания в отлаживаемую систему.
Для реализации устройства удаленного управления использованы готовые доступные (off-the-shelf) модули. Например, в качестве управляющей ЭВМ используется одноплатная ЭВМ Raspberry Pi 3.
ПО устройство построено на базе свободно распространяемых программных компонентов. В качестве ОС используется ОС на базе Debian Linux.
РЕЗУЛЬТАТЫ
Разработана технология удаленной отладки, включающая в себя комплекс аппаратных, программных и методических средств:
устройство управления стендом, которое реализует:
управление питанием стенда;
работу с интерфейсами RS232, UART, SPI, I2C, JTAG, Ethernet;
управление режимом работы отлаживаемой системы при помощи интерфейса дискретных сигналов;
подачу сигнала СБРОС;
наблюдение за состоянием стенда;
обновление конфигураций ПЛИС стенда.
ПО для организации авторизованного доступа к стенду, организации совместной работы, а также технологическое ПО для управления аппаратными средствами стенда;
методические рекомендации и типовые приемы работы со стендами.
ЗАКЛЮЧЕНИЕ
Дальнейшее совершенствование технологии удаленной отладки заключается прежде всего в расширении сферы ее применения, реализации в устройстве управления стендами функциональности измерительного оборудования и автоматизации запуска тестов.
ЛИТЕРАТУРА
1. Чибисов П. А. Встречное тестирование высокопроизводительных микропроцессоров: диссертация … кандидата технических наук: 05.13.11 / Чибисов Петр Александрович; [Место защиты: Ин-т систем. программирования].— Москва, 2013. — 174 с.: ил.
2. LinuxBIOS Automated Distributed Test System Test Integration Manual V1.0 2006/11/22 [Электронный ресурс] // URL: https://www.coreboot.org/PDFs/LinuxBIOS-testing/TestIntegrationManual.pdf (дата обращения: 09.08.2017).
3. Raptor Engineering Automated Coreboot Test Stand (REACTS) [Электронный ресурс] // URL: https://static.rpteng.com/REACTS/pdf/reacts_users_guide.pdf (дата обращения: 18.12.2017).
4. Hardware Infrastructure of Free Electrons’ Lab [Электронный ресурс] // URL: https://free-electrons.com/blog/hardware-infrastructure-free-electrons-lab/ (дата обращения: 18.12.2017).
5. Software Architecture of Free Electrons’ Lab [Электронный ресурс] // URL: https://free-electrons.com/blog/software-architecture-free-electrons-lab/ (дата обращения: 18.12.2017).
6. EthernetBlaster II Communications Cable [Электронный ресурс] // URL: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ethernetblasterii.pdf (дата обращения: 18.12.2017).
7. Catapult EJ-2 Ethernet-to-JTAG Cable [Электронный ресурс] // URL: http://www.byte-tools.com/product/catapultej2 (дата обращения: 18.12.2017).
8. Bus Pirate [Электронный ресурс] // URL: http://dangerousprototypes.com/docs/Bus_Pirate (дата обращения: 18.12.2017)
Отзывы читателей