Цитата(djhall @ Sep 7 2018, 12:36)
Так же не работает, хотя бы потому, что Reset vector offset не равен 0
Ну и что???
Давайте разбираться.
1. Какой именно контроллер EPCQ у вас в проекте используется?
Я использую "Serial Flash Controller II Intel FPGA IP".
2. Кто подставляет значение смещения Reset Vector Offset в настройках процессорного ядра - Вы сами или Platform Designer?
Здесь должно быть указано смещение, по которому в EPCQ'шке будет находится исполняемый код. Этот момент очень важен!!!
Рассчитать смещение можно, зная размер конфигурационного битстрима для используемого ПЛИС'а. У меня, например, использовался 10CL25YU256I7G, для него объем битстрима составляет 5,748,552 бит, т.е. конфигурация в EPCQ'шке будет занимать адреса от нуля до до 0x0AF6E9. Я укзываю смещение с запасом: 0x0B0000
3. Компилируем проект в NiosII SBT (Build Project) и затем создаем hex-файлы исполняемого кода: Make Targets - Build - mem_init_generate - Build.
При этом в папке проекта NiosII SBT (по умолчанию она называется ..\software\<имя_проекта_NiosII_SBT>, в поддиректории ..\mem_init создаются hex-файлы с исполняемым кодом.
Нас интересует тот, который называется epcq_controller2_0.hex !!!
Проверяем - стартовый адрес в этом hex-файле должен соответствовать смещению, указанному в векторе сброса процессора в Platform Designer'е.
Этот hex с помощью nios2-elf-objcopy перегоняем во flash.
Получить из sof и этого epcq_controller2_0.flash объединенные файлы flash, jic и bin - это уже дело техники.
Правда, тут есть один подводный камень - если Вы работаете с 10-ми семействами (Stratix 10, Arria 10, Cyclone 10), то при попытке конвертировать sof во flash будет выдаваться ошибка о том что в sof'е прописано неизвестное семейство ПЛИС. Это глюк текущей версии sof2flash, он имеется и в v17.1, и в v18.0.
Поэтому приходится применять трансректальный метод - сперва из sof'а получаем rpd, а затем из этого rpd - flash
Цитата
quartus_cpf -c --device=EPCQ32 -o auto_create_rpd=on -o rpd_little_endian=off firmware_data.sof firmware_data.pof
nios2-elf-objcopy -I binary -O srec --srec-forceS3 --srec-len 32 firmware_data_auto.rpd firmware_data.flash
Ну далее, как и раньше:
Цитата
cat firmware_data.flash epcq_controller2_0.flash > hw_sw_image.flash
nios2-elf-objcopy -I srec -O ihex hw_sw_image.flash hw_sw_image.hex
nios2-elf-objcopy -I srec -O binary hw_sw_image.flash hw_sw_image.bin
Вуаля!
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...