Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Nios-2-flash-programmer Error code: 8
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
en-valb
Всем доброго времени суток! Имеется плата DE0nano, пытаюсь зашить с помощью NIOS II flash programer простейший проект. Device and pin option все поставил в Use as regular I/O. Reset назначил на EPCS. В pin planer все выводы epcs контроллера назначил в соответствии со схемой DE0nano data0 на h2, dclk на h1, sce на d2, sdo на c1. Выдает ошибку Error code: 8 for command:.....
В чем может быть проблема?
Собирал этот же проект на своей проверенной плате с EP4CE40F23I7 и EPCS128 и все нормально прошивается.

Указание из usermanual тоже выполнил

Before programming the EPCS via nios-2-flash-programmer, users must add an EPCS patch file
nios-flash-override.txt into the Nios II EDS folder. The patch file is available in the folder
Demonstation\EPCS_Patch of DE0-Nano System CD. Please copy this file to the folder
[QuartusInstalledFolder]\nios2eds\bin (e.g. C:\altera\11.1\nios2eds\bin)


Info: 28.04.2017 14:00:08 - (FINE) sof2flash: Starting
Info: Info: *******************************************************************
Info: Info: Running Quartus Prime Convert_programming_file
Info: Info: Command: quartus_cpf --no_banner --convert --device=EPCS128 --option=D:/Projects/Quartus/Q15_1/Test_DEL/software/Hello_World_bsp/flash/test_epcs.opt D:/Projects/Quartus/Q15_1/Test_DEL/output_files/test.sof D:/Projects/Quartus/Q15_1/Test_DEL/software/Hello_World_bsp/flash/test_epcs.pof
Info: Info (210033): Memory Map File D:/Projects/Quartus/Q15_1/Test_DEL/software/Hello_World_bsp/flash/test_epcs.map contains memory usage information for file D:/Projects/Quartus/Q15_1/Test_DEL/software/Hello_World_bsp/flash/test_epcs.pof
Info: Info: Quartus Prime Convert_programming_file was successful. 0 errors, 0 warnings
Info: Info: Peak virtual memory: 255 megabytes
Info: Info: Processing ended: Fri Apr 28 14:00:10 2017
Info: Info: Elapsed time: 00:00:01
Info: Info: Total CPU time (on all processors): 00:00:01
Info: Info: *******************************************************************
Info: Info: Running Quartus Prime Convert_programming_file
Info: Info: Command: quartus_cpf --no_banner --convert D:/Projects/Quartus/Q15_1/Test_DEL/software/Hello_World_bsp/flash/test_epcs.pof D:/Projects/Quartus/Q15_1/Test_DEL/software/Hello_World_bsp/flash/test_epcs.rpd
Info: Info: Quartus Prime Convert_programming_file was successful. 0 errors, 0 warnings
Info: Info: Peak virtual memory: 248 megabytes
Info: Info: Processing ended: Fri Apr 28 14:00:13 2017
Info: Info: Elapsed time: 00:00:02
Info: Info: Total CPU time (on all processors): 00:00:02
Info: 28.04.2017 14:00:13 - (FINE) sof2flash: Done
Info: Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Info: Resetting and pausing target processor: OK
Info: Reading System ID at address 0x00012000: verified
Info: Processor data bus width is 32 bits
Info: Looking for EPCS registers at address 0x00011000 (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 0x00011100 (with 32bit alignment)
Info: Initial values: 93000237 6300080C 603FFD26 90000335 A8000C26 03010004
Info: Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00011200 (with 32bit alignment)
Info: Initial values: 02C02004 002EE03A 00000F06 90000335 4000683A 0017883A
Info: Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00011300 (with 32bit alignment)
Info: Initial values: 003FD006 5280040C 501496FA 701CD07A 729CB03A 843FFFC4
Info: Not here: reserved fields are non-zero
Info: Looking for EPCS registers at address 0x00011400 (with 32bit alignment)
Info: Initial values: 00000000 00000000 00000260 00000000 00000000 00000001
Info: Valid registers found
Info: EPCS signature is 0x16
Info: EPCS identifier is 0x014017
Info: No EPCS layout data - looking for section [EPCS-014017]
Info: Unable to use EPCS device
Info: Leaving target processor paused
Error: Error code: 8 for command: nios2-flash-programmer "D:/Projects/Quartus/Q15_1/Test_DEL/software/Hello_World_bsp/flash/test_epcs.flash" --base=0x11000 --epcs --sidp=0x12000 --id=0x123 --timestamp=1493369814 --device=1 --instance=0 '--cable=USB-Blaster on localhost [USB-0]' --program --verbose


en-valb
Да, забыл указать, использую Quartus II 15.1 Update 2. Подозреваю, что в строке "Info: Info: Command: quartus_cpf --no_banner --convert --device=EPCS128 --option......" не правильно указана флешка т.к. в DE0nano стоит EPCS64, а flash programer думает что EPCS128. Может есть какой то скрипт где настраивается тип флешпамяти. На моей плате все работает наверно потому, что там установлена EPCS128? Может кто даст ссылочку на похожую проблему, самостоятельно по этому поводу нагуглить ни чего не удалось, есть похожие темы да все не то.
doom13
Перегоните *.sof в *.jic и заливайте с помощью QII Programmer.
en-valb
Цитата(doom13 @ Apr 29 2017, 16:04) *
Перегоните *.sof в *.jic и заливайте с помощью QII Programmer.


Этого не достаточно, нужно кроме *.sof во флешку еще и *.elf уложить. А в качестве проверки *.jic делал и прошивал, все нормально.
_Anatoliy
Цитата(en-valb @ Apr 29 2017, 14:18) *
Этого не достаточно, нужно кроме *.sof во флешку еще и *.elf уложить.

А какие проблемы?
Код
set CFG_DEV_NAME="EPCS128"
set SFL_DEV_NAME="5AGXBA3D4"
set name_prj=my
@set name_sof=%name_prj%.sof
@set name_jic=%name_prj%.jic
@set full_path="d:\MyDesigns\2017\111\Quartus2\222\output_files"

@c:\altera\16.0\quartus\bin64\quartus_cdb %name_prj% -c %name_prj% --update_mif
@c:\altera\16.0\quartus\bin64\quartus_asm --read_settings_files=on --write_settings_files=off %name_prj% -c %name_prj%
@c:\altera\16.0\quartus\bin64\quartus_cpf -o "param_convert.opt" -c -d %CFG_DEV_NAME% -s %SFL_DEV_NAME% "%full_path%\%name_sof%" "%full_path%\%name_jic%"
@c:\altera\16.0\quartus\bin64\quartus_pgm -m JTAG -o pvbi;"%full_path%\%name_jic%"

Этим батником сразу и прошивайте.
p.s.
Ещё нужно выполнить Make targets/build/mem_init_generate
en-valb
Цитата(_Anatoliy @ Apr 29 2017, 17:13) *
А какие проблемы?
Код
set CFG_DEV_NAME="EPCS128"
set SFL_DEV_NAME="5AGXBA3D4"
set name_prj=my
@set name_sof=%name_prj%.sof
@set name_jic=%name_prj%.jic
@set full_path="d:\MyDesigns\2017\111\Quartus2\222\output_files"

@c:\altera\16.0\quartus\bin64\quartus_cdb %name_prj% -c %name_prj% --update_mif
@c:\altera\16.0\quartus\bin64\quartus_asm --read_settings_files=on --write_settings_files=off %name_prj% -c %name_prj%
@c:\altera\16.0\quartus\bin64\quartus_cpf -o "param_convert.opt" -c -d %CFG_DEV_NAME% -s %SFL_DEV_NAME% "%full_path%\%name_sof%" "%full_path%\%name_jic%"
@c:\altera\16.0\quartus\bin64\quartus_pgm -m JTAG -o pvbi;"%full_path%\%name_jic%"

Этим батником сразу и прошивайте.
p.s.
Ещё нужно выполнить Make targets/build/mem_init_generate


Интересный вариант, а я через свой скрипт делал
Код
#сменить директорию на директорию проекта
cd D:/Projects/Quartus/Q15_1/Test_DEL

#Ввести имя проекта аппаратной части .sof
HW_SOF_NAME="test"

#Ввести имя файла програмной части (основного ядра) .elf
SW_ELF_NAME_MAIN_CPU="new"

#Ввести имя файла програмной части (второстепенное ядро).elf
SW_ELF_NAME_SLAVE_CPU="new"

#Cмещение для программы второго ядра.
#Т.к. epcs у нас 128Мбит=16Мбайт, решили аппаратную часть и програму основного ядра располагать
#с нулевого адреса последовательно друг за другом.
#Решили дать им совместно 6Мбайт, а после этого уже располагать программу для второго  ядра.
#ETHERNET_OFFSET=0x600000


#преобразуем .sof в .flash
sof2flash --input=output_files/"$HW_SOF_NAME".sof --output=flash/"$HW_SOF_NAME"_sof.flash --epcs

#Основной проект. преобразуем из .elf в .flash
elf2flash --input=software/"$SW_ELF_NAME_MAIN_CPU"/"$SW_ELF_NAME_MAIN_CPU".elf --output=flash/"$SW_ELF_NAME_MAIN_CPU".flash --epcs --after=flash/"$HW_SOF_NAME"_sof.flash

#Второй проект. преобразуем из .elf в .flash
#elf2flash --input=software/"$SW_ELF_NAME_SLAVE_CPU"/"$SW_ELF_NAME_SLAVE_CPU".elf --output=flash/"$SW_ELF_NAME_SLAVE_CPU"_elf_with_offset.flash --epcs --#offset=$ETHERNET_OFFSET

#конвертация программного фйла .flash в .hex
nios2-elf-objcopy -I srec -O ihex flash/"$HW_SOF_NAME"_sof.flash flash/"$HW_SOF_NAME"_sof.hex

nios2-elf-objcopy -I srec -O ihex flash/"$SW_ELF_NAME_MAIN_CPU".flash flash/"$SW_ELF_NAME_MAIN_CPU".hex

#nios2-elf-objcopy -I srec -O ihex flash/"$SW_ELF_NAME_SLAVE_CPU"_elf_with_offset.flash  flash/"$SW_ELF_NAME_SLAVE_CPU"_elf_with_offset.hex


так все работает.

Но мне для программиста хочется как можно удобнее сделать чтобы он не парился со всем этим.
en-valb
_Anatoliy, в общем сделал еще два батника

my_script.bat
Код
"C:\altera\15.1\nios2eds\Nios II Command Shell.bat" sh D:/Projects/Quartus/Q15_1/Test_DEL/script/my_script.sh


и

download.bat
Код
set name_prj=test
@set name_jic=%name_prj%.jic
@set full_path="D:\Projects\Quartus\Q15_1\Test_DEL"

@c:\altera\15.1\quartus\bin64\quartus_cpf -c output_file.cof
@c:\altera\15.1\quartus\bin64\quartus_pgm -m JTAG -o pvbi;"%full_path%\%name_jic%"



Еще создал *.cof файл с помощью Convert Programing File.


output_file.cof
Код
<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
<cof>
    <eprom_name>EPCS64</eprom_name>
    <flash_loader_device>EP4CE22</flash_loader_device>
    <output_filename>test.jic</output_filename>
    <n_pages>0</n_pages>
    <width>1</width>
    <mode>7</mode>
    <hex_block>
        <hex_filename>D:/Projects/Quartus/Q15_1/Test_DEL/flash/new.hex</hex_filename>
        <hex_addressing>absolute</hex_addressing>
    </hex_block>
    <hex_block>
        <hex_filename>D:/Projects/Quartus/Q15_1/Test_DEL/flash/test_sof.hex</hex_filename>
        <hex_addressing>absolute</hex_addressing>
    </hex_block>
    <version>9</version>
    <create_cvp_file>0</create_cvp_file>
    <create_hps_iocsr>0</create_hps_iocsr>
    <auto_create_rpd>1</auto_create_rpd>
    <create_fif_file>0</create_fif_file>
    <options>
        <map_file>1</map_file>
    </options>
    <advanced_options>
        <ignore_epcs_id_check>2</ignore_epcs_id_check>
        <ignore_condone_check>2</ignore_condone_check>
        <plc_adjustment>0</plc_adjustment>
        <post_chain_bitstream_pad_bytes>-1</post_chain_bitstream_pad_bytes>
        <post_device_bitstream_pad_bytes>-1</post_device_bitstream_pad_bytes>
        <bitslice_pre_padding>1</bitslice_pre_padding>
    </advanced_options>
</cof>



Первый батник запускает на выполнение скрипт my_script.sh, который создает из *.sof и *.elf файлов *.hex файлы.

Второй создает с помощью команды quartus_cpf *.jic файл из *.hex и *.cof файлов и команда quartus_pgm программирует ПЛИС.



Объединить оба батника в один файл не получается т.к. после запуска и выполнения Nios II Command Shell последующие команды не выполняются. Буду думать дальше. Еще надо будет с путями и именами файлов продумать так чтобы эти батники можно было с минимальными телодвижениями из проекта в проект таскать. Но в любом случае запустил два батника и все готово и работает. _Anatoly, спасибо за подсказку!

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