Kostenlose technische Bibliothek ENZYKLOPÄDIE DER FUNKELEKTRONIK UND ELEKTROTECHNIK Initialisierung zusätzlicher Speichersegmente in Programmen für Mikrocontroller der MCS-51-Familie. Enzyklopädie der Funkelektronik und Elektrotechnik Lexikon der Funkelektronik und Elektrotechnik / Mikrocontroller Moderne Mikrocontroller verfügen über einen integrierten nichtflüchtigen Datenspeicher (EEPROM), in den manchmal Informationen eingegeben werden müssen, bevor das Gerät seine Arbeit aufnimmt. Das Abbild (Firmware) dieses Speichers muss während der Entwicklung des Programms erstellt werden. Dies kann beispielsweise durch Assembler für Mikrocontroller der PICmicro- und AVR-Familien erfolgen. Sie geben dem Programmierer die Möglichkeit, ein zusätzliches Speichersegment zu organisieren und darin die Ausgangsdaten zum Schreiben in das EEPROM festzulegen. Assembler für Mikrocontroller mit dem MSC-51-Kern ermöglichen auch die Aufteilung des Speichers in mehrere Teile, allerdings ist nur in einem davon – dem ausführbaren Codesegment – eine Initialisierung möglich. In allen anderen ist es nur erlaubt, Speicherzellen zu reservieren und nur während der Ausführung des Programms Daten darauf zu schreiben. Der Ausweg aus der Situation kann die unten beschriebene Technik sein. Sein Kern ist die Verwendung der bedingten Assemblierung, wodurch die Initialisierung des Codesegments je nach Übersetzungsbedingungen auf unterschiedliche Weise erfolgt. Mit den resultierenden HEX-Dateien kann nicht nur das interne EEPROM des Mikrocontrollers, sondern auch externe Speicherchips programmiert werden. Künstlich erzeugte Zusatzsegmente (es sind beliebig viele möglich) werden im Programmtext vor dem eigentlichen Codesegment platziert. In einem davon definierte Labels sind im Folgenden in allen Bereichen bekannt, einschließlich des eigentlichen Codesegments. Links in die entgegengesetzte Richtung sind jedoch nicht zulässig. Es gibt keine Einschränkungen hinsichtlich der Art und des physischen Standorts des zusätzlichen Speichers. Ein Beispiel für ein Programm mit zwei zusätzlichen initialisierten Segmenten, die üblicherweise als EEPROM und FLASH bezeichnet werden, ist in der Tabelle dargestellt. 1. Nach dem Speichern in der Datei example.asm verwenden wir den ASEM-51-Assembler, der kostenlos unter „heruntergeladen“ werden kann . Führen Sie zunächst den Assembler auf der Befehlszeile aus asem example.asm eeprom.hex/define:EEPROM Beim Verarbeiten der ersten Zeilen des Programmtexts werden die Bezeichnungen idEeprom, ptrWord und prtBufE in die Symboltabelle eingefügt und die durch die DB- und DW-Anweisungen angegebenen Daten in die Ausgabedatei eeprom.hex (Tabelle 2) eingefügt. Anschließend wird die Segmentlänge überprüft. Wenn der Wert des Programmzählers die physikalisch vorhandene EEPROM-Größe (in diesem Fall 640 Zellen) überschreitet, wird eine Fehlermeldung angezeigt. Wenn das Volumen des Segments offensichtlich klein ist, kann die Prüfung ausgeschlossen werden. Ähnliche Kontrollen sind auch in anderen Segmenten denkbar. Als nächstes trifft der Assembler auf die IFNDEF EEPROM-Direktive. Da ein Symbol mit diesem Namen in der Befehlszeile definiert ist (Parameter /define:EEPROM), werden alle folgenden Zeilen des Programms bis zur ENDIF-Direktive ignoriert und die Übersetzung endet dort. Führen Sie die erneute Übertragung desselben Programms über die Befehlszeile aus asem example.asm flash.hex/define:FLASH Es unterscheidet sich vom vorherigen nur durch die Definition des FLASH-Symbols anstelle des EEPROM-Symbols. Die erste Übersetzungsstufe läuft genau wie oben beschrieben ab und die Daten des EEPROM-Segments werden in die Ausgabedatei geschrieben. Die IFNDEF EEPROM-Anweisung unterbricht den Prozess dieses Mal jedoch nicht und die folgende ORG 0-Anweisung setzt den Programmzähler zurück. Der Assembler beginnt mit dem Schreiben der für das FLASH-Segment bestimmten Daten ab Adresse Null in die Ausgabedatei. Die Übertragung wird durch die IFNDEF FLASH-Anweisung unterbrochen. Die endgültige Form der Datei flash.hex ist in der Tabelle dargestellt. 3. Wir setzen die Übersetzung des wahren Segments des ausführbaren Codes durch den Befehl asem-Beispiel.asm Zunächst werden zusätzliche Segmente neu kompiliert und alle darin definierten Labels werden in die Assembler-Symboltabelle eingetragen, wodurch sie vom Codesegment aus referenziert werden können. Die Direktive ORG 0 ganz am Anfang setzt den Programmzähler noch einmal zurück. Die Übertragung wird wie gewohnt fortgesetzt. In der resultierenden example.hex-Datei (Tabelle 4) beginnt der ausführbare Code des Programms in der vierten Zeile und folgt den Zeilen, die mit denen in den vorherigen HEX-Dateien identisch sind. Das Vorhandensein redundanter Informationen beeinträchtigt in der Regel nicht das korrekte Laden des Codes in die entsprechenden Speicherbereiche des Mikrocontrollers. Im Puffer des Programms, das die Programmierung steuert, „verdrängen“ die korrekten Daten bei Übereinstimmung der Adressen die zuvor eingegebenen. Und nur wenn das neue Segment kürzer als das vorherige ist, wird sein „Schwanz“ im Puffer gespeichert. Aus diesem Grund ist es wünschenswert, Segmente im Programm in aufsteigender Reihenfolge ihrer Länge zu beschreiben. Einige Programmierer verfügen nicht über einen Zwischenpuffer oder kontrollieren die Eingabedaten streng und lassen keine Adressüberschneidungen zu. Im ersten Fall ist die Programmierung fehlerhaft, im zweiten Fall startet sie überhaupt nicht, bis die „Fehler“ behoben sind. Sie können zusätzliche Zeilen manuell mit einem beliebigen Texteditor aus einer HEX-Datei entfernen. Sie können dies auch automatisch tun, indem Sie zwei Befehle hintereinander ausführen: hex2bin Beispiel.hex bin2hex Beispiel.bin Beim ersten Schritt wird ein Binärbild der in der Datei „example.hex“ enthaltenen Daten erstellt und in der Datei „example.bin“ abgelegt. Der zweite führt die umgekehrte Transformation durch und erstellt eine neue example.hex-Datei ohne Schnickschnack. Unter den Adressen können die notwendigen Programme „heruntergeladen“ werden Und . Autor: S. Chekunov, Ischewsk Siehe andere Artikel Abschnitt Mikrocontroller. Lesen und Schreiben nützlich Kommentare zu diesem Artikel. Neueste Nachrichten aus Wissenschaft und Technik, neue Elektronik: Eine neue Möglichkeit, optische Signale zu steuern und zu manipulieren
05.05.2024 Primium Seneca-Tastatur
05.05.2024 Das höchste astronomische Observatorium der Welt wurde eröffnet
04.05.2024
Weitere interessante Neuigkeiten: ▪ Externe Batterien HyperJuice für mobile Geräte ▪ Gewinnung nützlicher Ressourcen auf dem Mond ▪ Urbanista Phoenix TWS Ohrhörer mit eingebauter Solarbatterie News-Feed von Wissenschaft und Technologie, neue Elektronik
Interessante Materialien der Freien Technischen Bibliothek: ▪ Site-Abschnitt Fehlerstromschutzschalter. Artikelauswahl ▪ Artikel Lange Box. Populärer Ausdruck ▪ Wie kam der mexikanische Vulkan Paricutín zu seinem Namen? Ausführliche Antwort ▪ Artikel Arbeiten mit einer Kolbenmontagepistole. Standardanweisung zum Arbeitsschutz ▪ Artikel Eine Banknote wird mit einem Bleistift durchstochen und bleibt unversehrt. Fokusgeheimnis
Hinterlasse deinen Kommentar zu diesem Artikel: Alle Sprachen dieser Seite Startseite | Bibliothek | Artikel | Sitemap | Site-Überprüfungen www.diagramm.com.ua |