Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Boot start NIOS II
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
PeterD
Господа профессионалы. Прошу вашей помощи. Имею в наличие 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
vadimuzzz
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. там будет промежуточный ассемблер и куча другой инфы.
Stewart Little
Цитата(vadimuzzz @ Apr 2 2009, 19:06) *
его код на асме можно найти в примерах, которые идут с квартусом

Точнее, с Nios II EDS : ..\nios2eds\components\altera_nios2\boot_loader_sources
Этот загрузчик, кстати, там модифицировать можно под свою задачу smile.gif
Ну и использовать этот бутлоадер в качестве примера, как нужно делать ассемблерные проекты для ниоса smile.gif
Атмег
Цитата(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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.