На какой частоте работает DMA? STM32

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

На какой частоте работает DMA? STM32

Сообщение black_lizard »

Всю голову сломал над этим вопросом. Сначала я думал, что DMA тактируется на частоте AHB, то есть МК. Ну то есть я думал, что AHB это и есть внутренняя частота. Я долго мучал DMA, пытаясь понять, чего он такой медленный. И экспериментальным путём выяснилось, что он не работает на частоте мк, а судя по всему просто игнорирует PLL.
То есть если я меняю в конфиге (keil) вот эту строку:

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);

То есть если меняется умножение частоты внешнего кварца на 9, то скорость работы DMA не меняется. Почему? Мне нужно, чтобы DMA передавал с памяти в память на частоте в 36 мгц, то есть, я вычитал что в память он копирует с задержкой в один такт, то есть работая на частоте 72 мгц, он должен выдавать мне эти 36 000 000 передач, но он выдаёт мне много меньше. На всех блоксхемах тактирование DMA ведётся на частоте МК. Почему тогда меняя настроки PLL ничего не меняется?
Собираю самопальный мини-компьютер
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: На какой частоте работает DMA? STM32

Сообщение Reflector »

Я так понимаю у тебя F1, там самый медленный DMA, из порта(считай памяти) в память читает за 9 тактов, так что никакие 36MHz ты и близко не получишь.
Реклама
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

Re: На какой частоте работает DMA? STM32

Сообщение black_lizard »

[uquote="Reflector",url="/forum/viewtopic.php?p=3203473#p3203473"]Я так понимаю у тебя F1, там самый медленный DMA, из порта(считай памяти) в память читает за 9 тактов, так что никакие 36MHz ты и близко не получишь.[/uquote]

Спасибо за ответ. А не подскажете место, где про это можно почитать в сравнении? Или только в даташитах на отдельные камни?
Собираю самопальный мини-компьютер
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: На какой частоте работает DMA? STM32

Сообщение Reflector »

[uquote="black_lizard",url="/forum/viewtopic.php?p=3203723#p3203723"]Спасибо за ответ. А не подскажете место, где про это можно почитать в сравнении? Или только в даташитах на отдельные камни?[/uquote]
По даташитам скорость DMA не определишь, нужно измерять самому. Для F4 получается 4 такта, для F0/F3 - 5, F1 - 9. При простом софтовом копировании получается как минимум столько же, для F1 - 6 тактов, для F3 - всего 2, если код выполнять из CCM, для F4 самый быстрый способ копирования при помощи FPU.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

Re: На какой частоте работает DMA? STM32

Сообщение black_lizard »

[uquote="Reflector",url="/forum/viewtopic.php?p=3203740#p3203740"][uquote="black_lizard",url="/forum/viewtopic.php?p=3203723#p3203723"]Спасибо за ответ. А не подскажете место, где про это можно почитать в сравнении? Или только в даташитах на отдельные камни?[/uquote]
По даташитам скорость DMA не определишь, нужно измерять самому. Для F4 получается 4 такта, для F0/F3 - 5, F1 - 9. При простом софтовом копировании получается как минимум столько же, для F1 - 6 тактов, для F3 - всего 2, если код выполнять из CCM, для F4 самый быстрый способ копирования при помощи FPU.[/uquote]

Попробовал ориентироваться на 9 тактов. Судя по всему вы правы. Я вывожу видео на vga и если делать рассчёт на 3 такта/пиксель, dma выводит как раз за раз 3 пикселя. Делаю через обычный memory to memory в регистр GPIO. Спасибо за инфу, учту при рассчётах.

Добавлено after 5 hours 16 minutes 23 seconds:
Ещё один вопрос появился по этой теме. Я был уверен, что DMA это полностью независимый модуль. Но практика опять же показывает, что на скорость работы DMA влияет и основное выполнение программы, что для меня недопустимо. Камень STM32F103C8T6. Возможно ли этого избежать?
Собираю самопальный мини-компьютер
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: На какой частоте работает DMA? STM32

Сообщение Reflector »

[uquote="black_lizard",url="/forum/viewtopic.php?p=3203801#p3203801"]Ещё один вопрос появился по этой теме. Я был уверен, что DMA это полностью независимый модуль. Но практика опять же показывает, что на скорость работы DMA влияет и основное выполнение программы, что для меня недопустимо. Камень STM32F103C8T6. Возможно ли этого избежать?[/uquote]
На F1 вряд ли, там DMA даже без FIFO, разве что мк загонять в сон. Для F4 я видел реализации когда специально текущую строку сначала перекидывали процем из основной SRAM1 в SRAM2, чтобы избежать лагов при передаче по DMA. И еще есть операции которые проц не может разбивать на части, например такое происходит при невыровненном или bitband доступе, т.е. если их избегать, то неожиданных задержек будет меньше.
Реклама
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

