Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка при прошивке EPCS
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
torik
Есть система, содержащая Nios. Мне необходимо прошить в EPCS как прошивку самой альтеры, так и программу для процессора.
В command shell делаю так:

Код
cd D:/altera/kvm2/kvm2/

sof2flash --epcs --input=kvm2.sof --output=kvm2_s.flash
nios2-flash-programmer --epcs --base=0x01001800 kvm2_s.flash
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_s.flash

elf2flash --epcs --after=kvm2_s.flash --input=software/Display1/Display1.elf --output=kvm2_e.flash
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_e.flash


Во-первых, как будет правильно делать verify:
Код
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_s.flash

или
Код
nios2-flash-programmer --epcs --base=0x01001800 kvm2_s.flash
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_s.flash

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

Во-вторых, возникает проблема - ошибка верификации (на рисунке).
Верификацию сперва не делал вовсе, но после прошивке EPCS не происходит даже конфигурирования альтеры, поэтому решил делать verify (а когда просто .sof льешь, так и процессор начинает работать, т.е. его прога в EPCS заливается нормально).
Первый вывод, который напрашивается - сдохла EPCSка. Однако, у меня сомнения - при прошивке чисто файла .jic конфигурирование альтеры происходит (естественно, программа ниоса не работает).

Как выяснить реальную причину?
Stewart Little
Начнем "от Адама"
Вопросы:
1. Имеет ли Ваш NiosII JTAG Debug модуль?
2. Имеется ли в системе EPCS Contoller ?
3. Указывает ли вектор сброса процессора на EPCS Controller?
4. Перед началом работы FlashProgrammer'a залита ли в ПЛИС конфигурация?
torik
На все вопросы ответ утвердительный.

Если можно, дайте мне ответ на первый мой вопрос - ключ verify приводит к тому, что происходит лишь сравнение, а не прошивка или к прошивке + проверке?
Stewart Little
Цитата(torik @ Jun 17 2010, 13:35) *
Если можно, дайте мне ответ на первый мой вопрос - ключ verify приводит к тому, что происходит лишь сравнение, а не прошивка или к прошивке + проверке?

Я, честно говоря, командной строкой не пользуюсь, но если верить описанию в первоисточнике : Nios II Flash Programmer User Guide, то получается, что ключ --program взведен по умолчанию, если указан входной файл (стр.3-3, таблица 3-2). Наличие ключа --verify не сбрасывает значения --program (там же), так что получается, что прошивка должна происходить в любом случае.
Попробуйте запустить FlashProgrammer с гуем, и посмотрите, какие команды при этом формируются.
torik
Код
Наличие ключа --verify не сбрасывает значения --program (там же), так что получается, что прошивка должна происходить в любом случае.

Я почему засомневался - когда нет ключа --verify, сперва идет erase, потом prograsm; если ключ --verify есть, то сразу идет проверка, без очистки и программирования.

Т.е. надо сперва зашить и проверить прошивку для альтеры (), затем зашить и проверить прогу для ниоса (ну вот я по-разному попробовал). Епт, пока старался, Вы поменяли сообщение wacko.gif

Да я с такой стати и пользуюсь этой консолью, что гуй жутко бесит меня и тупит.

В эклипсе гуевый FlashProgrammer тупо не работает, кнопки не жмутся...
В ниосIDE не только не работает, но до этого просто не дойти - за@ебывают ошибки при компиляции.

Win7, совместимость и запуск от администратора коренным образом проблемы не решают. Отдельный запуск FlashProgrammer тоже ничего не дал.
Stewart Little
Цитата(torik @ Jun 17 2010, 14:42) *
Win7, совместимость и запуск от администратора коренным образом проблемы не решают. Отдельный запуск FlashProgrammer тоже ничего не дал.

Про Win7 я вобще разговаривать не буду, пока альтеровская десятая версия не выйдет. Потому и гуй у Вас не работает, что бежите впереди паровоза.
torik
Вот бы под яблочный мак запустить квартус, альтиум и сопутствующие rolleyes.gif

