Обновить
8K+
4
Кирилл Фернандес@FernandesKA

Embedded developer

29
Рейтинг
5
Подписчики
Отправить сообщение

Увидел, плюсанул уже давно, отличный обзор, спасибо!)

Спасибо за информацию! В основном используется, если ресурсы уже заканчиваются, а нужная логика не влезла, и она не используется совместно в одном битстриме. В этом случае на ходу из C++ ного приложения меняется bitstream с оверлеем в зависимости от выбранного пользователем режима работы.

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

Но мы до неё пока не дошли, поэтому сейчас рассматриваем именно полную реконфигурацию как более простой вариант.

Для них, если я не путаю, есть даже поддержка в upstream buildroot - конфиг zynq_zc706_defconfig, можно попробовать собрать его, скорее всего заведётся

Здесь у нас не частичная, а full реконфигурация. Partial, к сожалению, кратно сложнее(

Мы полностью грузим новый битстрим, но за это платим ограничениями: конфигурация PS не должна меняться между битстримами, а на время реконфигурации PL нужно выгрузить все драйверы, которые обращаются к PL, и проследить, чтобы userspace не ходил по адресам, на которые был сделан mmap PL

Да, согласен, если PL должен быть готов еще до старта ядра, загрузка bitstream из U-Boot действительно самый простой и удобный вариант. Спасибо за уточнение!

Я в этой статье описывал другой сценарий, когда Linux уже запущен, а конфигурацию PL нужно менять динамически. Например, когда ресурсы FPGA почти закончились, а некоторая логика не должна работать одновременно. В таком случае удобнее не держать все сразу в одной конфигурации, а загружать нужный bitstream и применять соответствующий overlay уже из Linux.

Вам спасибо за совет!

Информация

В рейтинге
302-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем
Средний