Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с EPCS CycloneiV GX 150
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
torik
Возникла проблема - файлом .jic EPCS64 шьется без проблем.

Как только пытаюсь прошить ниос флеш програмером - дает ошибку. Через консоль ниоса - тоже. Привожу результат, мне непонятно что оно хочет.

Сопц система,на мой взгляд, собрана правильно, чай не первый раз...

Stewart Little
Цитата(torik @ Aug 10 2012, 14:15) *
Сопц система,на мой взгляд, собрана правильно, чай не первый раз...

И на старуху бывает проруха...
Проверьте, не забыли ли чего:
а) epsc_flash_controller
б) адрес сброса
в) jtag debug-модуль в процессорном ядре
г) залита ли аппаратная часть проекта в ПЛИС до попытки программирования EPCS
д) настройки BSP
и прочая, и прочая...
torik
а) epsc_flash_controller

Установлен

б) адрес сброса

на епцс контроллер

в) jtag debug-модуль в процессорном ядре

Есть, правда самый слабый ниос и, соответсвенно модуль уровня1. Тут нет ограничений?

г) залита ли аппаратная часть проекта в ПЛИС до попытки программирования EPCS

Залита, он даже пишет что сброс процессора ОК.

д) настройки BSP

И тут вроде все в порядке...

и прочая, и прочая...

А может в настройках проекта есть какая галка?

А вот че пишет ниосфлешпрограммер:

Код
Info: 10.08.2012 16:45:10 - (FINE) sof2flash: Starting


Info: Info: *******************************************************************
Info: Info: Running Quartus II Convert_programming_file
Info: Info: Command: quartus_cpf --no_banner --convert --device=EPCS128 --option=D:/tdesign/Projects/Chibis2/altera/vpr2/vpr2/flash/vpr2_epcs_flash_controller_0.opt D:/tdesign/Projects/Chibis2/altera/vpr2/vpr2/vpr2.sof D:/tdesign/Projects/Chibis2/altera/vpr2/vpr2/flash/vpr2_epcs_flash_controller_0.pof
Info: Info: Quartus II Convert_programming_file was successful. 0 errors, 0 warnings
Info:     Info: Peak virtual memory: 166 megabytes
Info:     Info: Processing ended: Fri Aug 10 16:45:13 2012
Info:     Info: Elapsed time: 00:00:03
Info:     Info: Total CPU time (on all processors): 00:00:03
Info: Info: *******************************************************************
Info: Info: Running Quartus II Convert_programming_file
Info: Info: Command: quartus_cpf --no_banner --convert D:/tdesign/Projects/Chibis2/altera/vpr2/vpr2/flash/vpr2_epcs_flash_controller_0.pof D:/tdesign/Projects/Chibis2/altera/vpr2/vpr2/flash/vpr2_epcs_flash_controller_0.rpd
Info: Info: Quartus II Convert_programming_file was successful. 0 errors, 0 warnings
Info:     Info: Peak virtual memory: 144 megabytes
Info:     Info: Processing ended: Fri Aug 10 16:45:15 2012
Info:     Info: Elapsed time: 00:00:02
Info:     Info: Total CPU time (on all processors): 00:00:01
Info: 10.08.2012 16:45:15 - (FINE) sof2flash: Done
Info: Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Info: Resetting and pausing target processor: OK
Info: Processor data bus width is 32 bits
Info: Looking for EPCS registers at address 0x00001800 (with 32bit alignment)
Info:   Initial values: 0001703A 04C00074 9801483A 9CFFF804 983FFD1E 0000203A
Info:   Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00001900 (with 32bit alignment)
Info:   Initial values: 92400237 4A40100C 483FFD26 90000135 92400237 4A40200C
Info:   Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00001A00 (with 32bit alignment)
Info:   Initial values: 108001C4 1004D0FA 002EE03A 003F9C06 002EE03A 003F9506
Info:   Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00001B00 (with 32bit alignment)
Info:   Initial values: 00000000 00000000 00000000 00000000 00000000 00000000
Info:   Not here: SPI_SLAVE_SEL has 0 valid bits (should be between 1 and 16)
Info: Looking for EPCS registers at address 0x00001C00 (with 32bit alignment)
Info:   Initial values: 00000000 00000000 00000260 00000000 00000000 00000001
Info:   Valid registers found
Info: EPCS signature is 0x00
Info: EPCS identifier is 0x000000
Info: No EPCS layout data - looking for section [EPCS-000000]
Info: Unable to use EPCS device
Info: Leaving target processor paused
Error: Error code: 8 for command: $SOPC_KIT_NIOS2/bin/nios2-flash-programmer "D:/tdesign/Projects/Chibis2/altera/vpr2/vpr2/flash/vpr2_epcs_flash_controller_0.flash" --base=0x1800 --epcs --accept-bad-sysid --device=1 --instance=0 '--cable=USB-Blaster on localhost [USB-0]' --program --verbose






Stewart Little
Вы писали, что шьете EPCS64, а флешпрограммер пишет про EPCS128.

Цитата(torik @ Aug 10 2012, 16:47) *
Есть, правда самый слабый ниос и, соответсвенно модуль уровня1. Тут нет ограничений?

Тут нету.

Цитата(torik @ Aug 10 2012, 16:47) *
А может в настройках проекта есть какая галка?

А какой режим конфигурации установлен для проекта в квартусе?
Какие установки для Dual-Purpose Pins?
Какая версия квартуса используется?
С какой доской работаете (со своей или с альтеровским китом)?
alexPec
Я бы еще проверил соединение ног флеши с ниосом.

Судя по всему он видит EPCS контроллер, но не может прочитать даже ID флешки.
torik
Цитата
Вы писали, что шьете EPCS64, а флешпрограммер пишет про EPCS128

Не знаю почему он так решил даже.

Цитата
А какой режим конфигурации установлен для проекта в квартусе?
Какие установки для Dual-Purpose Pins?
Какая версия квартуса используется?
С какой доской работаете (со своей или с альтеровским китом)?

Доска самодельная.
alexPec
Цитата(torik @ Aug 13 2012, 12:20) *
Не знаю почему он так решил даже.


Доска самодельная.

Незнай как у Вас, а у меня все ноги идущие на флешь сконфигурированы как "Regular IO" или что-то в этом роде, точно не помню. В топ-левел проекте цепляю их к СОПЦу, на EPCS контроллер. Иначе ругается в фиттере, что те ноги, которые идут на флешь, заняты.
torik
Попробовал настроить выводы как regular IO, тоже не помогло.

Может все-таки есть особенности у циклона4?

alexPec
Цитата(torik @ Aug 14 2012, 11:30) *
Попробовал настроить выводы как regular IO, тоже не помогло.

Может все-таки есть особенности у циклона4?

ХЗ, очень вряд ли. Ноги проверяли? Если не проверяли подцепление ног - посмотрите, мне кажется у Вас там что-то не то, у меня так:

СОПЦ----------НОГА ЧИПА
--------------------------------
dclk------------dclk
sce-------------flash_nce, ncso
sdo------------data1, asdo
data0--------- data0

Глупый вопрос: а на тайминги сопца не ругается? В SDC верно клоки указаны?
torik
Цитата
dclk------------dclk
sce-------------flash_nce, ncso
sdo------------data1, asdo
data0--------- data0

Принаться, я так и не удосужился прописать пины епцски в топлевеле, подключив к sopc. Попробую. Просто раньше я никогда не делал назначений этих пинов и все работало.

Цитата
Глупый вопрос: а на тайминги сопца не ругается? В SDC верно клоки указаны?

Тут вроде все нормально.
alexPec
Цитата(torik @ Aug 15 2012, 08:39) *
Принаться, я так и не удосужился прописать пины епцски в топлевеле, подключив к sopc. Попробую. Просто раньше я никогда не делал назначений этих пинов и все работало.


Тут вроде все нормально.


Похоже не у Вас одного... Сейчас собрал свой проект в квартусе 11 (в 9.1 был собран - дебажился, программировался без проблем в т.ч. ниос флешь программером). Все перепроверил - один в один с 9.1. Все дебажится, а вот программироваться не хочет sad.gif Только вот ошибка вообще не понятная:


Код
Info: 15.08.2012 23:20:37 - (FINE) sof2flash: Starting
Info: Info: *******************************************************************
Info: Info: Running Quartus II 32-bit Convert_programming_file
Info: Info: Command: quartus_cpf --no_banner --convert --device=EPCS128 --option=D:/altera_proj/research/rotator/flash/rotator_epcs_flash_controller_0.opt D:/altera_proj/research/rotator/rotator.sof D:/altera_proj/research/rotator/flash/rotator_epcs_flash_controller_0.pof
Info: Info: Quartus II 32-bit Convert_programming_file was successful. 0 errors, 0 warnings
Info:     Info: Peak virtual memory: 130 megabytes
Info:     Info: Processing ended: Wed Aug 15 23:20:41 2012
Info:     Info: Elapsed time: 00:00:04
Info:     Info: Total CPU time (on all processors): 00:00:04
Info: Info: *******************************************************************
Info: Info: Running Quartus II 32-bit Convert_programming_file
Info: Info: Command: quartus_cpf --no_banner --convert D:/altera_proj/research/rotator/flash/rotator_epcs_flash_controller_0.pof D:/altera_proj/research/rotator/flash/rotator_epcs_flash_controller_0.rpd
Info: Info: Quartus II 32-bit Convert_programming_file was successful. 0 errors, 0 warnings
Info:     Info: Peak virtual memory: 124 megabytes
Info:     Info: Processing ended: Wed Aug 15 23:20:44 2012
Info:     Info: Elapsed time: 00:00:03
Info:     Info: Total CPU time (on all processors): 00:00:03
Info: 15.08.2012 23:20:45 - (FINE) sof2flash: Done
Info: Reading override file "C:/altera/q11_1/nios2eds/bin/nios2-flash-override"
Info: Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Info: Resetting and pausing target processor: OK
Info: Reading System ID at address 0x000120E0: verified
Info: Processor data bus width is 32 bits
Info: Looking for EPCS registers at address 0x00011800 (with 32bit alignment)
Info:   Initial values: 0001703A 04C00074 9801483A 9CFFF804 983FFD1E 0000203A
Info:   Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00011900 (with 32bit alignment)
Info:   Initial values: 92400237 4A40100C 483FFD26 90000135 92400237 4A40200C
Info:   Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00011A00 (with 32bit alignment)
Info:   Initial values: 108001C4 1004D0FA 002EE03A 003F9C06 002EE03A 003F9506
Info:   Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00011B00 (with 32bit alignment)
Info:   Initial values: 00000000 00000000 00000000 00000000 00000000 00000000
Info:   Not here: SPI_SLAVE_SEL has 0 valid bits (should be between 1 and 16)
Info: Looking for EPCS registers at address 0x00011C00 (with 32bit alignment)
Info:   Initial values: 000000FF 000000FF 00000260 00000000 000000FF 00000001
Info:   Not here: reserved fields are non-zero
Info: No EPCS registers found: tried looking at addresses
Info:      0x00011800, 0x00011900, 0x00011A00, 0x00011B00 and 0x00011C00
Info: Leaving target processor paused
Error: Error code: 8 for command: $SOPC_KIT_NIOS2/bin/nios2-flash-programmer "D:/altera_proj/research/rotator/flash/rotator_epcs_flash_controller_0.flash" --base=0x11800 --epcs --sidp=0x120E0 --id=0x0 --timestamp=1344164824 --device=1 --instance=0 '--cable=USB-Blaster on localhost [USB-0]' --program --verbose


Тут же проверил эту же плату прошить через ниос флешь программер в 9.1 - все ок, шьется, потом после вкл. питания запускается.
Что-то видимо в эклипсе 11 криво (конечно руки не исключение), тут у коллеги тоже проблема тоже в эклипсе 11 - ниос дебагер пробует загрузить код в парал. флешь при дебаге и ругается что не получается...

ГУРУ, что Вы скажете ? Как лечить баги?
torik
Сегодня поборол лень, прописал пины в пинпланере - через консоль шьется без проблем.
alexPec
Цитата(torik @ Aug 21 2012, 10:00) *
Сегодня поборол лень, прописал пины в пинпланере - через консоль шьется без проблем.

Похвально! Спасибо за информацию. А у меня тогда что за хрень (предыдущий мой пост)?
torik
Попробуйте через консоль прошить.
FLTI
Цитата(alexPec @ Aug 13 2012, 13:08) *
Незнай как у Вас, а у меня все ноги идущие на флешь сконфигурированы как "Regular IO" или что-то в этом роде, точно не помню.
В топ-левел проекте цепляю их к СОПЦу, на EPCS контроллер. Иначе ругается в фиттере, что те ноги, которые идут на флешь, заняты.

Я тоже столкнулся с тем, что фиттер на это ругается.

