реклама на сайте
подробности

 
 
> Какое быстродействие у ARM STR912FAW42?, Помогите правильно инициализировать!
leon_n
сообщение May 30 2010, 17:01
Сообщение #1





Группа: Новичок
Сообщений: 1
Регистрация: 7-12-09
Пользователь №: 54 111



Подскажите, пожалуйста, какая реальная производительность у процессоров STR912FAW42-47! Взял готовый пример, и сходу получилось очень маленькое быстродействие, посмотрел примеры инициализации и описание ST как следует обеспечить максимальную производительность, вроде все сделал, как советуют, но реальная производительность получилась в 5 раз меньше, очень похоже на медленную работу Flash! Так что же делаю не так?
Мой пример инициализации:

SCU_MCLKSourceConfig(SCU_MCLK_OSC);
SCU_PLLFactorsConfig(192,25,2); /* PLL = 96 MHz */
SCU_PLLCmd(ENABLE); /* PLL Enabled */
SCU_MCLKSourceConfig(SCU_MCLK_PLL); /* MCLK = PLL-96Mhz, OSC-25 Mhz, RTC-32768 */

SCU_PHYCLKConfig(ENABLE); // включаю для контроля тактового генератора
SCU_PCLKDivisorConfig(SCU_PCLK_Div2); // Set the PCLK Clock to MCLK/2
SCU_RCLKDivisorConfig(SCU_RCLK_Div1);
SCU_HCLKDivisorConfig(SCU_HCLK_Div1);
SCU_FMICLKDivisorConfig(SCU_FMICLK_Div1);

сама программа вычисления производительности:
for(i=0;i<800000;i++);//на IAR без оптимизации выполняется за 8 800 015 тактов (где то 12 команд 1 цикл)
GPIO_Write(GPIO6,0x00); //гашу светодиод
for(i=0;i<800000;i++); //в отладчике обычный цикл приращения I (3-х байт в SRAM)
GPIO_Write(GPIO6,0x80);//зажигаю светодиод

На выходе получаю меандр, частота которого при 96 Мгц должна быть 10 Гц а реально 2 Гц!!!
IAR и по умолчанию в примерах, как написано все инициализирует! Где же тут собак зарыт то? -smile.gif
Процессор STR912FAW42, кварц 25 МГц, пишу на IAR (пробовал и на Raisonanse было еще хуже -smile.gif, но важен именно IAR!
Буду крайне благодарен за любой совет rolleyes.gif
А может это нормально, сам туплю? laughing.gif

P.S. Копеечный, но прирост дает включение FPQBC!
SCU_AHBPeriphClockConfig(__FPQBC,ENABLE);
SCU_AHBPeriphReset(__FPQBC,DISABLE);

и ничего не меняется если добавлять или убирать ещё и это)))
FMI_Config(FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE,\
FMI_LVD_ENABLE, FMI_FREQ_HIGH); // FMI Waite States

//Enable FMI clock
SCU_AHBPeriphClockConfig(__FMI,ENABLE);
SCU_AHBPeriphReset(__FMI,DISABLE);

//Enable SRAM clock
SCU_AHBPeriphClockConfig(__SRAM,ENABLE);
SCU_AHBPeriphReset(__SRAM,DISABLE);

//Enable SRAM ARBITER clock
SCU_AHBPeriphClockConfig(__SRAM_ARBITER,ENABLE);
SCU_AHBPeriphReset(__SRAM_ARBITER,DISABLE);

Сообщение отредактировал leon_n - May 30 2010, 17:07
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 19:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016