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

Есть Xilinx sprtan6 и Altera cyclon IV. Испытываю непреодолимое желание изменить содержимое конфигурационных флэшек из самой FPGA.

1. Правильно ли я понимаю что в Xilinx после окончания конфигурации ножки идущие на память становятся доступны как пользовательские IO и я могу ими спокойно дергать читая, записывая флэш?
2. Правильно ли я понимаю что в Altera конфигурационная память доступна только через ALTASMI_PARALLEL и я не могу никаким образом получить самостоятельный доступ к конфигурационной флэш напрямую на уровне подергать ножки?

Заранее спасибо!
goodsoul
Цитата(Golikov A. @ Aug 18 2015, 14:50) *
Всем привет!

Есть Xilinx sprtan6 и Altera cyclon IV. Испытываю непреодолимое желание изменить содержимое конфигурационных флэшек из самой FPGA.

1. Правильно ли я понимаю что в Xilinx после окончания конфигурации ножки идущие на память становятся доступны как пользовательские IO и я могу ими спокойно дергать читая, записывая флэш?
2. Правильно ли я понимаю что в Altera конфигурационная память доступна только через ALTASMI_PARALLEL и я не могу никаким образом получить самостоятельный доступ к конфигурационной флэш напрямую на уровне подергать ножки?

Заранее спасибо!


В четвертом циклоне ноги дергались с помощью cycloneii_asmi, если я ничего не путаю. Тема уже поднималась на форуме.
doom13
Цитата(Golikov A. @ Aug 18 2015, 14:50) *
2. Правильно ли я понимаю что в Altera конфигурационная память доступна только через ALTASMI_PARALLEL и я не могу никаким образом получить самостоятельный доступ к конфигурационной флэш напрямую на уровне подергать ножки?

Ещё для Ниос ядро epcs_flash_controller умеет писать/читать EPCS/EPCQ флэшку.
А самый простой вариант, если Вам пока не нужно удалённо обновлять прошивку, используйте Serial Flash Loader (см. an370).
Andrew Su
Добрый день Golikov A., еще раз.
Был реализован проект на базе Virtex5FX70T (внутри PowerPC), в качестве конфигурационной флэшки XCF128XFTG64C,
подключенная по параллельной шине.
В программе PowerPC была реализована функция приема новой прошивки по PCIe, сохранение ее в DDR2, а потом перепрошивки флэш.
Реально работает.
Думаю, аналогично можно что-то похожее реализовать и на Спартане6, вставив в проект, например Microblaze простенькой конфигурации.
С Альтерой не работал, советовать не берусь.
Удачи.
doom13
Цитата(Andrew Su @ Aug 18 2015, 20:39) *
в качестве конфигурационной флэшки XCF128XFTG64C,
подключенная по параллельной шине.
В программе PowerPC была реализована функция приема новой прошивки по PCIe, сохранение ее в DDR2, а потом перепрошивки флэш.
Реально работает.
Думаю, аналогично можно что-то похожее реализовать и на Спартане6, вставив в проект, например Microblaze простенькой конфигурации.

Что за IP ядро можно использовать для этих целей (прошивки параллельной флэшки) с MicroBlaze?
Andrew Su
Добрый день.
В XPS есть IP XPS Multi-Channel External Memory Controller. Сконфигурировать его так, чтобы его внешние выводы подошли для подключения
внешней конфигурационной флэш. Можно посмотреть в разделе SelectMAP Configuration Interface файла ug380.pdf (Spartan-6 FPGA Configuration User Guide)
и на стр.10 файла ds617.pdf (Platform Flash XL High-Density Configuration and Storage Device), там правда для Virtex5 схема, но, наверное, можно и под спартан подправить.
Удачи.
doom13
Цитата(Andrew Su @ Aug 18 2015, 21:57) *
Добрый день.
В XPS есть IP XPS Multi-Channel External Memory Controller. Сконфигурировать его так, чтобы его внешние выводы подошли для подключения
внешней конфигурационной флэш. Можно посмотреть в разделе SelectMAP Configuration Interface файла ug380.pdf (Spartan-6 FPGA Configuration User Guide)
и на стр.10 файла ds617.pdf (Platform Flash XL High-Density Configuration and Storage Device), там правда для Virtex5 схема, но, наверное, можно и под спартан подправить.
Удачи.