А десятому ква уже пора бы появляться...
Stewart Little
Цитата(torik @ Jun 17 2010, 15:29) *
А десятому ква уже пора бы появляться...

5-го июля. Ждем-с

Цитата(torik @ Jun 17 2010, 10:42) *
Во-первых, как будет правильно делать verify:
Код
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_s.flash

или
Код
nios2-flash-programmer --epcs --base=0x01001800 kvm2_s.flash
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_s.flash

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

Поэкспериментировал с командной строкой. Да, все так как Вы и предполагали (а я был неправ laughing.gif ) - сперва надо прошить, и только потом верифицировать. Т.е. для прошивки с верификацией последовательность команд

nios2-flash-programmer --epcs --base=0x01001800 kvm2_s.flash
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_s.flash

является правильной. Ну и, соответственно, так же нужно действовать и при прошивке софтовой части.
Ну а сама верификация у меня работает как часы (под WinXP).
barabek
Цитата(torik @ Jun 17 2010, 17:42) *
Код
cd D:/altera/kvm2/kvm2/

sof2flash --epcs --input=kvm2.sof --output=kvm2_s.flash
nios2-flash-programmer --epcs --base=0x01001800 kvm2_s.flash
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_s.flash

elf2flash --epcs --after=kvm2_s.flash --input=software/Display1/Display1.elf --output=kvm2_e.flash
nios2-flash-programmer --verify --epcs --base=0x01001800 kvm2_e.flash

В приведенном Вами списке команд не видно прошивки самой программы. Только перевод из elf во flash и сразу верификация. И про --boot ни слова. Так надо? 
Stewart Little
Цитата(barabek @ Jun 17 2010, 17:15) *
В приведенном Вами списке команд не видно прошивки самой программы. Только перевод из elf во flash и сразу верификация. И про --boot ни слова. Так надо? 

Да, точно!
nios2-flash-programmer --epcs --base=0x01001800 kvm2_s.flash - это прошивка конфигурации.
Нужно еще "nios2-flash-programmer --epcs --base=0x01001800 kvm2_e.flash", и только потом верификация elf'а.
--boot для EPCS имхо не нужен, этим там копировщик занимается.
torik
Возвращаюсь к теме.
Доделал программу, решил прошить ее в EPCS-ку.
И снова тот же самолет:
- все нормально прошивается и проверяется (пробовал и через гуй в IDE). Но конфигурирования ПЛИС после включения-выключения питания вовсе не происходит. При этом заливка .sof через флешпрограммер запускает также и программу ниоса (т.е. она во флеше лежит нормально)
- однако, если залить чисто прошивку .jiс, то после включения ПЛИС нормально прошивается.

Не может ли каким-то образом происходить накладка программы ниоса и прошивки? Куда смотреть, как искать причину?
RYury
Цитата(torik @ Jun 23 2010, 16:27) *
Куда смотреть, как искать причину?

возможно пропущен ключ --after

ниже пример лога, генерируемого IDE FlashProgramm при заливке конфигурации и программы в EPCS:

CODE
#!/bin/sh
#
# This file was automatically generated by the Nios II IDE Flash Programmer.
#
# It will be overwritten when the flash programmer options change.
#

cd E:/Work_Quartus/OptoToEther/OptoToEther_Rev9.0/software/OptoToEther/Release

# Creating .flash file for the FPGA configuration
"$SOPC_KIT_NIOS2/bin/sof2flash" --epcs --input="E:/Work_Quartus/OptoToEther/OptoToEther_Rev9.0/topoptotoether.sof" --output="topoptotoether.flash"

# Programming flash with the FPGA configuration
"$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --epcs --base=0x01421800 "topoptotoether.flash"

# Creating .flash file for the project
"$SOPC_KIT_NIOS2/bin/elf2flash" --epcs --after="topoptotoether.flash" --input="OptoToEther.elf" --output="epcs_controller.flash"

