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

Надо мне на циклоне 4 реализовать механизм смены конфигураций и обновления прошивки. Читаю доку по altremote и вот что меня напрягает


Цитата
Factory configuration is the default configuration setup
.....
Upon power-up in remote update in the AP configuration scheme,
Cyclone IV devices load the default factory configuration located at the
following address:
boot_address[23:0] = 24'h010000 = 24'b1 0000 0000 0000 0000.


То есть в начале своей работы в режиме remote update ПЛИС грузиться не с 0 адреса? А как она блин узнает что она в этом режиме? А как мне делать файл прошивки? Когда делаешь файл прошивки для записи во флэш через Convert Progrmming File он что по умолчанию прошивку кладет в этот адрес? Или мне надо переводить ПЛИС руками в режим удаленной смены конфигураций?

Проясните этот момент кто в курсе, пожалуйста.
vadimuzzz
Цитата(Golikov A. @ Sep 22 2015, 15:09) *
То есть в начале своей работы в режиме remote update ПЛИС грузиться не с 0 адреса? А как она блин узнает что она в этом режиме?

это адрес по умолчанию для конфигурации в режиме "active parallel". 0-й адрес - в режиме "active serial"
Golikov A.
Да, спасибо.
После обеда я тоже дошел до этой мысли.

А что делает включение режима remote update в настройках устройства? задает какую-то внутреннюю логику на работу по циклу - загрузка, перезагрузка в фактори?
vadimuzzz
Цитата(Golikov A. @ Sep 22 2015, 16:14) *
задает какую-то внутреннюю логику на работу по циклу - загрузка, перезагрузка в фактори?

да, главным образом откат на factory в случае облома. часть логики все равно надо делать или на ниосе или каком другом автомате
Golikov A.
Да я почти все готов сделать руками sm.gif только бы понять точно как оно работает.
Если я не поставлю эту опцию, и дерну altremote в перезагрузку, она просто не начнет процесс или просто не вернется обратно в случае чего? Или не даст мне менять какие-то регистры в altremote?

И еще непонятно про user watchdog Он должен вернуть нас в фактори если что-то не получилось во время загрузки. Самый вероятный сценарий как я вижу, это если флешка пуста, а мы пытаемся грузиться. Так вот вопрос после того как приложение пользователя все же загрузиться, в нем надо будет этот таймер остановить? Или он только на время смены конфигурации?
сторожевой таймер включается после завершения конфигурации...
А на время конфигурации есть что-то подобное? То есть при старте с пустой флешки, как процесс остановить?


Кстати кто может еще раскроет тайну бита AnF, это который определяет апликайшин или фактори, его надо ставить до перезагрузки или сразу после? И как я понимаю именно этот бит определит куда полетит программа после следующего рывка сигнала перезагрузки, в фактори или дальше, да?
dxp
QUOTE (Golikov A. @ Sep 22 2015, 16:30) *
Да я почти все готов сделать руками sm.gif только бы понять точно как оно работает.
Если я не поставлю эту опцию, и дерну altremote в перезагрузку, она просто не начнет процесс или просто не вернется обратно в случае чего? Или не даст мне менять какие-то регистры в altremote?

Для использования RSU вам нужно включить в опциях проекта (где Device Options) режим REMOTE и в сам проект включить мегафункцию altremote (мегавизардом сгенерить надо). Потом надо будет написать свой прикладной код, который работает с этим модулем - считывает из него состояния, устанавливает режим работы.

QUOTE (Golikov A. @ Sep 22 2015, 16:30) *
И еще непонятно про user watchdog Он должен вернуть нас в фактори если что-то не получилось во время загрузки. Самый вероятный сценарий как я вижу, это если флешка пуста, а мы пытаемся грузиться. Так вот вопрос после того как приложение пользователя все же загрузиться, в нем надо будет этот таймер остановить? Или он только на время смены конфигурации?
сторожевой таймер включается после завершения конфигурации...
А на время конфигурации есть что-то подобное? То есть при старте с пустой флешки, как процесс остановить?

