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
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
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.
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".
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.