Re: На какой частоте работает DMA? STM32

Сообщение black_lizard »

[uquote="Reflector",url="/forum/viewtopic.php?p=3204052#p3204052"][uquote="black_lizard",url="/forum/viewtopic.php?p=3203801#p3203801"]Ещё один вопрос появился по этой теме. Я был уверен, что DMA это полностью независимый модуль. Но практика опять же показывает, что на скорость работы DMA влияет и основное выполнение программы, что для меня недопустимо. Камень STM32F103C8T6. Возможно ли этого избежать?[/uquote]
На F1 вряд ли, там DMA даже без FIFO, разве что мк загонять в сон. Для F4 я видел реализации когда специально текущую строку сначала перекидывали процем из основной SRAM1 в SRAM2, чтобы избежать лагов при передаче по DMA. И еще есть операции которые проц не может разбивать на части, например такое происходит при невыровненном или bitband доступе, т.е. если их избегать, то неожиданных задержек будет меньше.[/uquote]

Спасибо большое. С вашей помощью смог победить VGA. Избавился от DMA, сделал всё на одном таймере и прерывании. Что-то можно рисовать и остаётся немного мощности что-то делать на фоне. Для платы за 120 рублей, я считаю, неплохо. Хотя я ожидал, конечно, большего от DMA.
photo_2017-10-12_00-33-38.jpg
(78.35 КБ) 660 скачиваний
photo_2017-10-12_00-38-13.jpg
(147.99 КБ) 580 скачиваний
Собираю самопальный мини-компьютер
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: На какой частоте работает DMA? STM32

Сообщение Reflector »

[uquote="black_lizard",url="/forum/viewtopic.php?p=3204190#p3204190"]Что-то можно рисовать и остаётся немного мощности что-то делать на фоне. Для платы за 120 рублей, я считаю, неплохо.[/uquote]
Это ты свой мини-компьютер делаешь?
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

Re: На какой частоте работает DMA? STM32

Сообщение black_lizard »

[uquote="Reflector",url="/forum/viewtopic.php?p=3204214#p3204214"][uquote="black_lizard",url="/forum/viewtopic.php?p=3204190#p3204190"]Что-то можно рисовать и остаётся немного мощности что-то делать на фоне. Для платы за 120 рублей, я считаю, неплохо.[/uquote]
Это ты свой мини-компьютер делаешь?[/uquote]

Ну, делаю я его уже давно X). Первый был на propeller parallax, тогда я написал дос подобную ось, ассемблер и текстовый редактор в одном чипе, программы могли вызывать функции апи из ядра ос. Потом было много попыток на других железках. С STM32 я пробовал на телевизор выводить, но потом быстро осознал, что цветную картинку так просто не получить, а чипы кодеры из rgb в композит были труднодоступны и единственным выходом дешёвым и практичным был scart разъём, куда гонятся именно разделённые составляющие цвета, но на этом идея и заглохла. Потом я написал некое подобие спрайтового движка для экранчика в 320х240 через SPI, тоже на этих камнях, тк у меня их с Китая набор. Потом была попытка на pic32, думал оценить MIPS, но что-то он совсем оказался проблемным и не стабильным. Возможно, просто китайский pickit фиговый. В итоге я снова однажды, не так давно решил взяться за эту идею, когда соскучился по паяльнику. Это такое хобби ещё с университетских времён. Создать самодостаточную коробочку, на которой можно для неё же писать код.

В общем-то основное отличие от подобных поделок и самоцель - максимально низкая цена и максимально простая сборка на макетках + достаточная производительность.
Собираю самопальный мини-компьютер
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: На какой частоте работает DMA? STM32

Сообщение Reflector »

Круто, но если так давно делаешь, то почему на F1? Для такого дела можно и F4 взять, может даже F429 с LTDC, если хочется именно на телевизор выводить.
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

Re: На какой частоте работает DMA? STM32

Сообщение black_lizard »

[uquote="Reflector",url="/forum/viewtopic.php?p=3204230#p3204230"]Круто, но если так давно делаешь, то почему на F1? Для такого дела можно и F4 взять, может даже F429 с LTDC, если хочется именно на телевизор выводить.[/uquote]

