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

Перед тем как делать большой проект лучше разобраться ху из ху. Вы путаете кислое с пресным.

Файл onchip_memory2_0.v является выхлопом генератора SOPC билдера и представляет из себя код нужной вам памяти на верилоге (иногда шифрованый). Собственно на его создании участие SOPC билдера заканчивается, дальше этот файл цепляет квартус и пытается компилировать.

Где-то внутри этого файла стоит ссылка на файл onchip_memory2_0.hex, либо любой другой, который вы укажете в SOPC билдере - см рисунок. При компиляции квартус пытается искать именно этот файл. А не какой либо другой. По умолчанию имя .hex файла равно имени .v файла и равно имени модуля в SOPC. Nios IDE по умолчанию генерит файл, прописанный в SOPC билдере. Просто сделайте чтобы они совпадали.

post-12763-1305536732_thumb.png

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


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

Assignments -> Settings -> Files

Первым делом туда полез

 

Перед тем как делать большой проект лучше разобраться ху из ху. Вы путаете кислое с пресным.

Файл onchip_memory2_0.v является выхлопом генератора SOPC билдера и представляет из себя код нужной вам памяти на верилоге (иногда шифрованый). Собственно на его создании участие SOPC билдера заканчивается, дальше этот файл цепляет квартус и пытается компилировать.

Где-то внутри этого файла стоит ссылка на файл onchip_memory2_0.hex, либо любой другой, который вы укажете в SOPC билдере - см рисунок. При компиляции квартус пытается искать именно этот файл. А не какой либо другой. По умолчанию имя .hex файла равно имени .v файла и равно имени модуля в SOPC. Nios IDE по умолчанию генерит файл, прописанный в SOPC билдере. Просто сделайте чтобы они совпадали.

Это я все понимаю. вот мои настройки ончипа. Но почему квартус просит файлы boot_rom.v и boot_rom.hex? Может, чтоб куартус забыл про boot_rom нужно сделать clearProject или rebuildAll? Но не могу такого найти в квартусе.

post-49045-1305536812_thumb.png

post-49045-1305537063_thumb.png

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

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


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

А в сопц билдере генерацию делали после всех изменений?

Что написано в самом .v файле? Я там нашел строку - the_altsyncram.init_file = "onchip_memory.hex",

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


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

А в сопц билдере генерацию делали после всех изменений?

Что написано в самом .v файле? Я там нашел строку - the_altsyncram.init_file = "onchip_memory.hex",

Конечно делал. Есть у меня такая строчка. Вот ещё что интересно - сделал поиск по всем файлам проекта текст "boot_rom.hex" .... вот что нашлось (см рис). В epcs_flash_controller.v нет boot_rom.hex, там найден epcs_flash_controller_boot_rom.hex

*.rpt - это выходные отчеты. *.qmsg - тоже. Почему квартус их просит? ???

post-49045-1305539473_thumb.png

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

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


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

*.rpt - это выходные отчеты. *.qmsg - тоже. Почему квартус их просит? ???

он не просит, а пишет туда о проблемах. не может найти требуемые файлы.

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


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

он не просит, а пишет туда о проблемах. не может найти требуемые файлы.
Ну это понятно, я и говорю выходные. Например вот что есть в файле topLevel.map.rpt

D:/Work/Quartus/testBoot/db/cmpr_ifc.tdf                                   ;
; D:/Work/Quartus/testBoot/db/cntr_p1j.tdf                      ; yes            ; Auto-Generated Megafunction           ; D:/Work/Quartus/testBoot/db/cntr_p1j.tdf                                   ;
; D:/Work/Quartus/testBoot/db/cmpr_efc.tdf                      ; yes            ; Auto-Generated Megafunction           ; D:/Work/Quartus/testBoot/db/cmpr_efc.tdf                                   ;
; boot_rom.v                                                    ; yes            ; Auto-Found Verilog HDL File           ; boot_rom.v                                                                 ;
; D:/Work/Quartus/testBoot/db/altsyncram_7gb1.tdf               ; yes            ; Auto-Generated Megafunction           ; D:/Work/Quartus/testBoot/db/altsyncram_7gb1.tdf                            ;
; boot_rom.hex                                                  ; yes            ; Auto-Found Memory Initialization File ; boot_rom.hex

Кто-нибудь может из этого понять от куда ноги растут? От куда boot_rom берётся?

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


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

Пробую свой загрузчик сделать по an458.pdf. Вроде все элементы танца сделал, всё залил - в итоге при включении борды моя прога не работает.

 

Решил постепенно понять что к чему. Создал простой проект хелловорд. разместил все секции в ончип. ресет ниоса на epcs контроллер (на загрузчик по умолчанию). вектор прерыванию на ончип. все собрал, залил в борду. Работает, т.е. при включении в консоль выхлапывает халоворд. Теперь нужно чтоб этот халоворд был аппаратно вшит в ончип. Т.е. делаю следующее

 

1 в SOPC билдере вектор ресета на ончип

2 указываю ончип инициализировать файлом boot_rom.hex

3 собираю ниос

Это хвост модификаций вашего проекта.

Отследите, где и какая память до сих пор ссылается на него.

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


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

Это хвост модификаций вашего проекта.

Отследите, где и какая память до сих пор ссылается на него.

