Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STR-E912: 19MIPS на 96 МГц?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
SimpleSoft
День добрый.

Есть плата Olimex STR-E912.
Среда CrossWorks 1.7. Проект простой. Начальные настройки (PLL = 96MHz и проч). Программа работает из Flash.

для теста скорости написал такой тест:
mov r8, pc
mov r7, #0
add r7, r7, #1
mov pc, r8

Жду 10 сек... после прерываю выполнение и смотрю регистр r7. r7 = 189194738 => 19MIPS
Либо подключенный JTAG так влияет?

Подскажите, пожалуйста, что не так?
Dron_Gus
Вроде как у вас в цикле выполняется все же 2 команды, поэтому умножайте на два. Потом команды перехода обнуляют конвеер, поэтому требуется 3 (?) доступа к флешь (? три такта) на его заполнение.
Это мое ИМХО. Придут более опытные - еще что-нить подскажут.
Calculator
Наверное не 19, а 38 MIPS, тк цикл вроде из 2 операций.
JTAG на скорость выполнения не влияет, он лишь дает небольшую задержку на чтение данных в отладчик при запуске/останове.
Все дело в медленном чтении из Flash, для АРМов это обычно. Попробуйте выполнять то же самое из RAM
shahr
Цитата(Calculator @ Oct 26 2007, 10:20) *
Все дело в медленном чтении из Flash, для АРМов это обычно. Попробуйте выполнять то же самое из RAM


обычно, но не для всех. в LPC2000 такая штука показала бы в районе 50-54MIPS на 60 МГц.
SimpleSoft
из SRAM пробовал -> r7 = 13 000 000 -> 26 MIPS (при WAIT STATES = 0)
неужели не победить? не ARM а беда какая то
Vladimir_T
Посмотрите на результаты тестов здесь:
http://aly.projektas.lt/Projects/STR91_Start/STR91.htm#3
SimpleSoft
Неужели Фраза "Up to 96 MIPS directly from Flash memory" не действительна?
Dron_Gus
Я же Вам предложил посчитать необходимое количество тактов на выполнение Вашего цикла. Найдите документ ARM instruction set и посмотрите сколько тактов требует инструкция mov, если операнд - pc, а требует она три такта. Итого Ваш цикл требует 5 тактов. 19 * 5 = 95. На линейном коде (без переходов) это и будет 95 MIPS.
SimpleSoft
Цитата(Dron_Gus @ Oct 27 2007, 13:08) *
Я же Вам предложил посчитать необходимое количество тактов на выполнение Вашего цикла. Найдите документ ARM instruction set и посмотрите сколько тактов требует инструкция mov, если операнд - pc, а требует она три такта. Итого Ваш цикл требует 5 тактов. 19 * 5 = 95. На линейном коде (без переходов) это и будет 95 MIPS.


Спасибо. Действительно, при коде:

b _LOOP_MY
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
...
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
b _LOOP_MY

в r7 = ~48 000 000...

но вот где же преславутые однотактные комманды....???
SimpleSoft
Цитата(SimpleSoft @ Oct 28 2007, 00:22) *
Спасибо. Действительно, при коде:

b _LOOP_MY
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
...
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
asm("add r7, r7, #1");
b _LOOP_MY

в r7 = ~48 000 000...

но вот где же преславутые однотактные комманды....???


отвечу сам) а вот они!

---------------------------------------
прочитал тут *http://electronix.ru/forum/lofiversion/index.php/t32933.html
что
Flash Memory Interface Clock 96 MHz
и
FLASH read with 2 wait states
FLASH Bus clock speed >66 MHz

у меня при FMI_Config(FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_1, FMI_PWD_ENABLE,\
FMI_LVD_ENABLE, FMI_FREQ_HIGH);

система вешается намертво.

yeah.gif Удалось получить 96MIPS при работе из SRAM при таких параметрах:
MCLK = fPLL = 96MHz
RCLKDIV = 1
AHBDIV = 1
APBDIV = 1
BRCLK=MCLK
SCU->PCR0.WSR_DTCM = 0
SCU->SCR0.WSR_AHB = 0

Пошел дальше, провёл эксперимент:
MCLK = fPLL = 120MHz
результат -> 120 MIPS.
Дальше не пробовал, смысла не вижу. smile.gif
Спасибо кто помогал.
koyodza
APBDIV = 1? Т.е. частота АРВ 96МГц? Глючить будет, АРВ не должна быть выше 48МГц
К тому же у STR91 действительно есть ряд настроек, влияющих на производительность. Например, PFQ/BC при включении уменьшал время выполнения "тяжелой" функции с 3,65мсек до 3мсек на 911F и до 2,8мсек на 911FA
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.