en-valb 0 28 апреля, 2017 Опубликовано 28 апреля, 2017 · Жалоба Всем доброго времени суток! Имеется плата 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 0 29 апреля, 2017 Опубликовано 29 апреля, 2017 (изменено) · Жалоба Да, забыл указать, использую Quartus II 15.1 Update 2. Подозреваю, что в строке "Info: Info: Command: quartus_cpf --no_banner --convert --device=EPCS128 --option......" не правильно указана флешка т.к. в DE0nano стоит EPCS64, а flash programer думает что EPCS128. Может есть какой то скрипт где настраивается тип флешпамяти. На моей плате все работает наверно потому, что там установлена EPCS128? Может кто даст ссылочку на похожую проблему, самостоятельно по этому поводу нагуглить ни чего не удалось, есть похожие темы да все не то. Изменено 29 апреля, 2017 пользователем en-valb Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 29 апреля, 2017 Опубликовано 29 апреля, 2017 · Жалоба Перегоните *.sof в *.jic и заливайте с помощью QII Programmer. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
en-valb 0 29 апреля, 2017 Опубликовано 29 апреля, 2017 · Жалоба Перегоните *.sof в *.jic и заливайте с помощью QII Programmer. Этого не достаточно, нужно кроме *.sof во флешку еще и *.elf уложить. А в качестве проверки *.jic делал и прошивал, все нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 29 апреля, 2017 Опубликовано 29 апреля, 2017 · Жалоба Этого не достаточно, нужно кроме *.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 0 29 апреля, 2017 Опубликовано 29 апреля, 2017 · Жалоба А какие проблемы? 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 0 29 апреля, 2017 Опубликовано 29 апреля, 2017 · Жалоба _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, спасибо за подсказку! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться