Перейти к содержанию
    

Cortex-M7 кол-во циклов на инструкцию

Везёт Вам. У меня вот CM4, а в нём нету даже bitband :crying:

И кто ж (в смысле производитель) это так зажмотился?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И кто ж (в смысле производитель) это так зажмотился?

Infineon семейство XMC4000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И кто ж (в смысле производитель) это так зажмотился?

В некоторых STM32 он пропал для GPIO, что заставило разочароваться и перестать использовать эту технологию.

К тому же там есть некоторые подводные камни (работа с DMA, неявное чтение-модификация-запись).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В некоторых STM32 он пропал для GPIO, что заставило разочароваться и перестать использовать эту технологию.

Для GPIO STM32 он не особо нужен - там есть свои возможности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В некоторых STM32 он пропал для GPIO, что заставило разочароваться и перестать использовать эту технологию.

К тому же там есть некоторые подводные камни (работа с DMA, неявное чтение-модификация-запись).

А в каком проце заявленный непрерывным мегабайт бит-бенда периферии имеет дырку? Ds-ов много, искать долго, не сочтите за труд подсказать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в каком проце заявленный непрерывным мегабайт бит-бенда периферии имеет дырку? Ds-ов много, искать долго, не сочтите за труд подсказать...

Например, в "RM0316 STM32F302xx, STM32F303xx and STM32F313xx advanced ARM-based 32-bit MCUs".

Для GPIO выделена память, начиная с 0x4800_0000.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в каком проце заявленный непрерывным мегабайт бит-бенда периферии имеет дырку?

Что за дырка?

В некоторых МК часть периферии находится в области алиаса bitband периферии, а часть - вне этого диапазона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что за дырка?

В некоторых МК часть периферии находится в области алиаса bitband периферии, а часть - вне этого диапазона.

Не дырка... ну не возможно объём всех ds знать. Считал (и опыт применявшихся кортексов М это подтверждал) что мегабайта на всю периферию "за глаза", а оказывается "чудики" чудят иногда, не соблюдая единообразие (;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обычно было 2 bitband зоны - для переменных в ОЗУ и для периферийных битов. И не более.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а оказывается "чудики" чудят иногда

А толку от этого bit-band? Все равно только ядро может им пользоваться.

И уж если ногодрыжить, то иметь GPIO на шине AHB будет повыгоднее, чем на APB (APB2 у STM32F1xx).

Возможно, за счет отказа от bit-band для GPIO удастся сэкономить какие-нить такты синхронизации шин,

но в дебрях я не силен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Код кроме ядра некому исполнять (; и наличие возможности лучше её отсутствия.

Стандартизация ещё никогда в production не вредила. "Сказал командир (читай - ARM) - "хорёк", значит ни каких сусликов."

 

В конце-концов, могли бы этот "периферийский" мегабайт бит-бэнда и на AHB отобразить... а может и не могли...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обычно было 2 bitband зоны - для переменных в ОЗУ и для периферийных битов. И не более.

Да. И я, например, на практике пользуюсь только первым и то - очень мало. Так что ничего страшного в его отсутствии.

На Infineon-е просто заменил все такие места на LDREX/STREX и всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сваял ASRC, получилось примерно 4 такта на тап или 256тактов на один стерео сэмпл. До нормального DSP процессора далеко, но как для MCU вроде нормально.

 

DWT помог с оптимизацией - удобный инструмент, особенно если тестовый пример грузить прямо в ОЗУ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

DWT помог с оптимизацией - удобный инструмент, особенно если тестовый пример грузить прямо в ОЗУ.

Если посмотреть на структуру шинного коммутатора STM32F7, там ОЗУ сильно разное бывает. Я так понял, быстрее всего код выполняется из ITCM RAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если посмотреть на структуру шинного коммутатора STM32F7, там ОЗУ сильно разное бывает.

Не столько само ОЗУ разное (если мы про внутренние ITCM/DTCM/SRAM1/SRAM2), сколько его подключение, что в конечном итоге вместе с особенностями программы по части использования этих шин другими мастерами влияет на скорость работы.

 

Я так понял, быстрее всего код выполняется из ITCM RAM.

Да, я в нее и грузил код, данные в DTCM. В реальном проекте код будет в ITCM или Flash памяти (посмотрю что будет с быстродействием), а данные в DTCM/Flash или DTCM/SRAM1, определюсь после тестирования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...