Перейти к содержанию
    

Прошивка ПЛИС посредством Ethernet

Появилась необходимость загрузки прошивки в ПЛИС посредством Ethernet.

Предполагаемый алгоритм работы следующий (ещё он отображён на схеме):

 

Изначально Flash прошивается JTAG-ом. Далее после включения питания Flash конфигурирует ПЛИС, система начинает свою работу.

В последствии, появляется необходимость переконфигурирования Flash (например, смена версии или исправление ошибок). Будет ли работать следующее: из ПК подаётся специальная команда и происходит загрузка битового файла конфигурации в ПЛИС (в это время ПЛИС уже загружена и работает в обычном режиме), после чего (или одновременно) ПЛИС программирует Flash (как бы эмулируя работу JTAG). После этого при следующем запуске платы будет грузиться уже новая конфигурация.

Вопросы:

1) сложно ли реально реализовать данную схему, кто-нибудь делал это?

2) Есть ли альтернативные схемы без значительного увеличения сложности и стоимости?

Спасибо!

 

Схема

post-59981-1286433909_thumb.jpg

Изменено пользователем Art55555

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Появилась необходимость загрузки прошивки в ПЛИС посредством Ethernet.

Предполагаемый алгоритм работы следующий (ещё он отображён на схеме):

 

Изначально Flash прошивается JTAG-ом. Далее после включения питания Flash конфигурирует ПЛИС, система начинает свою работу.

В последствии, появляется необходимость переконфигурирования Flash (например, смена версии или исправление ошибок). Будет ли работать следующее: из ПК подаётся специальная команда и происходит загрузка битового файла конфигурации в ПЛИС (в это время ПЛИС уже загружена и работает в обычном режиме), после чего (или одновременно) ПЛИС программирует Flash (как бы эмулируя работу JTAG). После этого при следующем запуске платы будет грузиться уже новая конфигурация.

Вопросы:

1) сложно ли реально реализовать данную схему, кто-нибудь делал это?

2) Есть ли альтернативные схемы без значительного увеличения сложности и стоимости?

Спасибо!

 

Схема

мне кажется без вспомогательного микропроцессора/CPLD или какого-то внешнего watchdog timer не обойтись ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а какая FPGA? в циклоне-3, например, есть это:

 

http://www.altera.com/literature/hb/cyc3/cyc3_ciii51012.pdf

http://www.altera.com/literature/an/AN521.pdf

 

я делал, работает. документировано, правда, довольно скудно. в принципе Eth не обязателен, любой интерфейс подойдет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а какая FPGA? в циклоне-3, например, есть это:

 

http://www.altera.com/literature/hb/cyc3/cyc3_ciii51012.pdf

http://www.altera.com/literature/an/AN521.pdf

 

я делал, работает. документировано, правда, довольно скудно. в принципе Eth не обязателен, любой интерфейс подойдет.

 

ПЛИС: Xilinx Virtex4 LX25

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь может подсказать, как передавать битовый поток конфигурации от ПЛИС(Virtex4 LX25) в ПЗУ(XCF32P)? Алгоритм и ножки ПЗУ, которые в этом участвуют?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ставите ПЛИС, которая умеет грузиться со SPI-FLASH (все более-менее новые).

Организовываете схемотехнику так, чтобы ПЛИС могла в рабочем режиме общаться со своей загрузочной флешкой.

После загрузки с флешки ПЛИС начинает работать с езернетом. В частности, получать с него новую прошивку и грузить ее в загрузочную флешку.

 

Возможность инициировать перезагрузку самой себя после окончания записи нового файла конфигурации во флеш (и еще куча функций в ту же степь) тоже в большинстве ПЛИС современных есть. Даже если нет, то это несложно организовать схемотехнически.

 

Всё, чего еще надо?

Изменено пользователем Koluchiy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ставите ПЛИС, которая умеет грузиться со SPI-FLASH (все более-менее новые).

Организовываете схемотехнику так, чтобы ПЛИС могла в рабочем режиме общаться со своей загрузочной флешкой.

После загрузки с флешки ПЛИС начинает работать с езернетом. В частности, получать с него новую прошивку и грузить ее в загрузочную флешку.

 

Возможность инициировать перезагрузку самой себя после окончания записи нового файла конфигурации во флеш (и еще куча функций в ту же степь) тоже в большинстве ПЛИС современных есть. Даже если нет, то это несложно организовать схемотехнически.

 

Всё, чего еще надо?

Спасибо!

На этом решении , скорее всего, и остановлюсь. В данном случае пугает только одно. Вот, если произошёл сбой при загрузки флэш через SPI интерфейс. Решить вопрос уже можно только через JTAG, а это, согласитесь, некоторые сложности (ехать к заказчику или объяснять ему где взять провод и импакт - сомнительное удовольствие). Интерфейс - Ethernet UDP плюсь собственный протокол передачи и контроля. Есть ли какие-нибудь принципиальные моменты программирования флэшики по SPI из ПЛИС? Кто-нибудь делал сам это? Спасибо!

 

И еще пару вопросов:

Умеет-ли грузиться с SPI-FLASH VIRTEX-4?

XCF32P - это SPI-Flash?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По большинству Ваших вопросов могу только отослать к документации - там всё есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот, если произошёл сбой при загрузки флэш через SPI интерфейс. Решить вопрос уже можно только через JTAG

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще пару вопросов:

Умеет-ли грузиться с SPI-FLASH VIRTEX-4?

XCF32P - это SPI-Flash?

 

1) нет

2) нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я делал, работает. документировано, правда, довольно скудно. в принципе Eth не обязателен, любой интерфейс подойдет.

небольшой вопрос вдогонку:

в an521 параллельная флэш описана.

в cyclone3 у последовательной флэши chipsel, datain, dataout и так сидят на пинах с io, а вот доступен ли потом после загрузки вывод dclk чтобы флэш перепрошить, или надо дополнительно завести клоки на какой-нибудь io пин?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Существует-ли какая-нибудь возможность загрузки конфигурации в ПЗУ (XCF32P) из ПЛИС (Virtex4 LX25)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, но достаточно кривая: надо JTAG присоединить к ПЛИС и писать через него. Проще поставить SPI через крошечную CPLD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Остановились на следующем варианте:

Изначально мы программируем флэшку в Спартане постоянной прошивкой в которой будет протокол обмена по LAN. При перезагрузки платы, прошивка конфигурирует Spartan. Далее оператор по LAN предает прошивку для Virtex 4, которую прошивает спартан. Имеет-ли место быть такой вариант? Есть-ли какие-нибудь подводные камни?

post-59981-1288034086_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...