реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Boot start NIOS II, Жапутался))))
PeterD
сообщение Apr 2 2009, 13:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 26-10-07
Пользователь №: 31 743



Господа профессионалы. Прошу вашей помощи. Имею в наличие KIT DE1 c Cyclone II 2C20 на нем.
1. Мне хочется разобраться поподробней как стартует NIOS при подачи питания. Я так понимаю что сама программа может исполнятся где у годно и задаем мы это в свойствах библиотеки, а вот ее образ мы вынуждены хранить в ПЗУ.
Так вот Я не как не пойму структуру этого образа скажем для дизайна, когда у меня есть ОЗУ где будет исполнительный код, из EPCS `ки я хочу его при подачи питания скопировать. Но блин не как не пойму как мне сформировать это образ где будет и образ FPGA и софта. Или для того, что бы получить этот заветный один файл, нужно научится работать с командной строкой? Сейчас при компиляции у меня появляется проектный файл <имя проекта>.flash.
В Flash Programmer IDE я соответственно указываю в hardware файл SOF, который пишется в epcs_controler (на верное туда по крайне мери указываю эту память), куда писать образ программы?
Моя программа, работает только тогда когда Я указываю, что программу сохранить в cfi_flash т.е. указываю там путь (Program a fail into flash) до своего файла <имя проекта>.flash прошиваю выкл./вкл. и о чудо все работает как Я пока не пойму, но я как писал выше предполагаю что flash`ки в будущем дизайне платы не будет. Вектор сброса у меня указывает на epcs_controler хотя Я так понимаю кроме SOF Я туда не чего не пишу (хотя по видимому не правильно думаю). А если попытаюсь указать, что программу Я хочу записать в epcs_controler, Flash Programer IDE потребует задать смещение, а какое оно должно быть?
2. Возможно это не правильно но Я это ядро пытаюсь пощупать на ассемблере сначала. Вроде все получается кроме одного как захватить власть над начальным стартом написать свою инициализацию проинициализировать стек и т.п.
Пытаюсь войти как
.global _start
_start:
<Свой исполнительный код включая инициализацию>
.end
Компилятор компилит с ошибкой и дает собрать только если _start заменить на alt_main или main. Где бы посмотреть эту инициализацию что он там творит такое.

PS. Извините за много букф и может не правильно сформулированные вопросы. Ногами сильно не пинайте. wacko.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 2 2009, 15:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



1. рассмотрим дизайн с EPCS и исполняемым кодом в ОЗУ. контроллер EPCS в SOPCе - это контроллер SPI + небольшое ОЗУ для кода загрузчика. при ресете sof считывается из EPCS и имеем процессор в состоянии сброса. ОЗУ в контроллере EPCS содержит код загрузчика, который в данном случае перегосит данные из EPCS в on-chip RAM. его код на асме можно найти в примерах, которые идут с квартусом. код загрузчика автоматически будет добавлен линкером к проекту, если в настройках указано располагать программную память в ОЗУ. в случае, если программа располагается в CFI, то код загрузчика имеет тривиальный вид, типа перейти по такому-то адресу. чтобы не бояться командной строки, покурите вот это
www.altera.com/literature/ug/ug_nios2_flash_programmer.pdf

навскидку, примерно так(адреса и пути к файлам подправить):

sof2flash --epcs --input=standard.sof --output=standard_epcs.flash
nios2-flash-programmer --epcs --base=0x02100000 standard_epcs.flash
elf2flash --epcs --after=standard_epcs.flash --input=myapp.elf --output=myapp.flash
nios2-flash-programmer --epcs --base=0x02100000 myapp.flash

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

2. поищите в настройках IDE (window/preferences...) опцию линкера "генерить objdump". соберите несколько сишных проектов, с main, alt_main и посмотрите файл с расширением objdump. там будет промежуточный ассемблер и куча другой инфы.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Apr 3 2009, 08:48
Сообщение #3


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(vadimuzzz @ Apr 2 2009, 19:06) *
его код на асме можно найти в примерах, которые идут с квартусом

Точнее, с Nios II EDS : ..\nios2eds\components\altera_nios2\boot_loader_sources
Этот загрузчик, кстати, там модифицировать можно под свою задачу smile.gif
Ну и использовать этот бутлоадер в качестве примера, как нужно делать ассемблерные проекты для ниоса smile.gif


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Атмег
сообщение May 30 2012, 14:59
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 17-05-07
Пользователь №: 27 787



Цитата(Stewart Little @ Apr 3 2009, 12:48) *
Точнее, с Nios II EDS : ..\nios2eds\components\altera_nios2\boot_loader_sources
Этот загрузчик, кстати, там модифицировать можно под свою задачу sm.gif
Ну и использовать этот бутлоадер в качестве примера, как нужно делать ассемблерные проекты для ниоса sm.gif


Можно подробнее спросить, КАК это делается? Мне нужно заставить загрузчик в EPCS искать образ и грузить ниос не с нулевого адреса во флешке, а по заданному смещению. Для этого беру исходники загрузчика, пересобираю, получаю hex. В папке проекта лежит какой-то epcs_flash_controller_boot_rom_synth.hex, создается он при генерации системы SOPC builder'ом. Считаю, что это и есть boot_rom epcs-контроллера, подсовываю вместо него свой hex..... И ничего не меняется. sof файлы в итоге ничем не отличаются! Что я делаю не так? sad.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 19:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016