Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Удаленный загрузчик ПЛИС
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Golikov A.
Всем привет, что-то не смог придумать раздела лучше чем этот.

Есть система ARM + FPGA. На ARM есть загрузчик, который позволяет обновить прошивку через езернет. Загрузчик не убиваемый и не обновляемый. Для его использования ARM переводится в специальный режим, где работает только он и обновляет основную программу.

Далее ARM имеет возможность перезаписать флэш с которой грузиться FPGA, и вот внимание вопрос: Где лучше разместить программу перезаписи (обновления) прошивки FPGA?!
Варианты ответа:
1. В основной программе, позволяет модифицировать загрузчик FPGA, в том числе и запретить его в будущем, например.
2. В программе загрузчике ARM, позволяет за 1 раз обновить обе прошивки.

минусы опять же есть у обоих вариантов, основная программа - штатная работа, а для перезаписи FPGA надо ее блокировать и отключать, придется делать какой-то подрежим. В загрузчике ARM - нет возможности что либо поменять в загрузчике FPGA, платы что уже уехали придется либо возвращать либо оставлять без загрузчика.

Поделитесь мыслями, склоните чашу весов в какую - то сторонуsm.gif Спасибо!

aabmail
Я у себя делал так, что из основной программы можно было обновлять прошивку FPGA (заливал .BIN в SPI flash AT45). Причем перепрограммировать можно в основном режиме.
Не вижу тут никаких минусов, кроме того, что при сбое питания можно "запороть" прошивку. В этом случае приходится разбирать прибор и подключаться по JTAG.
Golikov A.
Цитата(aabmail @ Mar 12 2014, 19:25) *
Я у себя делал так, что из основной программы можно было обновлять прошивку FPGA (заливал .BIN в SPI flash AT45). Причем перепрограммировать можно в основном режиме.
Не вижу тут никаких минусов, кроме того, что при сбое питания можно "запороть" прошивку. В этом случае приходится разбирать прибор и подключаться по JTAG.

ну это существенный минус для коммерческого прибора, мне он правда не грозит, АРМ у меня выживет полюбому.
vladec
Наши программисты, вообще для обновления фирмваре резервируют половину памяти контроллера. Заливают туда не спеша обновление, затем верифицируют его и активируют. При этом прошивка ПЛИСа является частью прошивки микроконтроллера, который и грузит ее в ПЛИС без использования отдельной загрузочной микросхемы памяти.
Golikov A.
ну то есть у вас это делается из основной программы
ASN
Golikov A.
Если загрузчик не убиваемый и не обновляемый, то может туда и аварийную (минимальную и сжатую) прошивку FPGA положить?
И сделать минимальную возможность (пусть значительно медленнее) загрузки ПО и прошивки.
А работать по следующему алгоритму (как штатный bootloader во многих микросхемах):
1. Стартуем с неубиваемого загрузчика.
2. Проверяем целительность рабочего ПО и рабочей прошивки FPGA.
3. Если проверка прошла, то через некоторое время (чтобы успеть, если рабочая прошивка "роняет" прибор, дать команду на остаться в минимальном режиме) грузим рабочий режим, иначе - аварийную прошивку.
То есть, имеем два режима: минимальный и рабочий (стартует с минимального).
А в рабочем можно и мощные алгоритмы обновления "навернуть".
У нас так и сделано.
seneka
Мы используем метод, когда прошивки хранятся в теле основной программы процессора.
Golikov A.
ну пока программисты думают над архитектурой, схемотехники меняют схемы.
Флэш ПЛИС повесили на SPI которой в боевой прошивке используется по другим ногам. Отсюда либо делать программный SPI, либо однозначно обновления делать не из основного алгоритма.

Так что проблема решилась сама собойsm.gif. Все равно спасибо участвовавшим.

Решение такое:

АРМ с не убиваемой прошивкой, при загрузке проверяет целостность своей боевой прошивки, или желания пользователя что-то изменить. Если никто не хочет и прошивка цела и код безопасности тот, переходит на боевой режим, и разрешает грузить ПЛИС тем что есть.

Если нет, то в режим загрузчика, где будет ждать 2 прошивки для ПЛИС и для себя боевую. Корректность прошивки ПЛИС проверять не буду, только во время обновления, пусть сами следят при смене прошивки что все прошло штатно.
Кирпич из прибора никогда не сделают, благодаря не убиваемой прошивке, а все остальное поправят...

П.С. кто на вскидку знает Spartan 6 проверяет целостность прошивки до загрузки, мне главное чтобы он не загрузился в какой-то конфликтный режим и не пожог все...
vladec
По моему, все ПЛИСы во время загрузки верифицируют код, и при обнаружении "битости" сбрасываются
Golikov A.
это логично, но мало ли)... ну что же и хорошо, тогда если все заработало то все ок, а нет, значит меняй прошивки
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.