Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT90SAM9263+NAND+SDRAM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Serg_el
Устройство построено на базе AT90SAM9263, есть NAND и SDRAM. ОС не используется. Программа полностью помещается во внутреннее ОЗУ, в NAND хранится сама исполняемая программа, которая с помощью загрузчика из ROM копируется при старте в ОЗУ. Также в NAND находятся различные мультимедийные файлы, которые копируются из NAND в SDRAM для дальнейшей обработки. Прошивка заливается в проц одним файлом по 0 адресу NAND с помощью той же SAMBA. Мультимедия копируется в NAND уже в дальнейшем через USB. Собственно вопрос состоит в следующем: исполняемый код содержит некоторые константные данные, которые значительно увеличивают код. Хочется эти данные разместить в NAND так, чтобы при старте они не копировались в ОЗУ. Я так понимаю, что должно быть минимум 2 файла для заливки в NAND - код и константы. Константы сейчас в виде массивов. Как это сделать? Как подготовить bin файл без исполняемого кода средствами IAR?
sergeeff
У вас SDRAM'a небось 32 Мб или около того? Чего тогда ломать голову? Копируйте всю программу в SDRAM и не парьтесь.

Не забудьте кеши включить и настроить - и будет вам счастье!
Serg_el
Цитата(sergeeff @ Dec 14 2010, 23:58) *
У вас SDRAM'a небось 32 Мб или около того? Чего тогда ломать голову? Копируйте всю программу в SDRAM и не парьтесь.

Не забудьте кеши включить и настроить - и будет вам счастье!


Это понятно, но я так думаю, что из ОЗУ все будет работать быстрее, чем из SDRAM с включенными кешами. А если доступ из TCM, то и на процессорной скорости...
sergeeff
Есть стандартные benchmark тесты. Запустите из sdram и из iram. Сравните.
Arischenko Ivan
Цитата(Serg_el @ Dec 15 2010, 10:25) *
Это понятно, но я так думаю, что из ОЗУ все будет работать быстрее, чем из SDRAM с включенными кешами. А если доступ из TCM, то и на процессорной скорости...


Скорость выполнения программ из различной памяти можно достаточно точно измерить, запустив одни и тот же тест из разной памяти. Я бы поставил на то что выполнение программы из SDRAM и SRAM при условии включения MMU, ICache, DCache будет одинаковым по времени.
_4afc_
Цитата(Arischenko Ivan @ Dec 15 2010, 10:45) *
Я бы поставил на то что выполнение программы из SDRAM и SRAM при условии включения MMU, ICache, DCache будет одинаковым по времени.


В реальности это не так. Критичные к скорости данные и код лучше всё же хранить в SRAM. Возможно это связано с несвоевременной подкачкой данных в ICache, DCache.


Цитата(Serg_el @ Dec 14 2010, 22:33) *
Я так понимаю, что должно быть минимум 2 файла для заливки в NAND - код и константы. Константы сейчас в виде массивов. Как это сделать? Как подготовить bin файл без исполняемого кода средствами IAR?


Иаром не пользуюсь. Проще наверно сделать один бинарный массив и залить его самбой по фиксированному адресу в NAND.

Что касаемо иара - очевидно ваши массивы должны находится в отдельной секции, распологающейся в адресном пространстве NAND и имеющей соответствующие атрибуты (RO?). Возможно массивы должны быть static.
Serg_el
Есть одно маленькое НО, у меня SDRAM - это видео буфер (800x600, 24 бита). Как понимаете занятость шины достаточно большая, если учесть, что скорость шины 80МГц, то держать код в SDRAM мне кажется не очень удачной идеей.
MALLOY2
Цитата
В реальности это не так. Критичные к скорости данные и код лучше всё же хранить в SRAM. Возможно это связано с несвоевременной подкачкой данных в ICache, DCache.


У меня правда SAM9XE, но с кешами и MMU, уже разницы практически нет.
Serg_el
Может кто подскажет, почему загрузчик в ROM правильно копирует код из NAND в SRAM пока его размер не превышает 64k?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.