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

Имеется плата с МК stm407 и MAXII на борту. Реализован бутлоадер для МК, хочется также обновлять прошивку ПЛИС.

Рассматриваются 2 варианта:
1. Загрузка прошивки через JTAG.
2. Использовать МК как внешнюю FLASH для загрузки заливания прошивки в ПЛИС по SPI каждый раз при подачи питания.

Какой вариант выбрать и где искать инфу? - Наверняка кто-нибудь сталкивался с подобной задачей.
zltigo
Вариант 2 - легко и просто.

aaarrr
Цитата(zltigo @ Mar 27 2016, 18:17) *
Вариант 2 - легко и просто.

Только не для MAX-II, а чего-нибудь более серьёзного. А для CPLD лучше уж написать прошивку так, чтобы не пришлось обновлять.
Sprite
Цитата(zltigo @ Mar 27 2016, 21:17) *
Вариант 2 - легко и просто.

В каком формате скармливать файл? .pof? Как производить верификацию?
agregat
Верификацию может проводить сама прошивка и выдавать какой нибудь меандр или контрольное слово на порт, а МК по нему определит, что да все работает.
zombi
Цитата(zltigo @ Mar 27 2016, 18:17) *
Вариант 2 - легко и просто.

01.gif

Цитата(Sprite @ Mar 27 2016, 18:11) *
1. Загрузка прошивки через JTAG.

Да, только так
Sprite
Цитата(zombi @ Mar 27 2016, 22:23) *
01.gif
Да, только так


Что будет с прошивкой если в момент загрузки вырубится питание? И где почитать информацию о JTAG-программировании и формате *.pof? Можно генерировать svf-файл, там все наглядно, но по размеру он на порядок больше(
agregat
Цитата(Sprite @ Mar 27 2016, 18:11) *
Какой вариант выбрать и где искать инфу? - Наверняка кто-нибудь сталкивался с подобной задачей.
Подойдет любой вариант, информация лежит на сайте производителя микросхем MAXII
eugen_pcad_ru
1 SVF подходит для JTAG-a.
2 Проще всего грузить по спиай файлом rbf.
3 Гарантированное число перепрошивок макса 100 раз (по факту может быть и больше)
4 В случае пропадания питания, зависит от характера пропадания. Например, если сначала заискрит (скажем в розетке) потом пропадет (в процессе прошивки). По плис можно и потерять/
Inanity
Sprite, вы идёте каким-то неоправданно сложным путём. Это новая разработка? Может стоит заменить CPLD на мелкую FPGA, а не изобретать свой JTAG программатор?
iosifk
Цитата(Sprite @ Mar 28 2016, 07:27) *
Можно генерировать svf-файл, там все наглядно, но по размеру он на порядок больше(

И кроме этого надо будет сделать в микроконтроллере интерпретатор языка svf и из svf гнать данные в jtag...
Вообще, если просмотрите svf файл, то там как раз и увидите последовательность действий при программировании...
Можно просто эту последовательность действий жестко реализовать на микроконтроллере...
Sprite
Цитата(Inanity @ Mar 28 2016, 17:04) *
Sprite, вы идёте каким-то неоправданно сложным путём. Это новая разработка? Может стоит заменить CPLD на мелкую FPGA, а не изобретать свой JTAG программатор?

Меня смущает лишь то, что я так ни разу не делал 05.gif
Да, наверное Вы правы, проще поставить FPGA и грузить прошивку по SPI с МК, но на момент прошивки ноги ПЛИС должны быть в определенном (не Z!) состоянии, это возможно?
Еще вопрос: как производить верификацию данных в случае передачи .rbf-файла по SPI?

Цитата(iosifk @ Mar 28 2016, 17:21) *
И кроме этого надо будет сделать в микроконтроллере интерпретатор языка svf и из svf гнать данные в jtag...

Формат достаточно понятный - только одно "но" - размер (
Программа на ПЛИС сейчас занимает ~15КБ, а размер svf-файла при этом ~510КБ - не хочется выделять такой кусок памяти в МК под хранение svf.
iosifk
Цитата(Sprite @ Mar 28 2016, 14:49) *
Формат достаточно понятный - только одно "но" - размер (
Программа на ПЛИС сейчас занимает ~15КБ, а размер svf-файла при этом ~510КБ - не хочется выделять такой кусок памяти в МК под хранение svf.


Еще раз, читайте внимательно...
svf-файл имеет текстовый формат. И к нему нужен плейер...
Но Вам не обязательно это делать. Вы можете из svf выдрать последовательность действий, а данные перевести в бинарный формат. И хранить уже не текстовые строки а двоичные данные. Это сократит объем файла вдвое, как минимум...
Посмотрите у меня на сайте есть статьи о jtag...
Sprite
Цитата(iosifk @ Mar 28 2016, 17:57) *
Посмотрите у меня на сайте есть статьи о jtag...

Спасибо, Иосиф Григорьевич, обязательно посмотрю!
Sprite
А если в качестве ПЛИС рассматривать MAX10? Как проще передавать файл прошивки с МК? (и чтобы файл при этом не был по размеру как .svf) Насколько мне известно, в ней можно организовать 2 области памяти и состоянием boot-ноги определять из какой грузить программу.
Corner
Цитата(Sprite @ Mar 29 2016, 16:37) *
А если в качестве ПЛИС рассматривать MAX10? Как проще передавать файл прошивки с МК? (и чтобы файл при этом не был по размеру как .svf) Насколько мне известно, в ней можно организовать 2 области памяти и состоянием boot-ноги определять из какой грузить программу.

Если у вас МАКС10, то зачем МК? Эта ПЛИС круче любого МК))) и загрузчик в нее запихивается, как основная конфигурация. Потом считываешь дополнительную и, если она правильная, просто делается рестарт с нее. И обновление аналогичное. В основной конфигурации делается тайм аут или сервисная ножка. И, если пришел запрос на обновление, просто заливаешь альтернативную конфигурацию новой. Другое дело, у Альтеры такого ядра готового нет yeah.gif
zltigo
QUOTE (aaarrr @ Mar 27 2016, 18:29) *
Только не для MAX-II, а чего-нибудь более серьёзного. А для CPLD лучше уж написать прошивку так, чтобы не пришлось обновлять.

Естественно, что для "MAX" такая загрузка вызывает удивление. Но тем неменее такой подход к делу позволит обновлять извне.


QUOTE (Sprite @ Mar 27 2016, 18:39) *
В каком формате скармливать файл? .pof? Как производить верификацию?

В .rbf
Про верификацию - смотрите описание ( CONF_DONE и nSTATUS ). Чип при загрузке котроль заливемого производит и в случае неуспеха сотояние ошибки выдает.
bugdesigner
Цитата(zltigo @ Apr 4 2016, 16:08) *
В .rbf

В случае с maxII rbf не поможет, только svf + плеер. Самый правильный путь - применить самую маленькую FPGA и загружать её с МК через passive serial. Для этого варианта нужен rbf. Плюс такого решения - прошивка FPGA может храниться в flash МК, что решает проблему апгрейда софта. Ещё один плюс - ресурсов у FPGA значительно побольше. Минусы - FPGA несколько дороже CPLD, и потребуются дополнительные источники питания ядра FPGA и PLL (у MaxII питание одно -3.3V), что опять таки увеличивает стоимость.

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