Golikov A.
Aug 18 2015, 11:50
Всем привет!
Есть Xilinx sprtan6 и Altera cyclon IV. Испытываю непреодолимое желание изменить содержимое конфигурационных флэшек из самой FPGA.
1. Правильно ли я понимаю что в Xilinx после окончания конфигурации ножки идущие на память становятся доступны как пользовательские IO и я могу ими спокойно дергать читая, записывая флэш?
2. Правильно ли я понимаю что в Altera конфигурационная память доступна только через ALTASMI_PARALLEL и я не могу никаким образом получить самостоятельный доступ к конфигурационной флэш напрямую на уровне подергать ножки?
Заранее спасибо!
goodsoul
Aug 18 2015, 12:28
Цитата(Golikov A. @ Aug 18 2015, 14:50)

Всем привет!
Есть Xilinx sprtan6 и Altera cyclon IV. Испытываю непреодолимое желание изменить содержимое конфигурационных флэшек из самой FPGA.
1. Правильно ли я понимаю что в Xilinx после окончания конфигурации ножки идущие на память становятся доступны как пользовательские IO и я могу ими спокойно дергать читая, записывая флэш?
2. Правильно ли я понимаю что в Altera конфигурационная память доступна только через ALTASMI_PARALLEL и я не могу никаким образом получить самостоятельный доступ к конфигурационной флэш напрямую на уровне подергать ножки?
Заранее спасибо!
В четвертом циклоне ноги дергались с помощью cycloneii_asmi, если я ничего не путаю. Тема уже поднималась на форуме.
doom13
Aug 18 2015, 12:43
Цитата(Golikov A. @ Aug 18 2015, 14:50)

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

в качестве конфигурационной флэшки XCF128XFTG64C,
подключенная по параллельной шине.
В программе PowerPC была реализована функция приема новой прошивки по PCIe, сохранение ее в DDR2, а потом перепрошивки флэш.
Реально работает.
Думаю, аналогично можно что-то похожее реализовать и на Спартане6, вставив в проект, например Microblaze простенькой конфигурации.
Что за IP ядро можно использовать для этих целей (прошивки параллельной флэшки) с MicroBlaze?
Andrew Su
Aug 18 2015, 18: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 схема, но, наверное, можно и под спартан подправить.
Удачи.
doom13
Aug 18 2015, 19:11
Цитата(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.
Aug 19 2015, 05:26
Надо обойтись без микроблайзов и ниосов, и по возможности без IP корок.
В инструкции на ксалинкс как-то мутно написано, вроде как после конфигурации ножки что идут на флешку можно задействовать в проекте, буржуйские форумы это тоже упоминают, думал может кто-то уже делал, и скажет уверено - да так и есть! Ладно это проверю.
Ниос и flash_controller решительно не подходят, потому что этот контроллер как минимум за собой потянет шину авалон и прочие гадости. Ниос не желателен по архитектуре ваще%), практически строго запрещен. Нашел что есть мегафункция ALTASMI_PARALLEL подходящая для этих целей. Но она немного не удобная, много что сама делает, а хотелось бы больше контроля. видел где-то на враждебных форумах народ что-то писал про то что дергал ножки напрямую, но через что и как непонятно... Тоже надеялся на готовое пройденное кем то решение

Цитата
cycloneii_asmi,
спасибо почитаю что это, но что-то мне говорит что это и есть ALTASMI_PARALLEL или ее производная
Цитата
А самый простой вариант, если Вам пока не нужно удалённо обновлять прошивку, используйте Serial Flash Loader (см. an370).
ну а для чего же еще работать с конфигурационной флешкой то

?
doom13
Aug 19 2015, 06:01
Цитата(Golikov A. @ Aug 19 2015, 08:26)

ну а для чего же еще работать с конфигурационной флешкой то

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

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

