`cat /sys/bus/platform/devices/_dev_name_/modalias`, какой alias ядро для ноды видит, и попробовать grep - нуть с modinfo alias
Можно попробовать дернуть bind явно (echo > /sys/bus/platform/drivers/_dev_name_/bind)
Ну и последнее из того что знаю, это посмотреть что драйвер ждет зависимость, а не что драйвера для этого вообще нет в /sys/kernel/debug/devices_deferred. Но для этого уже вроде как нужен debugfs.
Дальше этого пока что к счастью заходить не приходилось)
Спасибо за информацию! В основном используется, если ресурсы уже заканчиваются, а нужная логика не влезла, и она не используется совместно в одном битстриме. В этом случае на ходу из 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.
Спасибо!
Обычно делаю что - то такое:
`cat /sys/bus/platform/devices/_dev_name_/modalias`, какой alias ядро для ноды видит, и попробовать grep - нуть с modinfo alias
Можно попробовать дернуть bind явно (echo > /sys/bus/platform/drivers/_dev_name_/bind)
Ну и последнее из того что знаю, это посмотреть что драйвер ждет зависимость, а не что драйвера для этого вообще нет в /sys/kernel/debug/devices_deferred. Но для этого уже вроде как нужен debugfs.
Дальше этого пока что к счастью заходить не приходилось)
Увидел, плюсанул уже давно, отличный обзор, спасибо!)
Спасибо за информацию! В основном используется, если ресурсы уже заканчиваются, а нужная логика не влезла, и она не используется совместно в одном битстриме. В этом случае на ходу из 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.
Вам спасибо за совет!