Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NIOS и его загрузка
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
RHnd
Рассматриваю сейчас альтеровскую сборку ниоса standart на NIOSII Dev Kit Cyclon Edition. Instruction master cpu там подключен и к флешке, и к епцс, и к срам, и к сдрам. Как я себе представляю: При запуске активируется некоторый загрузчик, который переносит прогу из флешки (или епцс - смотря где она лежит) в быструю память, после чего из этой быстрой памяти прога и выполняется. Но я не понимаю, как определять, в какую именно память переносить код, по какому адресу его там располагать, сколько места он займет. Где это все настраивается? Скажем, у меня на плате есть флешка, епцс и сдрам. Как я понимаю, выполняться можно и чисто из флешки/епцс, но это будет медленно (особенно, из епцс). Хотелось бы, чтоб код выполнялся из сдрам. Однако, эта же сдрам так же предназначена для хранения массивов информации и их обработки. Можно ли мне как-то в этой сдрам разместить и данные, и код? Не ухудшится ли от одновременного доступа к памяти двух мастеров (инструкций и данных) быстродействие? Как определить потребное под код место дабы не задеть его данными? Единственная память, которую могу добавить на плату - onchip.
Читал мануалы по ниосу, но там такого как-то не запомнилось.

Продолжаю рассматривать и замечаю, что Exeption адрес альтеры настроен - sdram с офсетом 0x20. А что находится там до этого офсета?
Вообщем, как бы разобраться с адресным пространством инструкций и данных в ниосе?
id_gene
Читать доки внимательнее и экспериментировать на модели. Там все видно.

Reset address указывает на флеш.
В ИДЕ в свойствах syslib для проекта укажете, где у вас хранится секция .text (инструкции), а где секция .rwdata (переменные программы) и так далее.
Если reset адрес указывает на флеш, а программу вы кладете в СДРАМ, то ИДЕ вам автоматически подсунет во флеш загрузчик.

exception адрес указывает на таблицу векторов прерываний - куда пойдет процессор, когда получит прерывание.
RHnd
Цитата(id_gene @ Jun 10 2007, 13:36) *
В ИДЕ в свойствах syslib для проекта укажете, где у вас хранится секция .text (инструкции), а где секция .rwdata (переменные программы) и так далее.
Если reset адрес указывает на флеш, а программу вы кладете в СДРАМ, то ИДЕ вам автоматически подсунет во флеш загрузчик.

Я, конечно, в ближайший рабочий день посмотрю детальнее, но, как помнится, настройки syslib не помогут мне с определением требуемого под код проги объема памяти. А основной вопрос-то в этом был - как быть увереным, что сдрам хватит и на код и на данные. И не ухудшит ли их совместное размещение быстродействие?
Цитата(id_gene @ Jun 10 2007, 13:36) *
exception адрес указывает на таблицу векторов прерываний - куда пойдет процессор, когда получит прерывание.

Угу, знаю. Вопрос был - почему по умолчанию альтера ставит офсет 0x20 и что находится в сдрам до этого офсета?
id_gene
Цитата(RHnd @ Jun 10 2007, 23:18) *
А основной вопрос-то в этом был - как быть увереным, что сдрам хватит и на код и на данные.
Пример hello_world_small занимает ~332 байта (из файла readme) smile.gif
А уж под свое приложение оценивайте, пожалуйста, сами. При компиляции размер кода пишется. А вообще настройки сислиба не помогают оценке. Ругаться будет только на этапе компиляции.
Более интересный вопрос: если вы в этой памяти храните посторонние данные от других мастеров или обращаетесь напрямую, и ИДЕ этого не видит. Тогда вам нужно будет ограничивать расположение секций, чтобы они не пересекались с данными, или объявлять для посторонних данных свои секции, чтоб компилятор остальное сам утрясал.
Я к этому вопросу только недавно подшел, и пока отложил в сторону (времени нет).
Можно еще посмотреть результат компиляции, посмотреть секции и выбрать свободное место, но тогда это надо делать при каждой пере-компиляции.
Цитата
И не ухудшит ли их совместное размещение быстродействие?
Конечно, ухудшит, если внешняя память однопортовая. Если вам одновременно понадобятся инструкции и данные, то инструкциям придется потерпеть.
А вот насколько станет хуже - опять зависит от кучи факторов, например, как часто будет туда обращаться кэш инструкций (какого он размера, и как написана программа, может она прыгает постоянно во все стороны, а может в цикле считает себе спокойно, а цикл в кэш влезает целиком).
Моделируйте.
Цитата
Угу, знаю. Вопрос был - почему по умолчанию альтера ставит офсет 0x20 и что находится в сдрам до этого офсета?
Извините, не заметил. По моему, ничего.
Если бы у вас туда был нацелен reset address, то там лежала бы секция .entry.
Почему по умолчанию они не сдвигают этот адрес в ноль, когда возможно, - не знаю.
RHnd
Очень хочется не замарачиваться с испольованием оперативки для инструкций, взять кеш на 4кб и весь код оставить на флешке. Если у кого-нить есть опыт, что в этом случае можно сказать о быстродействии? И на сколько она падает при замене флешки на епцс?
Пушкин
Цитата(id_gene @ Jun 12 2007, 18:29) *
Более интересный вопрос: если вы в этой памяти храните посторонние данные от других мастеров или обращаетесь напрямую, и ИДЕ этого не видит. Тогда вам нужно будет ограничивать расположение секций, чтобы они не пересекались с данными, или объявлять для посторонних данных свои секции, чтоб компилятор остальное сам утрясал.


Выделяете память ниосом под массив данных и передаете адрес своему мастеру и все будет ок.


Цитата(RHnd @ Jun 14 2007, 09:18) *
Очень хочется не замарачиваться с испольованием оперативки для инструкций, взять кеш на 4кб и весь код оставить на флешке. Если у кого-нить есть опыт, что в этом случае можно сказать о быстродействии? И на сколько она падает при замене флешки на епцс?

Какие тут заморочки то? Все само собой сделается.
RHnd
Цитата(Пушкин @ Jun 14 2007, 11:04) *
Выделяете память ниосом под массив данных и передаете адрес своему мастеру и все будет ок.
Какие тут заморочки то? Все само собой сделается.

Я про заморочки с совместным использованием и для инструкций, и для данных, и возможной потерей скорости на этом. Точно не будет? smile.gif Ладно, все равно сейчас в отпуск. Вернусь - буду пробовать. smile.gif
Пушкин
Заморочек точно не будет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.