Работаю с камнем LPC2106. Он меня полностью устраивает и прекрасно ложится под проект. Поэтому тот вопрос, который я задаю ниже - чисто академический, чтобы лучше узнать архитектуру. Мне не надо никак ускорять. Я просто хочу разобраться.
Итак. Запустил камень на частоте близкой к 60 (14.7456*4). Частоту проверил JLink Comander-ом. Подтверждено. Сконфигурировал MAM как положено. Делитель переферийной шины 1:1. То есть быстродействие "по максимуму". Учитывая, что, согласно описанию, производительность данного камня из флэши практически равна такойже из RAM, то пока этим пренебрегаем.
Выдаём прямоугольник на ножку прогой типа
Код
for(;; )
{
OUT_EN_RS485;
IN_EN_RS485;
}
Получаем асмовую прогу, по типу:
Код
\ ??main_5:
\ 000002AC 4018A0E3 MOV R1,#+4194304
\ 000002B0 001080E5 STR R1,[R0, #+0]
\ 000002B4 081080E5 STR R1,[R0, #+8]
\ 000002B8 FBFFFFEA B ??main_5
Просмотрел систему команд ARM и высчитал (может ошибся) что данный цикл должен выполнятся 1+2+2+3 такта + ещё 3 такта на сброс конвеера. Итого 11 тактов. То есть при частоте 60МГц мы должны получить частоту ~ 5.45. Реально я получаю 3.5.
За счёт чего формируется доп задержка?
Как обстоят дела с этим в at91sam7s? (Интересуют конкретные цифры)
У STR711? STM32?