2016-07-20 4 views
-4

Meine Frage ist: Wie ist der Speicher im Mikrocontroller organisiert und verwaltet? (Es hat kein Betriebssystem, d. H. Kein Vorhandensein von MMU).Wie ist der primäre Speicher in einem Mikrocontroller organisiert?

Ich arbeite über Zynq 7000 (ZC702) FPGA, es hat separate Arm Kern und separaten DDR-Speicher mit axi Verbindungen miteinander verbunden.

Ich schrieb 11 1111 1111 in Dezimal zu DDR (10 1), es gibt mir gleich nach dem Lesen. wenn ich 111 1111 1111 im Dezimal zu DDR (11 1) schreibe, gibt es mir -1.

Hier wird der gesamte physische Speicher verbraucht. Dies ist nicht der Fall, wenn ich einen Mikrocontroller verwende. Wer verwaltet den Speicher im Mikrocontroller?

+1

Bitte beachten Sie, dass MMU und OS ausgezeichnete Konzepte sind. Sie können eins ohne das andere haben. – Matthias

+2

SoC und Mikrocontroller sind heutzutage ein anderer Begriff. Deine Frage ist sehr unklar. Es gibt weder einen einzelnen SoC-Typ noch einen einzelnen Mikrocontroller. Und FPGA-basierte SoCs sind noch flexibler. Sie sollten mehr über die Grundlagen lernen, Sie scheinen sehr verwirrt (nichts für ungut). – Olaf

+2

Mikrocontroller unterscheidet sich sehr, Sie müssen ihre Handbücher lesen. Ich meine, da Sie kein Betriebssystem haben, um sich um die verschiedenen Architekturen zu kümmern, müssen Sie es selbst tun. Prüfen Sie, ob der Hersteller einige Entwicklungskits anbietet. – Aus

Antwort

1

Okay, das ist ein Cortex-A9, in keiner Weise Form oder Form ist das ein Mikrocontroller.

Wenn Sie die Armdokumentation für diese Architektur lesen, finden Sie das mmu dort. Es ist wie erwartet Teil des Cortex-A-Kerns.

Wer/wie/wann wird der DDR initialisiert? Jemand muss es initialisieren, bevor Sie darauf schreiben und es zurücklesen können. 10 Einsen in Dezimalstellen in einem 32 Bit schreiben/lesen, 11 Einsen, dauert 33 Bit, welche Größe haben Sie geschrieben/gelesen? Wie viel ddr hast du? Ich vermute, du bist nicht bereit, mit ddr zu reden

Es gibt 256K von on-Chip-RAM, vielleicht sollten Sie mit dem zuerst durcheinander bringen.

All dies ist in der Zilinx- und Arm-Dokumentation. Erfahrene Bootloader-Entwickler können Monate brauchen, um DDR initialisiert zu bekommen, wie/wer/wann wurde das gemacht, haben Sie Dram-Tests, um zu bestätigen, dass es läuft und funktioniert, wenn Sie es nicht initialisiert haben? Hat zilinx dafür Routinen zur Verfügung gestellt (wie wird dein ddr initialisiert, wer hat das gemacht? (Dein Code, ein Code vor dir, Logik usw.) und wann wurde es gemacht, bevor dein Code lief?). Vielleicht ist es deine Aufgabe zu initialisieren.

die MMU Sie gerade lesen die Arm Dokumente als mit allem über diesen Kern. Dann arbeite mit der Xilinx-Dokumentation für mehr, und dann natürlich, wer hat den Rest des FPGA-Designs gemacht, um den Armkern mit dem Dram zu verbinden? Welchen Adressraum benutzen sie, welche Decodierung, welche Alignments unterstützen sie, welche Axi-Transfers werden unterstützt? Das ist nicht etwas, was irgendjemand hier tun könnte, du musst mit den fpga-Logik-Designern für dein spezifisches Design sprechen.

Wenn Sie kein Betriebssystem haben, dann laufen Sie Bare-Metal. Sie, der Programmierer, sind verantwortlich für die Speicherverwaltung. Du brauchst das MMU nicht unbedingt, manchmal hilft es manchmal einfach mehr Arbeit. Hängt vollständig von Ihrer Programmieraufgabe und dem Gesamtdesign der Software und des Systems ab. Die MMU ist Hardware, ein Betriebssystem ist Software, die auf Hardware läuft. Eine Sache könnte die andere verwenden, aber sie sind in keiner Weise miteinander verbunden, genauso wenig wie der Interrupt-Controller oder der Dram-Controller oder die UART usw. an das Betriebssystem gebunden sind. Das Betriebssystem oder andere Software kann diese Hardware verwenden, aber Sie können sie auch mit anderer Software verwenden.

Verwandte Themen