Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Nios II 7.2 IDE (SP3)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Волощенко
Всем привет!
Завершив отладку на DK-NIOS-2S60N в режиме Debug, сделал Release и записал в EPCS64 конфигурацию для FPGA и программу для NiosII. Программирование прошло успешно. Далее устройство работает уже автономно, т.е. без Nios II 7.2 IDE.
Заметил отличия в работе, если в режиме Debug передача по Ethernet-100 была нормальной, то после старта и загрузки из EPCS, в обменах по Ethernet-100 начали появляться сбои. После возврата опять в режим Debug под загрузку прямо из IDE, все восстанавливается. Очевидно, что просто поменялся путь загрузки в FPGA и NiosII, а все настройки прежние.
В чем возможна причина?

В приложении лог консоли при программировании EPCS64 (то есть NiosII IDE ->Tools->Flash programer)
vadimuzzz
а грузится точно с EPCS? там в скрипте еще CFI шьется, точнее _не_ шьется. sof вроде нормально зашился.
Волощенко
Да, грузится в EPCS, как задано в настройках (см. второй лист в приложении, это для NiosII IDE ->Tools->Flash programer)
На первом листе SOPC, там контроллер EPCS, как и надо. А флашь CFI пока сама по себе, туда пока ничего не грузим.
vadimuzzz
а какого рода сбои? сама программа стартует? в принципе, времянки могли поплыть. в отладчике скорость заметно ниже.
можно еще отладчик запустить с программой, что в epcs зашита (не заливать в он-чип), посмотрите в опциях дебаггера
Волощенко
Программа стартует сразу после подачи питания, как и ожидается.
Времянки определяются Квартусом при компиляции и размещении. Режим Дебаг и Релиз используют один и тот же результат размещения, поэтому времянки не должны плыть.
Внешне все работает как надо, но появляются временные сбои, которые искажают мат.обработку от внутреннего имитатора.
Процессор работает с внешней периферией, ее много. Nios работает на 100МГц (fast) и похоже не сбоит.
Отладчик у меня не используется в режиме пошаговом или иначе, а только как UART-JTAG на консоль, да и то не всегда, а только в начале. Он на задержу не влияет.
vadimuzzz
я неправильно понял, я думал в (пошаговом) отладчике все работало(под времянками я имел в виду задержки, реализованные программно).
а если так:
1 - сделать Run/Release в ниос-иде, то работает?
или
2 - зашить debug-версию проекта в epcs - работает?
я, кстати, не делаю Release для проекта, только Debug(можно отладчик запустить), а вот system library-тот Release, для экономии
Волощенко
Предложенный Вами вариант 2 (зашить debug-версию проекта в epcs) прошел... Уже вроде как легче. Спасибо!!! smile.gif
Но непонятно стало, т.к. меня все предыдущие компиляторы учили, что зашивать то надо Release.
В первом варианте не нашел самого Run/Release в ниос-иде, по этому не проверял..

Попытался порыться в доках-истоках о Release/Debug в части Active Build Configuration, но нашел мало, только это:
1. (Это из хелпа) The Active Build Configuration submenu allows you to specify which build configuration to use when building your project.

