Kampis Elektroecke

XMega – NVM

XMega Blockdiagramm

In diesem Teil des Tutorials möchte ich mich mit dem NVM (Non Volatile Memory)-Controller der XMega-Mikrocontroller beschäftigen. Die Hauptaufgabe des NVM-Controllers ist die Verwaltung der verschiedenen Speicherbereiche im Mikrocontroller:

  • Der Flash-Speicher für den Programmcode. Dieser Speicherbereich unterteilt sich in
    • Application Flash – Hier wird die Anwendung gespeichert
    • Application Table – Hier können Anwendungsdaten gespeichert werden
    • Boot Loader Flash – Hier wird ein Bootloader gespeichert
  • Ein Signaturenspeicher. Dieser unterteilt sich in
    • Production Signature
    • User Signature
  • Die Fuse- und die Lockbits. Diese können von der Anwendung eingelesen werden.
  • Das SRAM. Dieser Speicherbereich unterteilt sich in
    • I/O – Sämtliche Register der Peripherie
    • EEPROM – Das EEPROM kann in den SRAM-Speicher gemappt werden
    • SRAM – Der temporäre Datenspeicher für die Anwendung oder den Bootloarder

Über den NVM-Controller werden die Zugriffe auf die einzelnen Speicherbereiche durch die CPU oder durch das externe Programmiergerät (z. B. JTAG) gesteuert. Je nach Zugriffsart stehen unterschiedliche Befehle zur Verfügung. So kann z. B. das externe Programmiergerät die Fusebits des Mikrocontrollers lesen und schreiben, während der Mikrocontroller die Fusebits lediglich auslesen kann. Dies ist besonders praktisch, wenn bestimmte Peripheriekomponenten deaktiviert werden sollen, sobald ein Fusebit nicht gesetzt ist (z. B. das Batteriebackupsystem, falls die Brown-Out Detection fehlt).

Die Funktionsweise des NVM-Controllers soll anhand einiger Beispiele erklärt werden.

Das komplette Projekt inkl. aller Beispielanwendungen für die verschiedenen Speicherbereiche und Funktionen steht in meinem GitHub-Repository zum Download bereit.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert