Heim Der Blog Blog Details

Korrekte Einstellungen für C8051F120-Mikrocontroller-Programme, die 64K überschreiten

December 27 2024
Ampheo

Anfrage

Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.

SCHNELLE ANFRAGE
ZUR RFQ-LISTE HINZUFÜGEN
Beim Programmieren des C8051F120-Mikrocontrollers für Anwendungen, die mehr als 64 KB Programmspeicher benötigen, müssen Sie die Funktionen zur Erweiterten Programmspeicheradressierung (EPMA) korrekt konfigurieren, da der 8051-Architektur standardmäßig ein 16-Bit-Adressbus zugrunde liegt, der nur bis zu 64 KB Programmspeicher direkt adressieren kann.

Beim Programmieren des C8051F120-Mikrocontrollers für Anwendungen, die mehr als 64 KB Programmspeicher benötigen, müssen Sie die Funktionen zur Erweiterten Programmspeicheradressierung (EPMA) korrekt konfigurieren, da der 8051-Architektur standardmäßig ein 16-Bit-Adressbus zugrunde liegt, der nur bis zu 64 KB Programmspeicher direkt adressieren kann.

Korrekte Einstellungen für C8051F120-Mikrocontroller-Programme, die 64K überschreiten - Blog - Ampheo

1. Erweiterte Programmspeicheradressierung aktivieren

Der C8051F120-Mikrocontroller unterstützt mehr als 64 KB Programmspeicher über externen Speicherzugriff unter Verwendung der Seitenadressierung (Bankumschaltung).

2. Wichtige Einstellungen und Überlegungen

a. Speichermodell

  • Small Model: Standard 8051-Adressierung, maximal 64 KB Programmspeicher.
  • Large Model: Verwendet erweiterte Adressierung, um mehr Speicher zu erreichen.
  • Verwenden Sie das Large Memory Model in den Compiler-Einstellungen (z.B. Keil uVision).

b. Compiler-Einstellungen (Keil uVision Beispiel)

  • Gehen Sie zu Projekt → Optionen für Ziel → Registerkarte Ziel
  • Wählen Sie das Large Memory Model aus.
  • Aktivieren Sie Verwendung von On-Chip XDATA-Speicher (wenn kein externer Speicher verwendet wird).
  • Überprüfen Sie, ob die Code Banking-Unterstützung aktiviert ist (wenn Ihr Code mehr als 64 KB umfasst).

c. Bankumschaltung (falls zutreffend)

  • Der C8051F120 verwendet SFR (Special Function Registers), um die Speicherbanksteuerung zu ermöglichen.
  • Verwenden Sie EMI0CN (External Memory Interface Control), um den externen Speicherzugriff zu aktivieren.
  • Richten Sie die Bankregister (z.B. SFRPAGE) ein, um die erforderliche Bank zuzuordnen.

d. Code Banking-Unterstützung im Compiler

  • Aktivieren Sie die Code Banking-Unterstützung in Ihrem Compiler.
  • Definieren Sie die Anzahl der Banken und Bankumschaltungsfunktionen.

e. Einstellungen für den Speicherzugriff (Startdatei-Konfiguration)

  • Passen Sie die Startup.A51-Datei (Keil) oder eine entsprechende Startdatei an.
  • Setzen Sie ?B_BANKS, um die Anzahl der verwendeten Speicherbänke widerzuspiegeln.

3. Überprüfen der Stack-Nutzung

  • Stellen Sie sicher, dass Ihr Stack nicht in den Programmspeicher überläuft.
  • Optimieren Sie die Speichernutzung in Ihren Compiler-Einstellungen.

4. Überprüfen der Linker-Konfigurationsdatei (L51_BANK.A51)

  • Ändern Sie die L51_BANK.A51-Datei oder eine entsprechende Datei für Ihren Linker.
  • Definieren Sie die Speicherregionen und deren Zuordnung korrekt.

5. Beispielkonfiguration im Code

c
 
#include <C8051F120.h>
 
void main(void) {
// Erweiterten Adressierungsmodus aktivieren
EMI0CN = 0x00; // Standard-Einstellungen für internen Speicher
SFRPAGE = CONFIG_PAGE; // Zugriff auf die Konfigurationsseite
EMI0CN |= 0x80; // Erweiterten XRAM aktivieren
 
// Code, der Bankumschaltung verwendet
while (1) {
// Ihre Hauptanwendungslogik
}
}

6. Überprüfen mit der Map-Datei

Nach dem Erstellen des Projekts:

  • Überprüfen Sie die MAP-Datei, die vom Compiler generiert wird, um sicherzustellen, dass Code und Daten korrekt in verschiedene Speicherbänke abgelegt werden.

7. Testen und Debuggen

  • Verwenden Sie einen Hardware-Debugger (z.B. Silicon Labs IDE mit JTAG).
  • Überprüfen Sie das korrekte Verhalten des erweiterten Speicherzugriffs.
Ampheo