Ich hab mir gestern mal die AVR32UC3 angeschaut. Die haben eine
MAC-Einheit eingebaut, die über DMA Daten in den Controller laden und
andersherum.
Als vergleich dazu habe ich mal einen Webserver mit einem AVR und einer
RTL8019 ISA Karte zusammengeschraubselt.
Und ich muss sagen: So wie das beim AVR32 gelöst ist, ist das schon
ziemlich genial meiner Meinung nach. Die Daten können ohne Belastung des
Prozessor. Ja sogar ohne Belastung des internen RAMs (und somit zB des
Call-Stacks, sofern man den hier angelegt hat) hin und her geschaufelt
werden. Das geht dank mehrerer Busse, die zwischen den Komponenten
intern aufgespannt sind. (Ja, um das DMA hier zu benutzen braucht man
internen RAM, wenn ich das richtig verstehe, da nur dieser über den
Highspeed-Bus (HSB) angebunden ist. Der interne nicht. Hab mich
dahingehend aber nicht weiter informiert, da bei mir sowieso ein
externer RAM dran ist).
Im Vergleich dazu: Beim AVR muss nach einem Interrupt erst das ganze
Ethernetpaket in den RAM geschaufelt werden. Gerade wenn sowas oft
hintereinander passiert, dann ist der AVR ja echt nur am rumkopieren.
Insofern würde ich eine interne Lösung schon bevorzugen - DMA ist echt
ne feine Sache.