Использую плату SK-9g45-oem. Развел платку, подключил дисплей NEC NL6448BC18-01F. Все работает весело, картинка цветная)) Однако есть одно но. Чтобы заполнить весь экран каким либо цветом, у процессора уходит 35-40 мс времени (Измеряю с помощью PIT). В моем понимании, это слишком много. Написал программу заливки по алгоритму - так вообще, на одну картинку уходит 500 мс. Это вообще бардак.
Вот у меня возник вопрос, так как я этот процессор только начал осваивать, может я чего то там недоинициализировал? Использовал исходники с SAM9G45EKES для начальной инициализации проца, настроил дисплей и ДМА и все.
В общем, прошу совета.
Есть подозрение на низкую скорость обмена с памятью. Навеяло другой темой... Кто подскажет, как правильно инициализировать память, что стоит на sk-9g45-oem?
Компилятор не "идиот", он просто выкинул второй цикл ...
Как минимум нужно в таких случаях аргумент volatile к переменной указывать, но и в этом случае, с вероятностью 0,99, операции будут с внутренними регистрами ...
ITemp нужно было так же как указатель объявить, тлько если это будет DDR, те же числа получите.
Нет никаких "волшебных настроек" памяти, при которой она начнет в разы быстрее работать, она итак настроена на максимум того что может процессор, пойдете тайминги крутить, только проблем насобираете.
Либо пользуйтесь Qt, либо смотрите как там все исполняется, либо миритесь с тем что имеете.
признаю, накосячил) Потом я просто присвоил значение, и как итог получил скорость DDR процентов на 15 медленнее встроенной памяти, даже если выключить LCD DMA.
Однако ж вопрос - неужели реально процессор настолько медленный, что залить экран у него занимает столько времени? Я рассчитывал, что 400 МГц должно мне хватить под задачи, с которыми ранее справлялся F2808 :)
Прошу камнями не закидывать, а подсказать какие нить технологии оптимизации) Про MMU и кеширование спасибо, буду пробовать
Код находится в SRAM. При включении I-CACHE все становится только хуже) Время увеличивается в 10 раз.
Есть ли какие то особенности включения MMU? Сегодня весь день бьюсь - никак не могу включить его - после включения проц не подает признаков жизни. С помощью дебага выяснил , что затык происходит на CP15_WriteControl(control);
Для начала нужно создать таблицу трансляции адресов - вам хватит одноуровневой с отображением PA<->VA 1:1. Поищите на электроникс.ру - там были вроде подобные темы.