так можно в ПЛИС реализовать только SPI, а реализацию протокола вынести уровнем выше. Есть ощущение что так оно будет лучше.
Т.е. в Вашей системе есть ещё и процессор, spi которого хотите пробросить через FPGA на конфигурационную флэшку? Что-то больно извращённый подход к решению вопроса. Тогда уж вешайте конфигурационный девайс на процессор и используйте режим загрузки Passive Serial Configuration, где процессор будет рулить обновлением ПО и загрузкой FPGA.
Golikov A.
Aug 19 2015, 11:39
У меня тоже мнение, что это немного не так как надо
Но интерфейс приходит на ПЛИС, так что ей и рулить процессом. А данные в этот интерфейс может загрузить процессор снаружи, потому такое вот решение...
Golikov A.
Aug 19 2015, 13:54
Если кто будет так же хотеть странного, то в настройках
ALTASMI_PARALLEL есть флажок
Disable dedicated Active Serial interface
который выводит наружу доступ к конфигурационным ножкам SPI, и можно уже городить самопальные времянки, и это уже документированная функция, ура
спасибо всем принявшим участие!:)
Я чего то не понимаю, в Циклоне 3 включаете разрешение использовать ножки как I/O и используйте их. Assignment->Divice->Divice and Pin Options->Dual-Purpose Pins. Квартус 8.1 даже симулирует их. В Квартусе 14.1 проект тоже собрался для Циклона 4. Не нужна ALTASMI_PARALLEL.
Golikov A.
Aug 19 2015, 18:16
не нашел такой опции, так даже лучше, наверное... проверю, спасибо!
А к ним сигналы также цепляются как к обычным ногам?
Да как к обычным, только нужно понимать что у вас там сидит конфигурационная EPCS (EEPROM).
И НИОСОМ дрыгая этими ножками я обновлял прошивку.
Почему не нашли, приложил картинки.
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
eugen_pcad_ru
Aug 20 2015, 19:15
Цитата(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.
Aug 21 2015, 07:07
Цитата
Да как к обычным, только нужно понимать что у вас там сидит конфигурационная EPCS (EEPROM).
И НИОСОМ дрыгая этими ножками я обновлял прошивку.
Почему не нашли, приложил картинки.
да спасибо, я не так силен в интерфейсах квартуса
BSACPLD
Aug 23 2015, 12:39
Цитата(Golikov A. @ Aug 19 2015, 12:44)

Пока я только видел предложения из исходников ALTASMI_PARALLEL выдрать подключение самого ASMI, и через него работать, но это типа не документировано.
А чем сам ALTASMI_PARALLEL не устраивает?
Там же вроде всё предельно просто.
Golikov A.
Aug 24 2015, 06:30
Просто, даже слишком. То есть запись, чтение, верификация и прочее превращены в отдельные законченные, самостоятельные операции и каждую надо поддержать (а у нас есть еще семейство ксалинкс, где такого нет, то есть там еще и дописать такое же). Опустившись на уровень обмена по SPI, мне надо поддержать команды опустить/поднять чипселект и передать/считать байт по SPI, причем для всех семейств. А вопрос формирования данных выноситься на уровень выше, в процессор, где делать это удобнее. Прошивка ПЛИС упрощается, и какие-бы функции работы с флэш не понадобились бы в будущем (защита секторов и так далее) нет шансов их не сделать.
Intekus
Jul 12 2017, 13: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 или же изобретать велосипеды на КА - ещё предстоит разбираться.
Andrew Su
Jul 12 2017, 14:15
Цитата(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
Jul 12 2017, 14:55
Цитата(Andrew Su @ Jul 12 2017, 17:15)

Добрый день.
Надеюсь по картинке понятно, как выбрать xcf128.
Или для SPI Flash
Выбрать получилось, благодарю! Правда, потребовался вариант с несколькими ревизиями.
А что по второму вопросу, на счёт записи особых регистров (USERCODE, например)? Есть они в Platform Flash XL?
И возник ещё один вопрос: при выбранном варианте iMpact запрашивает начальные адреса ревизий; их лучше указать ровно по границам четвертей, чтоб иметь возможность выбирать нужную ревизию исключительно двумя старшими битами адреса - верно?
Intekus
Aug 18 2017, 14: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, то, чтоб воспользоваться загрузкой в аварийную прошивку при сбое, необходимо выбрать другую схему конфигурирования (а значит - и физически переделать печатную плату)?
Maksim
Aug 18 2017, 15:53
Цитата(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, то, чтоб воспользоваться загрузкой в аварийную прошивку при сбое, необходимо выбрать другую схему конфигурирования (а значит - и физически переделать печатную плату)?
В слэйв режиме вы сами контролирует загрузку. Что хотите, то и грузите
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.