На Cyclone4 происходит так: сперва стартует прошивка по умолчанию, для Active Serial (AS) режима - это загрузка с адреса 0, это будет Factory загрузка, в чём можно убедиться, прочитать из модуля RSU состояние главного автомата RSU. В этом режиме Watchdog не работает. Тут уже пользовательская логика (ниос или специальный КА) программирует дальнейшие действия: настраивает адрес загрузки Application, опции, Watchdog (если надо) и даёт команду на переконфигурацию. После этого происходит загрузка прикладной конфигурации. Если во время конфигурации и/или после неё что-то не так, то происходит автоматический откат на Factory, в которой можно посмотреть статус и понять, по какой причине произошла перезагрузка в Factory.

Начало. Сперва грузим sof, который умеет программировать конфигурационную флешку (ну, или jic, но мы от него ушли), зашиваются factory и application образы.


QUOTE (Golikov A. @ Sep 22 2015, 16:30) *
Кстати кто может еще раскроет тайну бита AnF, это который определяет апликайшин или фактори, его надо ставить до перезагрузки или сразу после? И как я понимаю именно этот бит определит куда полетит программа после следующего рывка сигнала перезагрузки, в фактори или дальше, да?

Насколько помню, AnF в Cyclone4 нету.
Golikov A.
Вопрос:
что надо сделать для перезагрузки из рабочей апликейшен прошивки в фактори? Как я понял просто напросто дернуть тот же сигнал в altremote что и для перезагрузки из фактори в апликайшен. При этом адрес я уже не настраиваю, он сам полетит по 0, так?

Есть ли у меня какие-то способы передать данные между прошивками? Есть какой-то регистр который можно читать - писать и из фактори и из апликайшена, и он не меняется при переконфигурациях?

Цитата
Насколько помню, AnF в Cyclone4 нету.

По описанию походу есть, и даже просят его в 1 ставить а то какой-то статус будет не так читаться. И вот вопрос его надо ставить до перезагрузки прошивки или после?
То есть я его в фактори ставлю в 1 и дергаю сигнал начать, или в апликейшене я его ставлю в 1 чтобы при сигнале начать вернуться в фактори, а в фактори при этом он обязан быть 0, а то я не полечу куда хочу?


И еще битик проверка прошивка до загрузки как работает? После старта перезагрузки прошивка считается 1 раз, провериться и если хорошая начнет процесс еще раз? То есть фактически считает данные 2 раза и загрузка будет в 2 раза помедленнее?

Как определяется начало прошивки, пустая флешка сразу вернется в фактори или ее долго будут сначала читать?
doom13
Цитата(Golikov A. @ Sep 23 2015, 12:01) *
Вопрос:
что надо сделать для перезагрузки из рабочей апликейшен прошивки в фактори? Как я понял просто напросто дернуть тот же сигнал в altremote что и для перезагрузки из фактори в апликайшен. При этом адрес я уже не настраиваю, он сам полетит по 0, так?

Так и есть.
Цитата(Golikov A. @ Sep 23 2015, 12:01) *
Есть ли у меня какие-то способы передать данные между прошивками? Есть какой-то регистр который можно читать - писать и из фактори и из апликайшена, и он не меняется при переконфигурациях?

Только регистры ядра RSU.
Цитата(Golikov A. @ Sep 23 2015, 12:01) *
По описанию походу есть, и даже просят его в 1 ставить а то какой-то статус будет не так читаться. И вот вопрос его надо ставить до перезагрузки прошивки или после?
То есть я его в фактори ставлю в 1 и дергаю сигнал начать, или в апликейшене я его ставлю в 1 чтобы при сигнале начать вернуться в фактори, а в фактори при этом он обязан быть 0, а то я не полечу куда хочу?

