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

 
 
> Реальное время выполнения инструкций STM32F4xx
msn
сообщение Jun 27 2012, 11:01
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-01-06
Из: Украина, Киев
Пользователь №: 12 759



Разбираюсь с STM32F4xx, запустил его на 168 МГц (5.92 нс цикл) включены все КЕШи (FLASH->ACR = FLASH_ACR_DCEN | FLASH_ACR_ICEN | FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY_5WS) выдаю на PA1 простой меандр:
Код
  while (1)
  {
     GPIOA->BSRR = GPIO_BSRR_BS_1;
    __nop();
    __nop();
    __nop();
    __nop();
    GPIOA->BSRR = GPIO_BSRR_BR_1;
    __nop();
    __nop();
    __nop();
    //__nop();    
  }


Компилируется так:
Код
STR      r1,[r0,#0x18]        
NOP                            
NOP                            
NOP                            
NOP                            
STR      r2,[r0,#0x18]
NOP      
NOP      
NOP      
B        |L1.6|


Смотрю в Keil (отладка на stm32f4discovery) States, все команды выполняются за 1 такт.
Смотрю осцилом, вижу, что 1 на PA1 - 30 нс (5 тактов), а 0 на PA1 - 35 нс (6 тактов), т.е. B |L1.6| выполняется вроде как за 2 такта, а Keil увеличивает States на +1.

Читал http://infocenter.arm.com/help/index.jsp?t...g/BABBCJII.html (If branch taken, pipeline reloads (two cycles are added), т.е. 3 цикла) и STM PM0081 Flash memory interface (про ART - все за 1 цикл), так толком и не понятно кому верить.

Где можно прочитать о времени выполнения инструкций STM32F4xx?
Как можно в Keil измерить это время?

Спасибо.
Go to the top of the page
 
+Quote Post



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

 


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


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