Fragr schrieb:
> Vor allem passieren dann zwischendurch noch Speicherzugriffe von dem
> DMA. Wie ich gelesen habe sollen diese vergleichsweise langsam sein und
> deswegen soweit wie es geht vermieden werden, aber wie schätze ich so
> etwas ab?
Es gab früher sehr viele DMA-Implementierungen, bei denen sich die
Entwickler viel zu wenig über die damit einhergehende Busbelastung und
Latenzen beschäftigt haben. Damals(tm) konnte man den Z80 DMA so
programmieren, dass er die CPU komplett abklemmte und dauerhaft
Speicherinhalte umkopierte. Mangels Reset-Eingang konnte man ihn nur per
Stromreset stoppen.
Einen Atmel AT91RM9200 konnte man komplett aus dem Tritt bringen, indem
man ihn mit Ethernetpaketen überflutete und der DMA-Controller mehr
Speicherbandbreite benötigte als an irgendeinem Nadelöhr verfügbar war.
Den Vogel schoss jedoch der Sharp LH79402 ab, dessen DMA-Controller sich
überhaupt nicht um gerade laufende DRAM-Speicherzugriffe der CPU scherte
und einfach "dazwischenfunkte".
Solche Fälle sehr schlecht konstruierter DMA-Controller werfen natürlich
ein schlechtes Licht auf DMA, aber vielfach liegt es einfach auch nur an
den Programmierern, die durch eine vergurkte Konfiguration des
DMA-Controllers zu solchen Problemen beitragen. Es ist eben so wie mit
anderen gefährlichen Werkzeugen: richtig eingesetzt sind sie sehr
wirkungsvoll, falsch eingesetzt können sie großen Schaden anrichten. DMA
zu verbieten wäre so, als würde man ausgebildeten Chirurgen den Einsatz
des Skalpells verbieten, nur weil irgendjemand mal mit dem Skalpell in
seiner Nase gepopelt hat und daran verblutet ist.
Zur Laufzeitmessung:
Gerade bei Microcontrollern hat man doch paradiesische Zustände, d.h.
man kann - neben den schon genannten Methoden - doch munter mittels
Portpin und Oszilloskop Laufzeitmessungen durchführen.