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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Эффективно и быстро управлять линией порта STM32F407
derun
сообщение May 21 2014, 05:20
Сообщение #16


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

Группа: Свой
Сообщений: 133
Регистрация: 12-01-05
Из: Украина. Чернигов
Пользователь №: 1 908



Цитата(ViKo @ May 21 2014, 11:24) *
А оптимизация не задана?

Задавал : и без оптимизации и максимальная. На код не влияет.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 21 2014, 05:24
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(derun @ May 21 2014, 13:30) *
Задавал : и без оптимизации и максимальная. На код не влияет.

Потому и говорю: оптимальный по скорости результат гарантированно можно получить только при помощи ассемблера.
Go to the top of the page
 
+Quote Post
derun
сообщение May 21 2014, 05:37
Сообщение #18


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

Группа: Свой
Сообщений: 133
Регистрация: 12-01-05
Из: Украина. Чернигов
Пользователь №: 1 908



Цитата(scifi @ May 21 2014, 11:26) *
Плохенький листинг. Четыре инструкции просятся, чтобы их вынесли за цикл. Оптимизация по скорости не была включена, видимо.

На самом деле мне цикл и не нужен , нужно просто устанавливать порт в нужное состояние. Я использую цикл для наглядности,
для проверки сколько времени нужно чтобы порт в нужное состояние установить. Хoтя с оптимизацией надо бы разобраться. У меня Eclipse и GNU Tools ARM Embedded
Тут такой опции нет "Speed optimize" есть "Optimize most"

Цитата(scifi @ May 21 2014, 11:34) *
Потому и говорю: оптимальный по скорости результат гарантированно можно получить только при помощи ассемблера.

По видимому дальше можно улучшать только ассемблером.

Подскажите пожалуйста как правильно оформить ассемблерную вставку, например для этой программы. Спасибо.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 21 2014, 05:38
Сообщение #19


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(ViKo @ May 21 2014, 13:24) *
Давайте по-другому.

Давайте:
Код
for (;;)
{
    pin_set(PIN_LED_RED);
    pin_clr(PIN_LED_RED);
}

Код
8000bae:    6123          str    r3, [r4, #16]
8000bb0:    6163          str    r3, [r4, #20]
8000bb2:    e7fc          b.n    8000bae <Reset_Handler+0xbe>

Да, так на четверть быстрее. Но это не интересно...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
scifi
сообщение May 21 2014, 05:39
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Там ещё одна проблема есть: даже если не нужна точная времянка, а нужно просто успеть за какое-то время, нет никакой гарантии, что при изменении версии компилятора или его настроек код будет продолжать успевать.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 21 2014, 05:39
Сообщение #21


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(scifi @ May 21 2014, 13:34) *
Потому и говорю: оптимальный по скорости результат гарантированно можно получить только при помощи ассемблера.
По-прежнему не согласен (если убрать слово гарантированно)sm.gif
В обычной жизни на asm разве что процедура delay_cycles написана.
Во всех остальных случаях с вероятностью 99% его использование не оправдано.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
scifi
сообщение May 21 2014, 05:48
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(demiurg_spb @ May 21 2014, 13:49) *
По-прежнему не согласен (если убрать слово гарантированно)sm.gif

Отож. Я старался формулировать аккуратно :-)

Цитата(demiurg_spb @ May 21 2014, 13:49) *
В обычной жизни на asm разве что процедура delay_cycles написана.
Во всех остальных случаях с вероятностью 99% его использование не оправдано.

Поддерживаю.
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 21 2014, 05:57
Сообщение #23


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(demiurg_spb @ May 21 2014, 12:18) *
Итого по предварительной оценке 18МГц при тактовой 72МГц.

Команда B выполнится за 1 + P тактов.
Цитата
P The number of cycles required for a pipeline refill. This ranges from 1 to 3
depending on the alignment and width of the target instruction, and whether the
processor manages to speculate the address early.

По моим экспериментам, всегда выполнялась за 3 такта. (Так же работает и условный переход, если он есть. Если нет, то чтобы перейти к следующей команде нужен один такт.)
Итого, в лучшем случае, непрерывно дрыгать ножкой можно за 5 тактов.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 21 2014, 08:10
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Но всегда нужно помнить, что в любой момент может произойти прерывание...
Go to the top of the page
 
+Quote Post
megajohn
сообщение May 21 2014, 08:13
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



и чё тут меряются строками кода, если нигде не написано про PCLK, и только CCLK упоминается. И кстати, можно даже умудрится биения получить.


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
scifi
сообщение May 21 2014, 08:27
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(megajohn @ May 21 2014, 16:23) *
и чё тут меряются строками кода, если нигде не написано про PCLK, и только CCLK упоминается. И кстати, можно даже умудрится биения получить.

Для справки: в семействе STM32F4xx GPIO сидит на шине AHB и тактируется на частоте процессора. Обращения к регистрам GPIO происходят без задержек (с точностью до возможных, но маловероятных задержек внутри Multilayer Bus Matrix).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:51
Рейтинг@Mail.ru


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