# Programming flash with the project
"$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --epcs --base=0x01421800 "epcs_controller.flash"


torik
Ключ --after на месте (да и непосредстенно через Nios IDE прошивал, результат тот же). Я бы понял еще, если бы у меня загрузка sof по включению питания происходила, но не заводился процессор...
torik
Сейчас попробовал залить чисто sof:
Цитата
cd D:/altera/kvm2/kvm2/software/hello_world_0/Release/
sof2flash --epcs --input="D:/altera/kvm2/kvm2/kvm2.sof" --output="kvm2_s.flash"
nios2-flash-programmer --epcs --base=0x01001800 "kvm2_s.flash"

И... также конфигурирование не происходит (однако если запрограммировать jic, все нормально) - может чего не так с sof-файлом, с настройками?
vadimuzzz
Цитата(torik @ Jun 24 2010, 11:33) *

слить дамп после зашивания через jic и сравнить с тем, что sof2flash сгенерил
torik
Как это сделать? Зашил jic.
Код
nios2-flash-programmer --epcs --base=0x01001800 --read="kvm2_sofr.flash"

Считывает все содержимое EPCS-ки, как сравнивать с тем, что sof2flash сгенерил?

По идее, после заливки jic, логично бы сделать
Код
nios2-flash-programmer --verify --epcs --base=0x01001800 "kvm2_s.flash"

однако, результат проверки отрицательный, сразу же на нулевом адресе
RYury
Цитата(torik @ Jun 24 2010, 13:40) *
однако, результат проверки отрицательный, сразу же на нулевом адресе

а посмотрите, не перевернуты ли байты в слове и биты в байте (пример 0x00AA0055 и 0xAA005500) , либо что-то одно
torik
О каких байтах идет речь?
Я уже проклял все, перепробовал что только можно... А дело наверняка в какой-нибудь фигне.
vadimuzzz
Цитата(torik @ Jun 24 2010, 16:40) *
Как это сделать?

да прямо побайтно и сравнить. по логике: для jic и sof2flash используется один и тот же sof, различий в битстриме быть не должно (ну, м.б. содержимое on-chip разное). а какая версия квартуса?
torik
Ква 91.
Цитата
да прямо побайтно и сравнить.

файлы jic и .flash непохожи совсем по содержанию, как их вообще можно сравнивать, что в них является битстримом?

Стрелять-колотить! Взял другую плату со своей системой с ниосом, которая, доподлинно известно, работала. И на тебе - та же хрень происходит. Видимо это произошло после установки SP2.
RYury
файлы .flash записаны в формате Motorola SRecords (в инете должна быть инфа, что-то альтернативное Intel HEX)
в файле .jic сначала идёт заголовок, затем сам битстрим.
Внизу пример на картинке, но это для версии Quartus 8.1 При этом если сравнивать - то биты в байте перевернуты, т.е. 0x55 -> 0xAA
vadimuzzz
Цитата(torik @ Jun 24 2010, 19:32) *
файлы jic и .flash непохожи совсем по содержанию, как их вообще можно сравнивать, что в них является битстримом?

не, не сами файлы, а дампы флешки после прошития одним и другим.

хотя... http://www.alteraforum.com/forum/showthread.php?t=22441

похоже, вы правы
torik
Ну им не стыдно ли... винду седьмую нельзя, хотя уже давным давно пора было, а теперь вот, знаете ли, сервиспаки сюрпризы подкидывают.
vadimuzzz
наверное, это они так с нелицензионным софтом борятся - работать можно только при наличии контакта с их саппортом, просто лицензии уже мало smile.gif
COMA
Если у вас выведен отдельный разъем для прошивки флешки (AS), то можно все залить через этот разъем - и NIOS и программу для него.
torik
Проверил на SP1 - все прошивается и работает. Короче, SP2 виноват.
Цитата
Если у вас выведен отдельный разъем для прошивки флешки (AS), то можно все залить через этот разъем - и NIOS и программу для него.

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