Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Hot Plug PCI устройства = обновление прошивки ПЛИС без перезагрузки Windows
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
urock
Всем добрый день!

Предлагается обсудить возможность изменить прошивку ПЛИС, подключенной к компьютеру с ОС Windows XP по шине PCIe (интерфейс PCIe построен также на ПЛИС) без перезагрузки системы. Прошивка загружается в ПЛИС через интерфейс JTAG.
Возникающие вопросы:
1. Надо ли вносить изменения в функциональный драйвер устройства (WDM драйвер, полностью поддерживающий Plug and Play)?
2. Необходимо ли предусматривать какие-либо дополнительные аппаратные средства?
3. Какова может быть процедура отключения устройства, обновления прошивки, включения устройства?

Скажу сразу, что обновление прошивки без перезагрузки оказывается возможным, если новая прошивка не меняет PCIe конфигурацию устройства (или просто требует те же ресурсы, что и старая). В этом случае достаточно просто disable устройство, обновить прошивку, сделать enable. Если же устройство с новой прошивкой будет требовать другие ресурсы, то необходима будет перезагрузка, что не устраивает.

Я обратил внимание, что изменение прошивки имеет много общего с процедурой Hot Plug например ExpressCard. В этом случае при подключении ExpressCard хост контроллер PCIe выдает прерывание Link Train Detected, которое передается Windows через интерфейс ACPI. Обработчик прерывания ACPI инициирует процесс перечисления устройств на шине, находит новое подключенное устройство и загружает его драйвер.

Таким образом, при изменении прошивки необходимо каким-либо образом инициировать процесс перечисления устройств на шине, чтобы система могла выделить новые ресурсы. А отсюда возникает новый вопрос:
4. Как это сделать? ))
Deka
Может быть есть вариант вызвать перечисление устройств на шине изнутри Windows? Т.е. драйвер ловит признак смены прошивки или таймаут устройства и вызывает перечисление на шине. Если не драйвер, то сервис.
urock
да вы видимо правы, видимо в этом решение и заключается.. вот тут http://forum.shelek.ru/index.php/topic,19837.0.html это обсуждалось, но зерно истины так и не было обнаружено
zverek
Цитата(urock @ Mar 24 2009, 12:44) *
Всем добрый день!

Предлагается обсудить возможность изменить прошивку ПЛИС, подключенной к компьютеру с ОС Windows XP по шине PCIe (интерфейс PCIe построен также на ПЛИС) без перезагрузки системы. Прошивка загружается в ПЛИС через интерфейс JTAG.
Возникающие вопросы:
1. Надо ли вносить изменения в функциональный драйвер устройства (WDM драйвер, полностью поддерживающий Plug and Play)?
2. Необходимо ли предусматривать какие-либо дополнительные аппаратные средства?
3. Какова может быть процедура отключения устройства, обновления прошивки, включения устройства?

Скажу сразу, что обновление прошивки без перезагрузки оказывается возможным, если новая прошивка не меняет PCIe конфигурацию устройства (или просто требует те же ресурсы, что и старая). В этом случае достаточно просто disable устройство, обновить прошивку, сделать enable. Если же устройство с новой прошивкой будет требовать другие ресурсы, то необходима будет перезагрузка, что не устраивает.

Я обратил внимание, что изменение прошивки имеет много общего с процедурой Hot Plug например ExpressCard. В этом случае при подключении ExpressCard хост контроллер PCIe выдает прерывание Link Train Detected, которое передается Windows через интерфейс ACPI. Обработчик прерывания ACPI инициирует процесс перечисления устройств на шине, находит новое подключенное устройство и загружает его драйвер.

Таким образом, при изменении прошивки необходимо каким-либо образом инициировать процесс перечисления устройств на шине, чтобы система могла выделить новые ресурсы. А отсюда возникает новый вопрос:
4. Как это сделать? ))


Самое злое в этой схеме - "интерфейс PCIe построен также на ПЛИС". Если будете использовать StratixiV или Arria II, то порблем будет гораздо меньше. Я очень сомневаюсь, что реализации PCIe ядра от PLD/Megacore поддерживают HotPlug.

Во-вторых, плата должна быть разведена по особому - одна из ног питания (или земли, точно не помню, под рукой нет PCISIG документации) должна быть короче остальных.

Плюс ко всему, устройство должно успеть проинициализироваться за 100мс после старта системы (на этом я специально заострил внимание). А теперь самое интересно, кто нибудь реально заводил hotplug под PCIe?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.