2016-04-20 15 views
-1

Ich arbeite an einer eingebetteten Anwendung. Der Versuch, den DMA-Controller Ich kam in der Erklärung zu konfigurieren:Was bedeuten sie sagen SYSTEM MEMORY

Sie bieten muss eine Fläche des Systemspeichers die Kanalsteuerdatenstruktur

enthalten Was sie tun Systemspeicher bedeuten sagen? Daten SRAM? Code SRAM? Irgendwo anders?

Sie können diese Aussage zu Beginn des 8.4.3 hier Abschnitt finden: http://www.silabs.com/support%20documents/technicaldocs/efm32wg-rm.pdf

+0

Erklären Sie den Downvote. – Hairi

+0

Wie würde es Sinn machen, DMA-Daten zum/vom Code-Speicher zu bekommen? Natürlich meinen sie einfachen Daten-RAM. – Lundin

+0

Es ist physikalisch möglich, tatsächlich in den Code-Speicher zu lesen und zu schreiben. – Hairi

Antwort

1

DMA measn Direct Memory Access. Die Idee ist, dass ein Modul wie der ADC nicht einen Fehler auslöst, um die CPU zu fragen, ihre neuen Daten zu lesen. Stattdessen schreibt das Modul direkt in den Speicher des uControllers. Dies spart Zeit für die CPU. Für die Konfiguration müssen Sie eine Heap-Struktur erstellen und den Zeiger an das Modul übergeben. Dadurch kann das Modul den Speicherinhalt direkt ändern. Es ist also Ihr Heap, der Teil Ihres SRAM ist.

+0

Die globalen Variablen befinden sich nicht im Heap, aber sie werden garantiert für den gesamten Lebenszyklus des Programms zugewiesen. Ist es also in Ordnung, diese Struktur in den für die globalen Variablen zugewiesenen RAM zu schreiben? – Hairi

+0

Die Hardware würde es nicht kümmern, um ehrlich zu sein, wenn es in .bss, .heap oder .data war. Was wichtig ist, ist es in der richtigen physikalischen Adressbereich. –

+0

dma spart nicht unbedingt Zeit für die CPU, es ist Design abhängig, manchmal spart es nur Programmierer Zeit. Hängt von den Buskonflikten ab, die von der dma verursacht werden. einige dma-designs die cpu wird von allen zugriffen abgehalten, bis die dma-übertragung abgeschlossen ist, bei manchen entwürfen hat die dma die höchste priorität, so dass die cpu als sklave leiden muss, welche zyklen sie auf den shared bus bekommen kann. und einige Designs die DMA ist der Sklave, also hat die CPU einen kleinen Schlag, aber nicht so groß, als wenn sie alles tun würde. –

2

Mein Verständnis davon, wie ich es gelesen habe, ist Systemspeicher aus dem On-Chip-RAM-Speicher zugewiesen (Abb. 3.1) nicht externen Speicher zugeordnet oder Flash-Programmspeicher. Sie sehen in der Tabelle 3.2, dass die Chips Flash und internen RAM haben. Ich würde sagen, der Systemspeicher ist der RAM, nicht der Flash-Speicher. Abschnitt 3.2 sagt, die Merkmale des Chips ist, dass 32 KB RAM auf dem Chip hat. Überprüfen Sie Abbildung 5.2 für den Systemadressraum. Sie müssen Ihr DMA_CTRLBASE- und DMA_ALTCTRLBASE-Register innerhalb dieser Region, 0x20000000 - 0x20007fff, entsprechend der Kontrollstruktur zuordnen. Ich hoffe, das hilft.