А надо ли цеплять на на EPCS контроллер все ноги, идущие на EPCS? Похоже, что не надо, они цепляются Квартусом автоматически.
Вот что об этом написано в Embedded Peripherals IP User Guide, раздел 5. EPCS Serial Flash Controller Core.
Там сказано, что основной способ - это использовать dedicated pins как они есть, а не назначать их как "Regular IO":
The Altera EPCS configuration device connects to the FPGA through dedicated pins on the FPGA, not through general-purpose I/O pins.
In all Altera device families except Cyclone III and Cyclone IV, the EPCS serial flash controller core does not create any I/O ports on the top-level SOPC Builder system module.
If the EPCS device and the FPGA are wired together on a board for configuration using the EPCS device (in other words, active serial configuration mode), no further connection is necessary
between the EPCS serial flash controller core and the EPCS device
.
When you compile the SOPC Builder system in the Quartus II software, the EPCS serial flash controller core signals are routed automatically to the device pins for the EPCS device.


Если это действительно так, то у меня такой вопрос.
Я весь проект делаю в .bdf и из QSYS использую .bsf.
Как мне тогда правильно воспользоваться вышеприведённым абзацем из описания по EPCS Serial Flash Controller Core?
Просто оставить пины EPCS-контроллера не подключенными даже без подвода к ним символов Input и Output?
Нажмите для просмотра прикрепленного файла
И назначать ли в .qsf конкретные пины для контактов EPCS-контроллера? Но тогда ( как было сказано выше ) будет ругаться фиттер ....
Как правильно поступить?

А вот в альтернативном варианте с назначением как "Regular IO" действительно все ноги, идущие на EPCS, надо цеплять на EPCS контроллер:

You, however, have the option not to use the dedicated pins on the FPGA (active serial configuration mode) by turning off the respective parameters in the MegaWizard interface.
When this option is turned off or when the target device is a Cyclone III or Cyclone IV device, you have the flexibility to connect the output pins, which are exported to the top-level design, to any EPCS devices.
Perform the following tasks in the Quartus® II software to make the necessary pin assignments:
■ On the Dual-purpose pins page (Assignments > Devices > Device and Pin
Options), ensure that the following pins are assigned to the respective values:
■ Data[0] = Use as regular I/O
■ Data[1] = Use as regularr I/O
■ DCLK = Use as regular I/O
■ FLASH_nCE/nCS0 = Use as regular I/O
■ Using the Pin Planner (Assignments > Pins), ensure that the following pins are
assigned to the respective configuration functions on the device:
■ data0_to_the_epcs_controller = DATA0
■ sdo_from the_epcs_controller = DATA1,ASDO
■ dclk_from_epcs_controller = DCLK
■ sce_from_the_epcs_controller = FLASH_nCE


Именно этот вариант судя по всему и использовали alexPec и torik и проблем не было?
Как лучше поступить?
1-й вариант рекомендуется Альтерой как основной, но по нему есть вопросы.
2-й вариант рекомендуется Альтерой как вторичный, но по нему вроде бы всё ясно?
Вообщем, хотелось бы разобраться в этом вопросе.
И ещё, какой из этих 2-х вариантов подходит для случая, когда в EPCS хранится и конфигурационный файл для схемы AS, и программа для NIOS?

P.S. Напоминаю, что речь идёт о Cyclone IV.
vadimuzzz
контроллер EPCS, как компонент ниоса работает в user mode, поэтому ноги д.б. помечены как regular i/o, если используется одно устройство для хранения конфигурации ПЛИС и программы процессора.
пример qsf из рабочего проекта (тут не все dual-purpose пины относятся к EPCS, я их кучей выделил):
CODE

set_instance_assignment -name DATA0_PIN ON -to epcs_data0
set_instance_assignment -name SDO_PIN ON -to epcs_asdi
set_instance_assignment -name SCE_PIN ON -to epcs_cs_n
set_instance_assignment -name DCLK_PIN ON -to epcs_dclk

set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"

а в принципе, никто не запрещает флешку для программы ниоса повесить на любые ноги. просто смысла нет, раз она уже используется для хранения sof
FLTI
Цитата(vadimuzzz @ Oct 28 2013, 18:15) *
контроллер EPCS, как компонент ниоса работает в user mode, поэтому ноги д.б. помечены как regular i/o, если используется одно устройство для хранения конфигурации ПЛИС и программы процессора.
пример qsf из рабочего проекта (тут не все dual-purpose пины относятся к EPCS, я их кучей выделил):
а в принципе, никто не запрещает флешку для программы ниоса повесить на любые ноги. просто смысла нет, раз она уже используется для хранения sof


