Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с Dhrystone на AT91RM9200
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Paramedic
Компилирую в ИАР4.41 и загружаю через SAM-ICE тест производительности связки AT91RM9200+32MB_SDRAM (на плате AS-9200 от Аргуссофта) и вот что получаю:
-I- WO MMU & I+D Caches Disabled
-I- 329 Dhrystone per second
-I- 297 Dhrystone per second
-I- 296 Dhrystone per second
-I- 296 Dhrystone per second
-I- WO MMU & I Cache Enabled
-I- 1176 Dhrystone per second
-I- 1067 Dhrystone per second
-I- 1084 Dhrystone per second
-I- 1083 Dhrystone per second
-I- MMU & I Cache Enabled
-I- 1176 Dhrystone per second
-I- 1078 Dhrystone per second
-I- 1079 Dhrystone per second
-I- 1082 Dhrystone per second
-I- MMU & I+D Cache Enabled
-I- 3555 Dhrystone per second
-I- 3185 Dhrystone per second
-I- 3210 Dhrystone per second
-I- 3232 Dhrystone per second
-I- MMU & I+D Caches but I cache reduced (locked elsewhere)
-I- 2092 Dhrystone per second
-I- 1886 Dhrystone per second
-I- 1885 Dhrystone per second
-I- 1882 Dhrystone per second
По-моему маловато. Если кому не сложно, посмотрите в чём может быть дело. Исходники прилагаю.
Paramedic
Добавление
AT91F_SetBusMode(((unsigned int)3)<<30); // BUS ASYNC MODE
AT91F_SetCacheMode((unsigned int)1<<14); // CACHE RROBIN MODE
даёт немного лучший результат:
-I- WO MMU & I+D Caches Disabled
-I- 331 Dhrystone per second
-I- 297 Dhrystone per second
-I- WO MMU & I Cache Enabled
-I- 1433 Dhrystone per second
-I- 1299 Dhrystone per second
-I- MMU & I Cache Enabled
-I- 1614 Dhrystone per second
-I- 1483 Dhrystone per second
-I- MMU & I+D Cache Enabled
-I- 10553 Dhrystone per second
-I- 9341 Dhrystone per second
-I- MMU & I+D Caches but I cache reduced (locked elsewhere)
-I- 3923 Dhrystone per second
-I- 3542 Dhrystone per second
Но всё равно не понятно насколько это приемлемо. Встречал сообщения, где пишут что должно быть больше 100 тысяч.
sergeeff
1. TTB таблица должна быть размещена в некэшируемой области. Например, с адреса 0x20200000 (ну уж всяко выше первого мегабайта). Соответственно вызываем: AT91F_InitMMU((unsigned int *)0x20200000);
2. Для получения максимального быстродействия надо регион объявить как cachable/bufferable. Соответсвенно надо поправить:
pTranslationTable[0x100] =
(0x200 << 20) | // Physical Address
(1 << 10) | // Access in supervisor mode
(15 << 5) | // Domain
1 << 4 |
(1 << 3) | // Cachable
(1 << 2) | // write-back
0x2; // Set as 1 Mbyte section.
3. У тебя процессор заводится на очень низкой частоте. Проверь.
Paramedic
Цитата(sergeeff @ Feb 12 2007, 19:38) *
1. TTB таблица должна быть размещена в некэшируемой области. Например, с адреса 0x20200000 (ну уж всяко выше первого мегабайта). Соответственно вызываем: AT91F_InitMMU((unsigned int *)0x20200000);
2. Для получения максимального быстродействия надо регион объявить как cachable/bufferable. Соответсвенно надо поправить:
pTranslationTable[0x100] =
(0x200 << 20) | // Physical Address
(1 << 10) | // Access in supervisor mode
(15 << 5) | // Domain
1 << 4 |
(1 << 3) | // Cachable
(1 << 2) | // write-back
0x2; // Set as 1 Mbyte section.
3. У тебя процессор заводится на очень низкой частоте. Проверь.


Спасибо за ответ!
На самом деле Атмел в ерате пишет:
26. PMC, Clock Generator: Bad switching when writing PLL registers with same MUL and DIV values
When the fields MUL and DIV in the CKGR_PLLBR register are written with the
same values as already programmed, the Master Clock signal switches to Main
Clock (output of the Main Oscillator) until a different value is programmed in the
register.
When the fields MUL and DIV in the CKGR_PLLAR register are written with the
same values as already programmed, the Master Clock signal switches to Slow
Clock (output of the 32768 Hz Oscillator) until a different value is programmed in the
register.
Так и есть... Тактирование привёл в порядок - получил такие цифры:
-I- PCK = 179712000
-I- MCK = 59904000
-I- WO MMU & I+D Caches Disabled
-I- 1751 Dhrystone per second
-I- 1633 Dhrystone per second
-I- WO MMU & I Cache Enabled
-I- 7494 Dhrystone per second
-I- 6935 Dhrystone per second
-I- MMU & I Cache Enabled
-I- 8434 Dhrystone per second
-I- 7902 Dhrystone per second
-I- MMU & I+D Cache Enabled
-I- 56198 Dhrystone per second
-I- 49580 Dhrystone per second
Это нормально или тоже маловато?
А вообще как разы/секунду перевести в МИПСы?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.