Спасибо, посмотрю. Думаю, скоро должно понадобиться, но интересно это применительно к Virtex 7 и Vivado 2015.x.
Golikov A.
Надо обойтись без микроблайзов и ниосов, и по возможности без IP корок.

В инструкции на ксалинкс как-то мутно написано, вроде как после конфигурации ножки что идут на флешку можно задействовать в проекте, буржуйские форумы это тоже упоминают, думал может кто-то уже делал, и скажет уверено - да так и есть! Ладно это проверю.

Ниос и flash_controller решительно не подходят, потому что этот контроллер как минимум за собой потянет шину авалон и прочие гадости. Ниос не желателен по архитектуре ваще%), практически строго запрещен. Нашел что есть мегафункция ALTASMI_PARALLEL подходящая для этих целей. Но она немного не удобная, много что сама делает, а хотелось бы больше контроля. видел где-то на враждебных форумах народ что-то писал про то что дергал ножки напрямую, но через что и как непонятно... Тоже надеялся на готовое пройденное кем то решениеsm.gif

Цитата
cycloneii_asmi,

спасибо почитаю что это, но что-то мне говорит что это и есть ALTASMI_PARALLEL или ее производная

Цитата
А самый простой вариант, если Вам пока не нужно удалённо обновлять прошивку, используйте Serial Flash Loader (см. an370).

ну а для чего же еще работать с конфигурационной флешкой тоsm.gif?
doom13
Цитата(Golikov A. @ Aug 19 2015, 08:26) *
ну а для чего же еще работать с конфигурационной флешкой тоsm.gif?

Ну из первого поста этого не следует (что нужно удалённое обновление ПО), ясно только, что хотите залить новую прошивку в конфигурационный девайс. Вот и ответ - можно залить/считать через JTAG (используем Serial Flash Loader). Если нужно удалённо обновлять ПО, тогда варианта два:
1) EPCS Flash Controller + Nios II
2) Ядро ASMI
Maksim
Для Spartan-6 параллельная и последовательная флэш доступна после загрузки. Пишите свой проект и работайте с ними.
Golikov A.
Цитата
Испытываю непреодолимое желание изменить содержимое конфигурационных флэшек из самой FPGA.

JTAG не подходит...


Цитата
для Spartan-6 параллельная и последовательная флэш доступна после загрузки. Пишите свой проект и работайте с ними.

Ага спасибо, принято!


Цитата
1) EPCS Flash Controller + Nios II
2) Ядро ASMI

1. не подходит из-за ниоса
2. Насколько я пока нарыл ASMI не документировано, документирован только верхний уровень ALTASMI_PARALLEL, вы его имели ввиду, или все-же есть где то официальные доки на ASMI?
doom13
Цитата(Golikov A. @ Aug 19 2015, 11:04) *
2. Насколько я пока нарыл ASMI не документировано, документирован только верхний уровень ALTASMI_PARALLEL, вы его имели ввиду, или все-же есть где то официальные доки на ASMI?

Имел ввиду его, но чем оно Вас не устраивает? Если хотите отказаться от IP, то надо получить доступ к ногам (должна быть настройка, сейчас не вспомню), а там реализуете SPI и протокол общения из документации на флэшку. Но зачем это?
Golikov A.
так можно в ПЛИС реализовать только SPI, а реализацию протокола вынести уровнем выше. Есть ощущение что так оно будет лучше.

Пока я только видел предложения из исходников ALTASMI_PARALLEL выдрать подключение самого ASMI, и через него работать, но это типа не документировано.
doom13
Цитата(Golikov A. @ Aug 19 2015, 11:44) *
так можно в ПЛИС реализовать только SPI, а реализацию протокола вынести уровнем выше. Есть ощущение что так оно будет лучше.

