Jump to content
    

Как записать в конфигурацию ПЛИС прошивку для NIOS? Пробовал - не получилось.

16 hours ago, Raven said:

Чтобы Quartus не занимался авто-перегенерацией SOPC, нужно в свойствах проекта удалить файл QSys

Так и есть. Удалил из проекта файл qsys, добавил sopc\nios_load1\synthesis\nios_load1.qip и обратил внимание что nios_load1.sopcinfo не создается в процессе компиляции вообще. Компиляция проходит успешно. Сгенерировал Qsys(откатился на 13версию) и nios_load1.sopcinfo появился где надо в папке sopc.

Спаисбо.

Share this post


Link to post
Share on other sites

4 hours ago, Димон Безпарольный said:

Откатился на 13 квартус. Думал будет работать с HEX файлами. Черта с два. 

Как бы понять - как нужно изменить HEX чтобы ему понравилось... 

Что сейчас в результате получилось? Можете опять проект выложить?

Вышеупомянутая проблема все еще проявляется?

Share this post


Link to post
Share on other sites

6 hours ago, Raven said:

Что сейчас в результате получилось? Можете опять проект выложить?

Вышеупомянутая проблема все еще проявляется?

С мелкими проблемами разобрался. TimeStamp стал нормальный. Попутно замечен глюк у программатора V2. При перегенерации железа у программатора не обновляется TimeStamp. Что тоже приводит к отказу программировать прошивку NIOS. Хотя в окне программатора пропиан новый, он все равно ищет старый. Перезапуск Eclipse исправляет эту ситуацию. Откатился в 13 квартус - этот хоть не вылетает при окрытии HEX. Просто ругается.

Дальше я должен заставить Квартус понимать СВОИ же HEX файлы и залить HEX в onchip RAM. Это будет первый вариант. Второй - EPCS + SDRAM. Третий(возможно) математика графики в OnChip, остальное в SDRAM.

Проект рабочий.

NIOS_LED_SDRAM.7z

Edited by Димон Безпарольный

Share this post


Link to post
Share on other sites

On 3/6/2025 at 12:55 PM, StewartLittle said:

Debug Unit

Если я правильно понял, это то что с уровнями. Для Nios II/e доступен только первый. Зашил S - там можно второй поставить - ничего не изменилось. Вид Flash Programmer все тот же.

Share this post


Link to post
Share on other sites

Сделал таки правильный HEX файл. Объяснять буду долго и нудно. Сделать то - то вменяемое с помощью

Quote

nios2-elf-objcopy -I srec -O ihex "E:\Q_Project_03_03\NIOS_LED_SDRAM\Software\NIOS_LED_SDRAM_APP\NIOS_LED_SDRAM_APP.elf" "E:\Q_Project_03_03\NIOS_LED_SDRAM\Software\NIOS_LED_SDRAM_APP\NIOS_LED_SDRAM_APP.hex"
 

не получается. HEX файл создается, но я вижу неправильную сроку:

Quote

:1080000034004200146E60083A6800080000000066

Впрочем я не понимал что она неправильная. В итоге нихрена не работает и квартус ведет себя как шланг под напором - есть это файл никак не хочет.

Файл созданный командой в shell 

Quote

elf2hex 0x0 0x9e54 --width=32 --record=4 --little-endian-mem --create-lanes=0 "E:\Q_Project_03_03\NIOS_LED_SDRAM\Software\NIOS_LED_SDRAM_APP\NIOS_LED_SDRAM_APP.elf" "E:\Q_Project_03_03\NIOS_LED_SDRAM\Software\NIOS_LED_SDRAM_APP\NIOS_LED_SDRAM_APP.hex"
 

имеет совсем другой порядок следования байт

Quote

:200000000042003408606E140800683A0000000000000000000000000000000000000000D6

И это действительно работает. Осталось разобраться с длиной строки этого файла чтобы избежать полтысячи варнингов:

Quote

Warning (113015): Width of data items in "NIOS_LED_SDRAM_APP.hex" is greater than the memory width. Wrapping data items to subsequent addresses. Found 640 warnings, reporting 10
    Warning (113009): Data at line (2) of memory initialization file "NIOS_LED_SDRAM_APP.hex" is too wide to fit in one memory word. Wrapping data to subsequent addresses.
 

 

Share this post


Link to post
Share on other sites

25 minutes ago, Димон Безпарольный said:

чтобы избежать полтысячи варнингов

Делается это с помощью ключа --record=4. Итого правильная строка

Quote

elf2hex 0x08008000 0x0800cfff --width=32 --record=4 --little-endian-mem "E:\Q_Project_03_03\NIOS_LED_SDRAM\Software\NIOS_LED_SDRAM_APP\NIOS_LED_SDRAM_APP.elf"  "E:\Q_Project_03_03\NIOS_LED_SDRAM\Software\NIOS_LED_SDRAM_APP\NIOS_LED_SDRAM_APP.hex"
 

Все это можно сделать запуская mem_init.mk через Make Tagets -> Build. Но как это сделать я пока не нашел где написано. Может кто подскажет?

Share this post


Link to post
Share on other sites

On 3/9/2025 at 1:08 PM, Димон Безпарольный said:

Делается это с помощью ключа --record=4. Итого правильная строка

Все это можно сделать запуская mem_init.mk через Make Tagets -> Build. Но как это сделать я пока не нашел где написано. Может кто подскажет?

Я уже давал ссылку на статью, где описано, как правильно это сделать:

Описано в конце статьи.

Share this post


Link to post
Share on other sites

В общем, окончательно задолбавшись, перечитав весь интернет и форум Интел, решил задать вопросы. Тема прошла премодерацию и находится тут

 

Смысл в том чтобы я ни делал - код не грузится. Грузится только железо. Чего я только не встречал - в том числе и то что контроллер EPCS работает только с ниосами - F. Может кто чего путное ответит. Через столетие.

 

 

Edited by Димон Безпарольный

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...