MDMA и внутренняя FLASH R / W на STM32H7 - PullRequest
1 голос
/ 15 марта 2019

Доброе утро,

Мы используем STM32H7 для одновременного получения 3-х каналов АЦП 16-бит при 5MSPS, и мы храним данные во внешней eMMC. Все стоит без проблем, как следует: 3 подчиненных SPI с 3 DMA на внутренние буферы триггера / флопа; MDMA для чередования данных в 2 буфера eMMC триггера; IDMA периферийного SDMMC для eMMC. У нас есть некоторые неожиданные времена ожидания, введенные eMMC, которые требуют внутренней буферизации данных больше, чем ожидалось, и, поскольку у нас недостаточно внутренней памяти для буферизации во время ожидания eMMC (и мы не можем добавить внешнюю память на FMC или nvSRAM на Quad -SPI, ... из-за ограничений интеграции), мы рассмотрели использование MDMA с внутренней флэш-памятью для временной буферизации данных. Это такая плохая идея? FLASH на STM32H7 разделен на 2 банка, первый можно использовать для памяти программ (чтобы не было конфликтов и остановок процессора при доступе к DMA), и есть 2 контроллера AXI, MDMA также является периферийным устройством AXI ... Возможно, чрезмерная медлительность ? Кто-нибудь из вас когда-нибудь пробовал это?

Как мы читаем справочное руководство (глава 13: Контроллер MDMA (MDMA)):

Основной прямой доступ к памяти (MDMA) используется для обеспечения высокоскоростной передачи данных между памятью и памятью или между периферийными устройствами и памятью. Данные могут быть быстро перемещены MDMA без каких-либо действий процессора. Это сохраняет ресурсы ЦП свободными для других операций.

Но MDMA может перемещать данные только из AXI в AHB или из AHB в AXI, но не из AXI в AXI?

С наилучшими пожеланиями, Клеман

Ответы [ 3 ]

2 голосов
/ 15 марта 2019

Глядя на таблицу данных, я не думаю, что внутренняя флэш-память подойдет для этой задачи.

H743 Flash memory programming

Итак, запись 266 бит (32 байта + ECC) занимает 100-200 микросекунд. Это около 2,66 Мбит / с, что совсем не близко к скорости входящих данных. Затем сектора флэш-памяти должны быть удалены перед повторным использованием, что занимает секунд для блока размером 128 КБ. Кроме того, вы можете ожидать, что вспышка начнет изнашиваться после всего лишь 10000 циклов записи.

0 голосов
/ 25 марта 2019

Спасибо P__J__ & berendi за ваш отзыв.Принимая во внимание временные характеристики, фактически представляется плохим решением для регистрации наших значений АЦП во внутренней Flash-памяти.Мы будем регистрировать побочные значения, такие как значения внутреннего контроля (напряжение, температура) во внутренней флэш-памяти (с ЦП, DMA не обязательно), и значения RAW ADC в нашей eMMC.Мы работаем над сокращением времени ожидания, чтобы увеличить частоту дискретизации, изменяя настройки кэш-памяти eMMC, но пока что ничего особенного.

Спасибо, Clément.

0 голосов
/ 16 марта 2019

Сохраните данные в SRAM, после чего вы сможете запрограммировать FLASH. Если вам нужно хранить много данных - потребуется внешняя S (D) RAM.

...