DMA для прошивки для STM32 - PullRequest
       50

DMA для прошивки для STM32

0 голосов
/ 12 октября 2018

Я использую микроконтроллер stm32f40x (UC), и мне нужно использовать его внутреннюю флэш-память для хранения некоторых данных.Операция записи, как вы знаете, очень медленная и занимает UC очень долго.Вот я и подумал о DMA и вот вопрос:

Можно ли использовать DMA для передачи данных из SRAM во FLASH?

Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Другой возможностью было бы использование устройства с двумя банками с возможностью чтения во время записи.В этих устройствах есть два банка вспышки.Можно выполнить код из одного банка при записи данных во второй банк.

0 голосов
/ 12 октября 2018

Короче: Нет. По крайней мере, бесполезно.

Дольше: медленная запись на флэш-память не вызвана слишком медленным процессором, а скорее вызвана длительными циклами записи страницы вфлэш-память.(Таким образом, DMA не быстрее).Теоретически вы можете использовать DMA для записи на флэш-память (даже если это немного сложно и имеет некоторые подводные камни), но вы не получите никакой скорости.Причина в том, что процессор будет остановлен, когда попытается получить доступ к флэш-памяти во время записи.Таким образом, ЦП не сможет выполнять код оттуда, пока DMA его пишет - нет полученного времени.

В руководстве говорится:

Любая попытка чтения флэш-памяти на STM32F4xxво время записи или стирания автобус останавливается.Операции чтения обрабатываются правильно после завершения операции программы.Это означает, что выборка кода или данных не может быть выполнена, пока выполняется операция записи / стирания.

Это означает, что выполнение кода из любой области флэш-памяти, пока DMA работает в ней, невозможно - ЦП будет остановленза этот период времени.Однако может еще больше усложнить ситуацию и скопировать части вашего кода в ОЗУ, чтобы выполнить его там, чтобы обойти это.

В некоторых моделях серии F4 имеется 4 КБ ОЗУ с резервным питанием от батареи.Используйте это, это намного быстрее и намного проще в обращении.

...