Перейти к содержанию
    

nios ii execute in place epcq

Здравствуйте. кто нибудь реализовывал выполнение кода nios ii из флешки?(epcq). я получаю нужный файлы по этим скриптам - 

но у меня ниос не работает, только плис конфигурируется. Еще смотрел в Embedded Design Handbook Intel, "Nios II Processor Application Executes In-Place from QSPI Flash" тоже ничего не работает. У меня cyclone iv, для него quad режим не доступен и он должен работать с флешкой по spi.

Изменено пользователем Niyaz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вектор сброса должен указывать на epcq_controller2. Смещение вектора сброса должно соответствовать размеру конфигурационного массива (прошивки) ПЛИС.

В BSP нужно взвести опции линкера allow_code_at_reset и  все enable_alt_load (если сегменты .bss, .rwdata и .rodata располагаются в ОЗУ) - результат проверяем на закладке Linker Scripts в BSP Editor'е. Сегмент .text должен располагаться в epcq_controller2,

остальные - в соответствии с установками линкера.

После компиляции в NiosII SBT выполнить mem_init_generate - в папке ..\software\<имя_проекта>\mem_init появится hex-файл исполняемого кода.

Затем в квартусе, в Convert Programming Files, из sof'а и полученного hex'а делаем jic (при добавлении файлов задаем соответствующие настройки, по значениям адресов контролируем правильность действий), заливаем этот jic в конфигуратор, и наслаждаемся результатом.

 

upd:

Под виндами, в Quartus Prime Standard Edition версии выше чем v18.1, перестал нормально работь mem_init_generate. После того, как для работы квартуса стали требоваться Win10 и WSL, все сильно испортилось.

Крайняя версия Quartus Prime Standard Edition, которая устойчиво работает под виндами - v18.1.

При этом под Linux работа новый версий (в т.ч. v20.1.1) нареканий не вызывает, mem_init_generate работет штатно.

 

Но, справедливости ради, нужно отметить, что никаких новшеств или улучшений ни у 19-х, ни у 20-х версий стандарта нет. Скорее наоборот - вот, например, для двадцатки уже нет DSP Builder'а...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

заработало, но на serial flash controlle, а на serial flash controller II quartus не компилирует на свои же файлы ругается что то про data_adapter_32_8 (18.1)

Изменено пользователем Niyaz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

короче ничего не работает теперь(использую epcq_controller2, так как она может работать на частоте 100Mhz)

почему адреса отличаются от указанного в qsys от адреса hex файла сгенерированного в mem_init_generate, кто нибудь знает?

у кого вообще успехи были в реализации выполнения кода из epcs/epcq(реально делали)?. В интсрукции от альтеры(интел) все просто, но не работает(только плис конфигурируется). Есть другая плата (https://aliexpress.ru/item/32832209582.html?spm=a2g0s.9042311.0.0.264d33edytBTcM&_ga=2.209700690.1528103014.1615800827-443644125.1606290620) От blackgold с ней иногда работает(при определнных значения адреса сброса). бред какой то

qsys(вектора сброса)

Spoiler

Capture.PNG.e9022cbf4f6c77906603b5807fc12f52.PNG

генрация jic файла

Spoiler

Capture2.thumb.PNG.bbe38e69edad8a32406cf21a71837ec5.PNG

настройки линкера

Spoiler

caputre3.thumb.PNG.c2b54a394a2a41ff81c8a60074a2e2d9.PNG

 

Изменено пользователем Niyaz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сразу навскидку - у Вас смещение эксепшен вектора какое-то подозрительное. Должно быть 0x00000020

С какого адреса у Вас OnChip RAM начинается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

54 minutes ago, StewartLittle said:

Сразу навскидку - у Вас смещение эксепшен вектора какое-то подозрительное. Должно быть 0x00000020

С какого адреса у Вас OnChip RAM начинается?

Здравствуйте. 0x00000020 должно быть если бы reset vector был на onchip( и был бы равен 0x00000020). Разве нет?

если выбрать absolute addressing, то не работает,

заработало когда выбрал relative addressing и выставить в моем случае 0x100000(в qsys 0x1f0000), а программа для создания jic файла сама допишет 0x1f0000(то есть прибавляет 0xf0000 и получается адресс как в qsys). не понял почему так, но работает пока

Spoiler

image.thumb.png.fef6732d7a1f52cbf7f3e143ec4ef0e3.png

 

Изменено пользователем Niyaz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Если не понимаешь, что именно ты делаешь - делай это тщательно!" (с) Законы Мерфи

Вы сперва разберитесь, в какой памяти у Вас должны находится сегмент .text, в какой - .rodata, .rwdata, .bss и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, StewartLittle said:

"Если не понимаешь, что именно ты делаешь - делай это тщательно!" (с) Законы Мерфи

Вы сперва разберитесь, в какой памяти у Вас должны находится сегмент .text, в какой - .rodata, .rwdata, .bss и т.п.

с этим все понятно text - flash, остальное onchip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...