Т.е. в Вашей системе есть ещё и процессор, spi которого хотите пробросить через FPGA на конфигурационную флэшку? Что-то больно извращённый подход к решению вопроса. Тогда уж вешайте конфигурационный девайс на процессор и используйте режим загрузки Passive Serial Configuration, где процессор будет рулить обновлением ПО и загрузкой FPGA.
Golikov A.
У меня тоже мнение, что это немного не так как надо sm.gif
Но интерфейс приходит на ПЛИС, так что ей и рулить процессом. А данные в этот интерфейс может загрузить процессор снаружи, потому такое вот решение...
Golikov A.
Если кто будет так же хотеть странного, то в настройках
ALTASMI_PARALLEL есть флажок
Disable dedicated Active Serial interface
который выводит наружу доступ к конфигурационным ножкам SPI, и можно уже городить самопальные времянки, и это уже документированная функция, ура

спасибо всем принявшим участие!:)
tvcam
Я чего то не понимаю, в Циклоне 3 включаете разрешение использовать ножки как I/O и используйте их. Assignment->Divice->Divice and Pin Options->Dual-Purpose Pins. Квартус 8.1 даже симулирует их. В Квартусе 14.1 проект тоже собрался для Циклона 4. Не нужна ALTASMI_PARALLEL.
Golikov A.
не нашел такой опции, так даже лучше, наверное... проверю, спасибо!
А к ним сигналы также цепляются как к обычным ногам?
tvcam
Да как к обычным, только нужно понимать что у вас там сидит конфигурационная EPCS (EEPROM).
И НИОСОМ дрыгая этими ножками я обновлял прошивку.
Почему не нашли, приложил картинки.
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
eugen_pcad_ru
Цитата(Andrew Su @ Aug 18 2015, 21:39) *
Добрый день Golikov A., еще раз.
Был реализован проект на базе Virtex5FX70T (внутри PowerPC), в качестве конфигурационной флэшки XCF128XFTG64C,
подключенная по параллельной шине.
В программе PowerPC была реализована функция приема новой прошивки по PCIe, сохранение ее в DDR2, а потом перепрошивки флэш.
Реально работает.
Думаю, аналогично можно что-то похожее реализовать и на Спартане6, вставив в проект, например Microblaze простенькой конфигурации.
С Альтерой не работал, советовать не берусь.
Удачи.

2Andrew Su:
Virtex5FX70T и XCF128XFTG64C были в одной JTAG-цепочке? Служебными ножками ПЛИС дергала при записи в XCF?
Golikov A.
Цитата
Да как к обычным, только нужно понимать что у вас там сидит конфигурационная EPCS (EEPROM).
И НИОСОМ дрыгая этими ножками я обновлял прошивку.
Почему не нашли, приложил картинки.

да спасибо, я не так силен в интерфейсах квартусаsm.gif
BSACPLD
Цитата(Golikov A. @ Aug 19 2015, 12:44) *
Пока я только видел предложения из исходников ALTASMI_PARALLEL выдрать подключение самого ASMI, и через него работать, но это типа не документировано.

А чем сам ALTASMI_PARALLEL не устраивает?
Там же вроде всё предельно просто.
Golikov A.
Просто, даже слишком. То есть запись, чтение, верификация и прочее превращены в отдельные законченные, самостоятельные операции и каждую надо поддержать (а у нас есть еще семейство ксалинкс, где такого нет, то есть там еще и дописать такое же). Опустившись на уровень обмена по SPI, мне надо поддержать команды опустить/поднять чипселект и передать/считать байт по SPI, причем для всех семейств. А вопрос формирования данных выноситься на уровень выше, в процессор, где делать это удобнее. Прошивка ПЛИС упрощается, и какие-бы функции работы с флэш не понадобились бы в будущем (защита секторов и так далее) нет шансов их не сделать.
Intekus
Возникла задача, похожая на сформулированную автором темы.
А именно: заливать в Xilinx Plastform Flash XL прошивку для Virtex 5, действуя из самой ПЛИС через штатные ноги связи со флэш (подключение в режиме slave SelectMAP). JTAG при этом доступен только до ПЛИС, но не до флэш.
Посему, вопросы:
1) Как вообще сгенерировать mсs-файл для Platform Flash XL? В Impact 14.7 всё так, как описано в UG161, список доступных устройств заканчивается xcf32, xcf128 там просто нет.
2) В UG161 (Xilinx Platform Flash PROM User Guide) описано множество специальных регистров во флэш, которые нужно записывать при записи в неё прошивки. А в DS617 (на саму Platform Flash XL) они не упоминаются. Нужно ли что-то кроме самой прошивки записывать в исходно чистую флэш, чтоб с неё загрузиться?

С тем, использовать ли Microblaze + LogiCORE IP XPS Multi-channel External Memory Controller или же изобретать велосипеды на КА - ещё предстоит разбираться.
Andrew Su
Цитата(Intekus @ Jul 12 2017, 16:04) *
Возникла задача, похожая на сформулированную автором темы.
А именно: заливать в Xilinx Plastform Flash XL прошивку для Virtex 5, действуя из самой ПЛИС через штатные ноги связи со флэш (подключение в режиме slave SelectMAP). JTAG при этом доступен только до ПЛИС, но не до флэш.
Посему, вопросы:
1) Как вообще сгенерировать mсs-файл для Platform Flash XL? В Impact 14.7 всё так, как описано в UG161, список доступных устройств заканчивается xcf32, xcf128 там просто нет.
2) В UG161 (Xilinx Platform Flash PROM User Guide) описано множество специальных регистров во флэш, которые нужно записывать при записи в неё прошивки. А в DS617 (на саму Platform Flash XL) они не упоминаются. Нужно ли что-то кроме самой прошивки записывать в исходно чистую флэш, чтоб с неё загрузиться?

С тем, использовать ли Microblaze + LogiCORE IP XPS Multi-channel External Memory Controller или же изобретать велосипеды на КА - ещё предстоит разбираться.


Добрый день.
1)
Надеюсь по картинке понятно, как выбрать xcf128.

Или для SPI Flash
Intekus
Цитата(Andrew Su @ Jul 12 2017, 17:15) *
Добрый день.
Надеюсь по картинке понятно, как выбрать xcf128.
Или для SPI Flash

Выбрать получилось, благодарю! Правда, потребовался вариант с несколькими ревизиями.

А что по второму вопросу, на счёт записи особых регистров (USERCODE, например)? Есть они в Platform Flash XL?
И возник ещё один вопрос: при выбранном варианте iMpact запрашивает начальные адреса ревизий; их лучше указать ровно по границам четвертей, чтоб иметь возможность выбирать нужную ревизию исключительно двумя старшими битами адреса - верно?
Intekus
Посмотрел генерируемый iMpact файл mcs - по-моему, там расположена вся необходимая информация, так что дополнительных записей в некие регистры, о которых я спрашивал ранее, не нужно.

Возник следующий вопрос, отчасти по теме дистанционного обновления прошивок.
В "Virtex-5 FPGA Configuration User Guide" (ug191.pdf) на стр. 153 внизу встретилась фраза "Fallback is disabled if AES is enabled and for Slave SelectMAP mode."
Верно ли я понял, что загрузка в аварийную прошивку в случае ошибки при загрузке основной (механизм "Fallback MultiBoot") недоступна в варианте конфигурации Slave SelectMAP (даже для нешифрованных прошивок)?
Т. е., если конфигурирование сделано по схеме Slave SelectMAP, то, чтоб воспользоваться загрузкой в аварийную прошивку при сбое, необходимо выбрать другую схему конфигурирования (а значит - и физически переделать печатную плату)?
Maksim
Цитата(Intekus @ Aug 18 2017, 17:02) *
Посмотрел генерируемый iMpact файл mcs - по-моему, там расположена вся необходимая информация, так что дополнительных записей в некие регистры, о которых я спрашивал ранее, не нужно.

Возник следующий вопрос, отчасти по теме дистанционного обновления прошивок.
В "Virtex-5 FPGA Configuration User Guide" (ug191.pdf) на стр. 153 внизу встретилась фраза "Fallback is disabled if AES is enabled and for Slave SelectMAP mode."
Верно ли я понял, что загрузка в аварийную прошивку в случае ошибки при загрузке основной (механизм "Fallback MultiBoot") недоступна в варианте конфигурации Slave SelectMAP (даже для нешифрованных прошивок)?
Т. е., если конфигурирование сделано по схеме Slave SelectMAP, то, чтоб воспользоваться загрузкой в аварийную прошивку при сбое, необходимо выбрать другую схему конфигурирования (а значит - и физически переделать печатную плату)?

В слэйв режиме вы сами контролирует загрузку. Что хотите, то и грузите
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.