У меня есть f4 с sdram и дисплеем. Штука, безусловно, офигительная. Но одна из целей - цена, как я уже говорил. На данный момент стоимость компонентов не превышает 250 рублей + раскурочить какой-нибудь старый vga кабель. Я лично не видел stm32f4 плат дешевле 800 рублей по нынешним ценам, хотя сами камни f407 на али толкают по 300 рублей и их можно попробовать запаять. Портировать систему на более мощные камни - вообще не проблема. Если программы изолировать от периферии - арм есть арм.

Да и как практика показала, мне кажется проще сделать VGA, а переходников на все остальные разъёмы дешевых для него полно.
И монитор этот я достал через дорогу за косарь, списанный из офиса какого-то через авито. А телеков за косарь жк я не видел особо. А подключать свой дорогущий как-то боязно. Это тоже было причиной перехода на VGA.
Собираю самопальный мини-компьютер
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: На какой частоте работает DMA? STM32

Сообщение Reflector »

[uquote="black_lizard",url="/forum/viewtopic.php?p=3204224#p3204224"]В общем-то основное отличие от подобных поделок и самоцель - максимально низкая цена и максимально простая сборка на макетках + достаточная производительность.[/uquote]
А, тогда ясно. У меня товарищ паял на переходнике F429ZI на 144 ноги, ставил сверху на чип мелкий радиатор, а поверху него выпаянную с планки SDRAM, тоже на переходнике, прямо сверху соединял проводками и все это втыкалось в макетку. Работает на 240MHz, SDRAM на 80MHz, так что на макетках тоже можно собирать достаточно продвинутые конструкции :) F429ZI мы с ним брали по 4$, плюс переходники 1.5$...
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

Re: На какой частоте работает DMA? STM32

Сообщение black_lizard »

[uquote="Reflector",url="/forum/viewtopic.php?p=3204238#p3204238"][uquote="black_lizard",url="/forum/viewtopic.php?p=3204224#p3204224"]В общем-то основное отличие от подобных поделок и самоцель - максимально низкая цена и максимально простая сборка на макетках + достаточная производительность.[/uquote]
А, тогда ясно. У меня товарищ паял на переходнике F429ZI на 144 ноги, ставил сверху на чип мелкий радиатор, а поверху него выпаянную с планки SDRAM, тоже на переходнике, прямо сверху соединял проводками и все это втыкалось в макетку. Работает на 240MHz, SDRAM на 80MHz, так что на макетках тоже можно собирать достаточно продвинутые конструкции :) F429ZI мы с ним брали по 4$, плюс переходники 1.5$...[/uquote]

У меня единственный вопрос на макетках вызывают конденсаторы. pic32 требует установки двух не дальше вроде 6 мм от входа в микруху между питанием и землёй. Я не смотрел ещё стартап в STM32, но полагаю там то же правило. Это единственное, что у меня в макетках вызывает вопрос. Фигачить их на весу? Но там же расстояние 0.5, довольно не надёжно выходит. Как он решил эту ситуацию?
Собираю самопальный мини-компьютер
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: На какой частоте работает DMA? STM32

Сообщение Reflector »

[uquote="black_lizard",url="/forum/viewtopic.php?p=3204246#p3204246"]У меня единственный вопрос на макетках вызывают конденсаторы. pic32 требует установки двух не дальше вроде 6 мм от входа в микруху между питанием и землёй. Я не смотрел ещё стартап в STM32, но полагаю там то же правило. Это единственное, что у меня в макетках вызывает вопрос. Фигачить из на весу? Но там же расстояние 0.5, довольно не надёжно выходит. Как он решил эту ситуацию?[/uquote]
Переходник вот такой: Изображение
Паяется мк и гребенка, сверху между штырями гребенки паяются конденсаторы и сверху же довольно толстым эмалированным проводом соединяются все линии питания. Аналогично на переходнике памяти напаянны конденсаторы и все соединено с гребенкой на переходнике мк тонким эмалированным проводом. Я так пару раз делал, но только на 48-ми ногих. То что там расстояния больше 6 мм имеет значение если эту конструкцию в космос будут запускать, а для любительского применения все нормально работает при достаточно большом разгоне. Конечно если паять аккуратно :)
А, ты про конденсаторы для кварца? Они уже паяются на макетке в которую этот переходник втыкается, прямо между ногами кварца...
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

Re: На какой частоте работает DMA? STM32

Сообщение black_lizard »

