Hallo zusammen, hab gerade einen Test mit der DMA vom STM32F103C8T6 gemacht. Zwei Arrays mit 1024 Words (32Bit) angelegt und eines mit Zahlenmuster gefüllt. Dann DMA angeschmissen und kopieren gesagt. Im Debugger geschaut, wie lange es dauert, bis die DMA den ganzen Krempel kopiert hat. Ergebnis: Vom STR Befehl zum Enablen des DMA Channels bis zum nächsten Befehl (STR dauert 2 Takte, FCPU = 72MHz) waren alle Daten kopiert. Das entspricht einer Datenrate von 1024 * 4 Bytes / 27,78ns = 147,456 GB/s. Das kommt mir spanisch vor. Datenübertragung natürlich MEM2MEM. Habe ich was falsch gemacht bei der Messung oder läuft die DMA trotz Breakpoint weiter? Wo steht, wie schnell die DMA maximal ist? Grüße
Gast
#5813652
Leopold N. schrieb: > läuft die DMA trotz Breakpoint weiter? Ja natürlich. Die läuft unabhängig vom Prozessor-Kern. Ich würde vermuten dass die DMA Einheit ein Element (1,2,4 Bytes, je nach Einstellung) pro Takt (AHB) kopiert.
Dr. Sommer schrieb: > Leopold N. schrieb: >> läuft die DMA trotz Breakpoint weiter? > > Ja natürlich. Die läuft unabhängig vom Prozessor-Kern. Ich würde > vermuten dass die DMA Einheit ein Element (1,2,4 Bytes, je nach > Einstellung) pro Takt (AHB) kopiert. Schade...hatte mich schon gefreut :) Naja, danke für die Antwort. Grüße
Gast
#5813661
Leopold N. schrieb: > STR dauert 2 Takte Außerdem: Wie lange ein STR dauert hängt von vielen Umständen ab. Ein STM32F1 ist kein ATMega.
Gast
#5813667
Wenn ich wissen will wie lange "etwas" dauert dann setze ich zu Beginn des fraglichen Vorgangs einen Portpin und setze ihn an Ende wieder zurück. Die Zeit zwischen den Flanken messe ich dann mit dem Oszilloskop aus. Wenn ich kein Oszilloskop habe dann kann ich den DWT Cycle Counter verwenden um die Anzahl der Taktzyklen zwischen Beginn und Ende "auszuzählen".
Gast
#5813924
Man kann aber auch Timer etc beim debuggen anhalten. https://stm32f4-discovery.net/2015/07/disable-peripherals-in-debug-mode-on-stm32f4xx/ Ob's für den dma auch geht weiß ich leider nicht
Gast
#5813932
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.