Правильно ли я Вас понял, что строки в .qsf:
CODE

set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_nCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"

из исходного состояния по умолчанию:
Нажмите для просмотра прикрепленного файла
делают
Нажмите для просмотра прикрепленного файла
?
То есть нужно сделать что-нибудь одно - или вручную в Assignments > Devices > Device and PinOptions выставить "USE AS REGULAR IO", или оставить там по умолчанию, но тогда в в .qsf задать их "USE AS REGULAR IO" ?

P.S. Почему-то Квартус сразу после начала компиляции выкидывает из .qsf строчку
set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"
Может быть потому что ранее в .qsf была строчка:
set_instance_assignment -name DATA0_PIN ON -to epcs_data0
в которой уже было DATA0?
vadimuzzz
инструкция:
Код
set_instance_assignment -name DATA0_PIN ON -to epcs_data0

говорит фиттеру, что нужно повесить пин epcs_data0 (или как вы его у себя в проекте назовете) на dedicated pin DATA0_PIN (это будет работать на любом кристалле, который поддерживает AS). ЕМНИП, именно она добавляется галочкой в настройках контроллера EPCS

а эта:
Код
set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"

позволяет обращаться к DATA0_PIN, как к обычному i/o, что необходимо для ниоса.

вы можете настроить эти пины и визуально, настройки будут сохранены в qsf. хотя в каком-то квартусе был такой косяк, он то ли не сохранял настройки в qsf, то ли портил их. поэтому править в файле, имхо, предпочтительнее - легче переносить настройки между проектами.
FLTI
Если вручную в Assignments > Devices > Device and PinOptions выставить "USE AS REGULAR IO", то они появятся в .qsf:
set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO"
set_global_assignment -name RESERVE_DCLK_AFTER_CONFIGURATION "USE AS REGULAR IO"

А если в Assignments > Devices > Device and PinOptions вручную не выставлять "USE AS REGULAR IO" , а задать все 5 вышеперечисленных строчек вручную в .qsf, то строка
set_global_assignment -name RESERVE_DATA0_AFTER_CONFIGURATION "USE AS REGULAR IO" в .qsf исчезает.
Возможно это особенность Q 12.1.
COMA
У меня была похожая беда, но потом подключил в QSYS вывод jtag_debug_module_reset NIOS-а к reset epcs_flash, и все стало шиться.
FLTI
Цитата(COMA @ Nov 1 2013, 13:33) *
У меня была похожая беда, но потом подключил в QSYS вывод jtag_debug_module_reset NIOS-а к reset epcs_flash, и все стало шиться.

Когда у Вас была проблема с прошивкой,то что было подключено к reset epcs_flash?
COMA
Был подключен только системный reset , общий для всех компонентов системы. ByteBlaster-ом шилось, nios flash programmer-ом не шилось.
FLTI
Цитата(COMA @ Nov 2 2013, 12:52) *
Был подключен только системный reset , общий для всех компонентов системы. ByteBlaster-ом шилось, nios flash programmer-ом не шилось.

То есть теперь к reset epcs_flash у Вас подключено два ресета: общий для всех компонентов системы и с вывода jtag_debug_module_reset NIOS-а?
COMA
Да, два ресета.
FLTI
Цитата(COMA @ Nov 2 2013, 13:27) *
Да, два ресета.

Поясните тогда пожалуйста вот что.
Если смотреть на графику соединений в QSYS, то получается, что если к reset epcs_flash у Вас подключено два ресета: общий для всех компонентов системы и с вывода jtag_debug_module_reset NIOS-а, то ресет с вывода jtag_debug_module_reset NIOS-а по графике QSYS окажется подключенным и к общему ресету для всех остальных компонентов системы, т.е jtag_debug_module_reset NIOS-а будет сбрасывать и все остальные компоненты системы.
Или это не так?
COMA
Я не могу ответить на это вопрос, т.к. не проверял будет ли jtag_debug_module_reset сбрасывать все остальные компоненты. Можно попробовать посмотреть RTL системы, посмотреть как соединятся два ресета. Возможно идет обидинение двух ресетов для компонента epcs_flash.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.