[uquote="Reflector",url="/forum/viewtopic.php?p=3204254#p3204254"][uquote="black_lizard",url="/forum/viewtopic.php?p=3204246#p3204246"]У меня единственный вопрос на макетках вызывают конденсаторы. pic32 требует установки двух не дальше вроде 6 мм от входа в микруху между питанием и землёй. Я не смотрел ещё стартап в STM32, но полагаю там то же правило. Это единственное, что у меня в макетках вызывает вопрос. Фигачить из на весу? Но там же расстояние 0.5, довольно не надёжно выходит. Как он решил эту ситуацию?[/uquote]
Переходник вот такой: Изображение
Паяется мк и гребенка, сверху между штырями гребенки паяются конденсаторы и сверху же довольно толстым эмалированным проводом соединяются все линии питания. Аналогично на переходнике памяти напаянны конденсаторы и все соединено с гребенкой на переходнике мк тонким эмалированным проводом. Я так пару раз делал, но только на 48-ми ногих. То что там расстояния больше 6 мм имеет значение если эту конструкцию в космос будут запускать, а для любительского применения все нормально работает при достаточно большом разгоне. Конечно если паять аккуратно :)
А, ты про конденсаторы для кварца? Они уже паяются на макетке в которую этот переходник втыкается, прямо между ногами кварца...[/uquote]

Спасибо, учту в будущих экспериментах
Собираю самопальный мини-компьютер
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: На какой частоте работает DMA? STM32

Сообщение Аlex »

Тоже наткнулся на эти грабли.
Перекидываю из SDRAM в дисплей данные. Обычным циклом, типа :

Код: Выделить всё

        uint16_t* p = buf_sdram;
        for(uint32_t i=0; i<384000;i++)	*(uint16_t*)0x60020000 = *p++;
улетают за 23 ms. Через DMA - 40 ms.
Жесть... :cry:
Камень - F429.

PS: Вот ну никак я не ожидал такого от ST. Ну никак... :facepalm:
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: На какой частоте работает DMA? STM32

Сообщение Reflector »

[uquote="Аlex",url="/forum/viewtopic.php?p=3580518#p3580518"]Камень - F429.[/uquote]
Дисплей тоже к FMC подключен?
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: На какой частоте работает DMA? STM32

Сообщение ПростоНуб »

[uquote="Аlex",url="/forum/viewtopic.php?p=3580518#p3580518"]улетают за 23 ms. Через DMA - 40 ms.[/uquote]
А в случае DMA, CPU стоит или чем-то занимается? Конкуренция за шину доступа к памяти между CPU и DMA была?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: На какой частоте работает DMA? STM32

Сообщение Аlex »

[uquote="Reflector",url="/forum/viewtopic.php?p=3580532#p3580532"]Дисплей тоже к FMC подключен?[/uquote]Да.

Добавлено after 2 minutes 31 second:
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3580553#p3580553"]А в случае DMA, CPU стоит или чем-то занимается?[/uquote]Естественно. Дисплей должен постоянно обновляться из буфера, в который будет производиться отрисовка.
Не циклить же навечно проц выводом буфера на экран...

В любом случае, я выберу DMA, даже в ущерб скорости. 40 мс, в принципе, нормальное время. Глазу обновление экрана будет практически не заметно.
Аватара пользователя
ПростоНуб
Собутыльник Кота
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Re: На какой частоте работает DMA? STM32

Сообщение ПростоНуб »

[uquote="Аlex",url="/forum/viewtopic.php?p=3580566#p3580566"][uquote="ПростоНуб",url="/forum/viewtopic.php?p=3580553#p3580553"]А в случае DMA, CPU стоит или чем-то занимается?[/uquote]Естественно.[/uquote]
Тогда все честно. CPU с DMA конкурируют за шину доступа к памяти. В худшем случае, когда CPU постоянно что-то из оперативки тащит, скорость должна была быть вообще ровно в два раза ниже, чем при монопольном доступе CPU к памяти.

Кстати, я из-за этого отказался от полного обновления экрана, обновляя только зоны спрайтов, включая восстановление фона на месте их расположения в предыдущем кадре. То бишь, в памяти даже нет всего экрана. Есть спрайты и для каждого активного спрайта - прямоугольная область, которая была на месте его расположения до его отрисовки, даже если альфа-каналом она не прекрывалась.
Последний раз редактировалось ПростоНуб Сб мар 02, 2019 07:10:47, всего редактировалось 1 раз.
Ответить

Вернуться в «ARM»