2. (Из Nios II Development Kit Version 1.1 Errata - Software что на http://www.altera.com/support/ip/processor...0Configuration)
C/C++ Build property settings don't update correctly
On the C/C++ Build property page for a project, the Configuration dropdown list is used to select the active build configuration (e.g., release or debug). When the active configuration is changed, the rest of the window does not automatically update with the appropriate settings for Compiler Flags, Optimization Level, etc.
Workaround: To see the settings for a new configuration, manually deselect then reselect a Configuration setting. e.g., click on Preprocessor then General.
vadimuzzz
по идее, Release от Debug, отличаются наличием в последнем Debug-символов для отладки и флагами оптимизации. я заметил, что если в ниос-иде выбран вариант Release, то опция gcc -Os не влияет на размер выходного файла (эта опция выставляется неявно?). возможно, это как раз тот баг, что вы описали. под Run/Release я имел в виду выбрать конфигурацию Release, собрать проект и запустить его. программа заливается в он-чип или какая у вас память и ей передается управление. да, настройки билдера Debug/Release задаются для проекта и его System Library по отдельности, может тут проблема. имеет смысл в Preferences/(Build, кажется) выставить флажок "генерить objdump" - в папке Release(Debug) появится файл с *.objdump, в нем масса полезной инфы. еще стоит посмотреть в коде используемых драйверов наличие директив препроцессора типа "#ifdef DEBUG"
yura-w
Цитата(Волощенко @ Dec 3 2008, 13:51) *
Заметил отличия в работе, если в режиме Debug передача по Ethernet-100 была нормальной, то после старта и загрузки из EPCS

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

использую для в cycloneIII и epcs16 только Debug версию,
на Release работа с самодельными модулями прекращается,
но пока склоняюсь к кривизне своих модулей.
Волощенко
Цитата(yura-w @ Dec 6 2008, 19:22) *
Я так и сделал по совету от vadimuzzz
Перед этим потратил время на ненужный поиск ошибок в своем проекте. Возникает вопрос, а зачем тогда нужен Release, если и без него все работает?
Кстати, какой конкретно cycloneIII. Собираюсь в следующей разработке применять связку из трех cycloneIII с загрузкой от одного EPCS. При этом в двух FPGA планирую по одному NiosII. Как в таком случае все это будет загружаться, есть прецедент? До этого у меня была была связка из двух FPGA FLEX10K и одной EPCS, и работало в MaxII+plus.
yura-w
Цитата(Волощенко @ Dec 6 2008, 23:05) *
Я так и сделал по совету от vadimuzzz
извиняюсь, был невнимателен

Цитата
Возникает вопрос, а зачем тогда нужен Release, если и без него все работает?
даже в пределах разных настроек в Debug повышается быстродействие, а в Release видимо и подавно
(цифры не готов привести, при разных настройках в Debug, при работе со своей переферией, видел существенное изменение скорости обращения к ней)

Цитата
Кстати, какой конкретно cycloneIII
EP3C10E144C7N

Цитата
Собираюсь в следующей разработке применять связку из трех cycloneIII с загрузкой от одного EPCS. При этом в двух FPGA планирую по одному NiosII. Как в таком случае все это будет загружаться, есть прецедент?
с загрузкой 2 ниос в разные чипы из одного EPCS не сталкивался, описание такого способа в документации не помню, возможно ли это?
(хотите грузиться из одного EPCS для экономии средств? для EPCS доступны небольшие корпуса 8 pin SOIC)
id_gene
Цитата(Волощенко @ Dec 6 2008, 23:05) *
зачем тогда нужен Release, если и без него все работает?
Посмотрите ключи компилятора, ассемблер на выходе, размер кода. Release выдает оптимизированный код, работающий быстрее и, часто, меньший по объему.
Волощенко
Цитата(id_gene @ Dec 8 2008, 10:33) *
Посмотрите ключи компилятора, ассемблер на выходе, размер кода. Release выдает оптимизированный код, работающий быстрее и, часто, меньший по объему.

Вопрос поднят потому, что загрузив в EPCS программы для FPGA и NiosII, я столкнулся со сбоями. Они возникали для Release, а для Debug сбоев не было.
В частности, сбои связаны со смещениями байт в блоке данных udp-пакетов для Ethernet-100. Этим в моем проекте управляет NiosII (fast 100МГц), а контрольная сумма, в частности, вычисляется аппаратно. Кроме этого, проект имеет несколько FSM с частотой 100МГц, а также несколько Ram-банков внутри и вне FPGA. Я искал ошибки, в основном на предмет гонок, но ничего не нашел.
Мне многое не ясно в тонкостях Release<-> Debug, нужно еще разбираться, но важен результат, и с Debug в EPCS он достигнут. А вариант Release приводит к сбоям, кроме этого yura-w и vadimuzzz сообщают, что, видимо, по тем же причинам используют только Debug.
Да, и еще, все отладочные действия исключены из конечной EPCS-версии.
id_gene
Цитата(Волощенко @ Dec 8 2008, 11:14) *
В частности, сбои связаны со смещениями байт в блоке данных udp-пакетов для Ethernet-100.
...
важен результат, и с Debug в EPCS он достигнут. А вариант Release приводит к сбоям
По первому замечанию, если у вас так локализована ошибка, то ковыряйте в этом месте.

По второму - если у вас код, который исполняется быстрее, приводит к сбоям, то скорее всего, код написан неаккуратно, вы что-то упустили. Пока вы не найдете ошибку, вы не сможете гарантировать ее отсутствие даже в Debug варианте. Возможно, она будет возникать гораздо реже, или отсутствовать сейчас, но в будущем вы повысите частоту ядра или понизите скорость периферии (до ethernet-10 или где-то еще), и у вас опять пойдут гонки времен исполнения аппаратных и программых частей.
Есть еще малая вероятность ошибки компилятора.
yura-w
Цитата(id_gene @ Dec 8 2008, 15:27) *
гонки времен исполнения аппаратных и программых частей.
согласен, видимо это та причина, по которой я использую Debug,
надеюсь разобравшись с AN 351: Simulating Nios II Embedded Processor решение будет найдено(не хочется терять производительность)
Yoo
Цитата(Волощенко @ Dec 8 2008, 11:14) *

Подскажите, где описано как файл FPGA(sof) объединить с Nios(elf) для прошивки в EPCS?
Serhiy_UA
Overview of the Nios II Flash Programmer
Волощенко
Цитата(Yoo @ Dec 19 2008, 14:15) *
Подскажите, где описано как файл FPGA(sof) объединить с Nios(elf) для прошивки в EPCS?

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