Перед переходом в application устанавливаете данный бит и дёргаете реконфигурацию.
Цитата(Golikov A. @ Sep 23 2015, 12:01) *
И еще битик проверка прошивка до загрузки как работает? После старта перезагрузки прошивка считается 1 раз, провериться и если хорошая начнет процесс еще раз? То есть фактически считает данные 2 раза и загрузка будет в 2 раза помедленнее?

Загрузится factory, настроит ядро RSU и стартанёт application. Если application загрузился, он должен сбросить (держать в сбросе) WDT.
Цитата(Golikov A. @ Sep 23 2015, 12:01) *
Как определяется начало прошивки, пустая флешка сразу вернется в фактори или ее долго будут сначала читать?

Будет работать аналогично работе с битой прошивкой - останется в factory.


Golikov A.
Цитата
Так и есть.

ок, спасибо понятно

Цитата
Только регистры ядра RSU.

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

Цитата
Перед переходом в application устанавливаете данный бит и дёргаете реконфигурацию.

ок, спасибо понятно

Цитата
Загрузится factory, настроит ядро RSU и стартанёт application. Если application загрузился, он должен сбросить (держать в сбросе) WDT.

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

Цитата
Будет работать аналогично работе с битой прошивкой - останется в factory.

Это понятно, вопрос как быстро оно поймет что прошивка битая, у ксалинкса есть на этот счет вочь дог, не нашли начало за заданное число тактов, все - нет прошивки. А у альтеры, тоже самое, только задать число тактов нельзя? То есть не будет она шерстить всю флешку прежде чем догадается что прошивки нет?
doom13
Цитата(Golikov A. @ Sep 23 2015, 16:16) *
не про то, по описанию вочь дог если его запустить, начинает считать после того как перешли в юзер моде. Это у ксалинкса вочьдог на время поиска начала прошивки.
Тут есть еще бит проверить прошивку перед конфигурацией. То есть реконфиг запуститься, если есть исправная прошивка. Но как я понимаю это потребует 2 чтения, 1 раз чтение прошивки для проверки, 2 раз для реконфигурации. То есть если мне важнее быстрее начать, то лучше этот битик снять, и сразу пытаться грузиться, фактори прошивка все равно не может управлять, и смысла в ней находиться пока проверяется боевая для меня нет, так что быстрее перегружусь без проверки, а если боевой нет, то по ошибке вернусь в фактори. Правильно я понимаю процесс?

Похоже, что так, но этой опцией не пользовался.

Цитата(Golikov A. @ Sep 23 2015, 16:16) *
Это понятно, вопрос как быстро оно поймет что прошивка битая, у ксалинкса есть на этот счет вочь дог, не нашли начало за заданное число тактов, все - нет прошивки. А у альтеры, тоже самое, только задать число тактов нельзя? То есть не будет она шерстить всю флешку прежде чем догадается что прошивки нет?

Для WDT задаётся значение Watchdog Timeout Value, так что всё можно.
Golikov A.
Цитата
Для WDT задаётся значение Watchdog Timeout Value, так что всё можно.

он включиться только после окончания конфигурации. Он не поможет остановить процесс загрузки по отсутствию прошивки. Еще беспокоит что такого бита ошибки тоже нет, конечно он подпадает под ошибку CRC. Может в альтерах прошивка фиксированной длинны всегда и потому пустая и неверная одно и тоже?...

dxp
QUOTE (Golikov A. @ Sep 24 2015, 00:31) *
он включиться только после окончания конфигурации. Он не поможет остановить процесс загрузки по отсутствию прошивки. Еще беспокоит что такого бита ошибки тоже нет, конечно он подпадает под ошибку CRC. Может в альтерах прошивка фиксированной длинны всегда и потому пустая и неверная одно и тоже?...

В статусном регистре есть код причины перезагрузки в Factory. Там пять флагов. Если причина - отсутствие прошивки, будет один флаг, если по CRC, то другой, если по таймауту собаки - третий, если по команде софта - четвёртый и т.д. Т.ч. всё там есть.
Golikov A.
И какой код говорит о
Цитата
Если причина - отсутствие прошивки, будет один флаг,