как бы отследить то? В сопц ни кто не ссылается. По крайней мере в окошках не видно. Удалил всю папку dd - не помогло. по файлам текст поискал - нашел boot_rom только в выходных файлах. :(

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


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

как бы отследить то? В сопц ни кто не ссылается. По крайней мере в окошках не видно. Удалил всю папку dd - не помогло. по файлам текст поискал - нашел boot_rom только в выходных файлах. :(

Вкладка Tasks -> Analysis & Synthesis -> View Report

далее ищите RAM Summary. Вас должно интересовать, что за память и какой MIF используется.

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


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

Вкладка Tasks -> Analysis & Synthesis -> View Report

далее ищите RAM Summary. Вас должно интересовать, что за память и какой MIF используется.

Сегодня утром включил комп, запустил компиляцию - нету этих boot_rom больше. Решил всётаки разобраться что это было. переименовал ончипПамять в bootRom. переключил ресеты на bootRom, проверил чтоб инициализация была bootRom.hex. Пересобрал проект - вроде всё гладко. Пересобрал BSP и прогу для ниоса, сгенерировал новый hex, опять пересобрал в квартусе проект, залил sof и вуаля - всё работает и нет ворнингов. Ну вот оно вроде счатье. Удалил уже ни кому не нужные onchip_memory2_0.v и onchip_memory2_0.hex. При очередной сборке посыпались варнинги что нету onchip_memory2_0.hex. Опять тоже самое, опять какой-то хвост. опять все перепроверил, поползал по всем файлам, удалил папку dd, проверил репорт компиляции - не могу понять от куда квартус решил что ему нужно onchip_memory2_0.hex?

 

naliwator, сейчас в RAM Summary нет ни каких упоминаний про onchip_memory2_0.hex. Более того, квартус пытается найти их до того, как запустится Analysis & Synthesis, см рис. Походу баг в квартусе (10.1 + sp1). Попробуйте кто-нибудь переименовать ончип, сгенерировать новые v и hex, а потом удалить старые как не нужные.

 

Походу дальше нет смысла искать от куда эти ворненги, главное что борда заработала.

Всем спасибо за помощь!!!

post-49045-1305613005_thumb.png

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


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

naliwator, сейчас в RAM Summary нет ни каких упоминаний про onchip_memory2_0.hex. Более того, квартус пытается найти их до того, как запустится Analysis & Synthesis, см рис. Походу баг в квартусе (10.1 + sp1). Попробуйте кто-нибудь переименовать ончип, сгенерировать новые v и hex, а потом удалить старые как не нужные.

 

Походу дальше нет смысла искать от куда эти ворненги, главное что борда заработала.

Всем спасибо за помощь!!!

 

Попробовал.

1. Переименовал память и .hex файл, сгенерировал систему.

2. Удалил с компьютера .v и .hex файлы предшествовавшей памяти.

3. Запустил полную компиляцию. Действительно, компилятор пытается найти удалённый .hex файл.

4. Удалил bsp проект с диска и собрал всё заново.

5. Получил .hex файл с новым именем, приложил его к проекту.

6. Запустил компиляцию. Печально, компилятор снова ссылается на не существующий .hex файл и запускает полную компиляцию вместо умной.

7. Смотрю в отчёт компилятора и нахожу, что в настройках компиляции остаются не существующие файлы.

8. Пробую удалить назначения проекта (Remove Assignents) и запускаю компиляцию - безрезультатно.

9. Папка инкрементной компиляции может хранить списки соединений (netlist) успешных компиляций. Эту папку рекомендовано удалять, когда нужно вернуться к исходникам. Удаляю папку. Компилирую. Закрываю Quartus II.

10. Открываю Quartus II и проект. Жму компиляцию - умная компиляция работает, т.к. .hex файл не был изменён, то время - 0, предупреждений - нет.

11. Меняю .hex файл, подсовываю проекту. Жму компиляцию - умная компиляция работает, предупреждений - нет.

post-39551-1305621682_thumb.png

post-39551-1305621687_thumb.png

post-39551-1305621692_thumb.png

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


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

ага, тоже заработало. только в 10-ом пункте после удаления папки инкрементной_db во время компиляции по прежнему были ворненги. закрыл открыл квартус - пропали. Вчера чистил проект удалил db папку, возможно и inc_db тоже удалил, но не перезапускал квартус. Спасибо за помощь!!!

 

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


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

не могу найти описание векторов прерывания в NIOS II. Например в SOPC билдере в процессоре указал вектор сброса на onchip-memory со смещением 0х00. Адрес onchip-memory = 0х1810000. Контроллер прерываний не добавлял. Что разместится по адресам 0х1810000 ... 0х1810020? Есть у альтеры описание векторов прерывания?

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

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


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

не могу найти описание векторов прерывания в NIOS II.

 

Посмотрите здесь.

 

Например в SOPC билдере в процессоре указал вектор сброса на onchip-memory со смещением 0х00. Адрес onchip-memory = 0х1810000. Контроллер прерываний не добавлял. Что разместится по адресам 0х1810000 ... 0х1810020? Есть у альтеры описание векторов прерывания?

 

Всё верно, внутренний контроллер прерываний поддерживает до 32 источников прерываний. Приоритет 0 - наивысший.

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


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

Посмотрите здесь.

 

Посмотрел..... не нашел... Что разместится по адресам 0х1810000 ... 0х1810020? Конкретно.... по адресу 0х1810010 было значение 0х74. Потом стало 0х34. Что это значит? Как работает внутренний контроллер прерываний?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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