И главное когда наступит это событие? То есть представьте флешку 128 МБит, и скорость чтения прошивки стандартную 20 МБит, то есть флэш прошустриться за 6 секунд. Так вот я в фактори когда вернусь, когда флэш дочитаю или раньше? В главе конфигурации описано про CRC на какие-то блоки, и общую. То есть есть шанс что я прилечу после первого блока. Хорошо бы знать его размер....

Force early CONF_DONE (cd_early) check - флажок опять же остается загадочным... второй раз перечитал описание, и опять у меня появляются другие толкования этого флага... кто знает правду что он делает, на пальцахsad.gif)?
dxp
QUOTE (Golikov A. @ Sep 24 2015, 13:52) *
И какой код говорит о


И главное когда наступит это событие? То есть представьте флешку 128 МБит, и скорость чтения прошивки стандартную 20 МБит, то есть флэш прошустриться за 6 секунд. Так вот я в фактори когда вернусь, когда флэш дочитаю или раньше? В главе конфигурации описано про CRC на какие-то блоки, и общую. То есть есть шанс что я прилечу после первого блока. Хорошо бы знать его размер....

Force early CONF_DONE (cd_early) check - флажок опять же остается загадочным... второй раз перечитал описание, и опять у меня появляются другие толкования этого флага... кто знает правду что он делает, на пальцахsad.gif)?

Сразу он отваливается - читает с указанного адреса, там заголовок должен быть, его нет, сразу ошибка.
Golikov A.
Цитата
Сразу он отваливается - читает с указанного адреса, там заголовок должен быть, его нет, сразу ошибка.

о, спасибо с этим понятно
vikS
Подскажите пож-ста, для arria v и epcq256 нужно ли переводить адресацию в блоке remote в 32 разрядный режим? Так как блок remote генерится с 32 шиной параметров. И еще, а какой адрес указывать? Непосредственно тот, в который была произведена запись? Не нужно его делить, какие то разряды отбрасывать?
Arria v микросхема A5, active serialx4. EPCQ 256
doom13
Цитата(vikS @ Sep 24 2015, 14:36) *

При генерации ядра есть выбор загрузочного девайса (если правильно помню), выбираете свой. В Page Select записываете адрес, с которого начинается application.
vikS
Это понятно, но когда программно даёшь команду на перезагрузку, в ней указываешь адрес для перезагрузки, который потом он попадает в блок remote. Просто в одном месте написано что в адрес нужно добавлять 8 нулей, в другом убрать 8 нулей
doom13
Цитата(vikS @ Sep 24 2015, 17:37) *
Это понятно, но когда программно даёшь команду на перезагрузку, в ней указываешь адрес для перезагрузки, который потом он попадает в блок remote. Просто в одном месте написано что в адрес нужно добавлять 8 нулей, в другом убрать 8 нулей

В регистр Page Select перед переходом из factory в application записывается адрес с которого начинается прошивка application в конфигурационном устройстве. Никаких преобразований над адресом делать не надо.
Golikov A.
для Arria V есть 2 варианта ремот апдейтера, с длинной адреса 24 или 32 бита. Из хэнд бука

Цитата
When you are using EPCQ 256, ensure that the application image address granularity
is 32’h00000100

что вы используете EPCQ 256 есть такой входной сигнал в модуль или параметр....
doom13
Цитата(Golikov A. @ Sep 24 2015, 22:45) *
что вы используете EPCQ 256 есть такой входной сигнал в модуль или параметр....

При генерации ядра задаётся тип конфигурационного устройства. В проекте QII и при конвертации файла прошивки нужно также задать правильные опции.
Golikov A.
это если ядро генерить, а можно же просто через мега фукнкцию напрямую, тогда проводок...
vikS
Спасибо за ответы! Механизм заработал
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.