Zum Inhalt springen

Was steckt in meinem ESP32?

    In der Programmierung sind Header-Dateien ein grundlegendes Konzept, das in vielen Programmiersprachen, insbesondere in C und C++, eine zentrale Rolle spielt. Sie sind eine Art von Datei, die Definitionen, Deklarationen und Prototypen von Funktionen, Klassen und Variablen enthält, die in anderen Quellcodedateien verwendet werden. Header-Dateien haben üblicherweise die Endung .h und ermöglichen es Entwicklern, den Code sauber, modular und wieder verwendbar zu gestalten.

    Header-Dateien erleichtern die Organisation des Codes, indem sie die Deklarationen von Funktionen und Klassen zentralisieren. Dies ermöglicht es, den Hauptcode in verschiedenen Dateien zu organisieren, ohne die Implementierungsdetails immer wieder zu wiederholen. Beim Kompilieren wird der Inhalt der Header-Dateien in die entsprechenden Quellcodedateien eingefügt, was zu einer besseren Strukturierung und Übersichtlichkeit des Codes führt.

    In der Welt des Mikrocontroller-Programmierens, wie beim ESP32, sind Header-Dateien besonders wichtig, um die Funktionen und Bibliotheken, die die Hardware des Mikrocontrollers ansteuern, zu verwalten und zu nutzen. Eine solcher Header-Datei ist ESP32.h, die eine Vielzahl von Funktionen bietet, um die unterschiedlichen Features und Hardware-Komponenten des ESP32 zu steuern.

    Diese Funktion ist im Quellcode der ESP32 Arduino Core definiert, und du findest sie in den Header-Dateien der ESP32 Arduino Core Bibliothek.

    Funktionen der ESP32.h

    In den folgenden Abschnitten werden wir die wesentlichen Funktionen der ESP32.h-Header-Datei erläutern. Diese Funktionen sind entscheidend für die Programmierung und Nutzung des ESP32-Mikrocontrollers und bieten Zugriff auf eine Vielzahl von Hardware- und Systemressourcen. Von der Abfrage des Flash-Speichers bis hin zur Verwaltung der PSRAM-Größe und der MAC-Adresse des Chips – die ESP32.h-Datei ist ein zentrales Werkzeug für die Entwicklung von Projekten mit dem ESP32. Den Beitrag zur Ermittlung der Daten findest du hier!

    Ausgehend von der Tatsache, dass nicht alle Boards die Eigenschaften haben, wie sie in verschiedenen Verkaufsportalen deklariert werden, habe ich mich einmal mit der Möglichkeit beschäftigt, an die Daten der Chips heranzukommen. Die Informationen will ich euch nicht vorenthalten.


    Speicher

    Der Heap-Speicher im ESP32 ist der Bereich des Arbeitsspeichers, der für dynamische Speicherzuweisungen verwendet wird. Dieser Speicher wird in der Regel durch Funktionen wie malloc() und free() in der Programmiersprache C verwaltet. Im Gegensatz zum Stack-Speicher, der für die Verwaltung von lokalen Variablen und Funktionsaufrufen verwendet wird, ermöglicht der Heap-Speicher die flexible Zuweisung und Freigabe von Speicher während der Laufzeit des Programms.

    getHeapSize()
    Die Funktion gibt die Gesamtgröße des verfügbaren Heap-Speichers zurück. Diese Funktion ist besonders nützlich, um Informationen über die aktuelle Größe des Heap-Speichers zu erhalten, die für die Ausführung von Programmen auf dem ESP32 zur Verfügung steht.

    getFreeHeap()
    Hier erfahren wir, wieviel Speicher im Heap noch verfügbar ist.

    getMaxAllocHeap()
    Gibt die maximal verfügbare Heap-Größe zurück, die für eine einzelne Speicherzuweisung zur Verfügung steht.

    Diese Funktionen sind nützlich, um den Speicherverbrauch zu überwachen und sicherzustellen, dass dein ESP32-Projekt effizient mit dem verfügbaren Speicher umgeht.


    Was ist PSRAM?

    • PSRAM steht für Pseudo-Static Random-Access Memory. Es ist eine Art von DRAM (Dynamic RAM), das wie SRAM (Static RAM) funktioniert, jedoch in der Regel kostengünstiger und speicherdicht ist. Im Gegensatz zu SRAM benötigt PSRAM eine periodische Auffrischung, wie es bei DRAM üblich ist, aber es ist dennoch eine weit verbreitete und nützliche Speichervariante.
    • PSRAM wird oft verwendet, um den verfügbaren Arbeitsspeicher eines Mikrocontrollers zu erweitern, insbesondere bei anspruchsvolleren Anwendungen, die mehr Speicher benötigen als der interne SRAM des Mikrocontrollers bieten kann.

    getPsramSize()
    Die Funktion wird verwendet, um die Größe des verfügbaren externen PSRAM zu ermitteln. PSRAM ist oft auf ESP32-Modulen vorhanden, die diesen zusätzlichen Speicher unterstützen. Diese Funktion gibt die Größe des PSRAM in Bytes zurück.

    Weitere Funktionen sind getFreePsram(), getMinFreePsram(), getMaxAllocPsram() die eigentlich selbsterklärend sind.


    Chip Daten

    Chip-Revision: Dies bezieht sich auf die Version oder das Modell eines Mikrocontrollers, das bestimmte Merkmale oder Verbesserungen gegenüber früheren Versionen aufweist. Herstellungsprozesse und Designs können sich im Laufe der Zeit ändern, und neue Revisionen eines Chips können Bugfixes, Leistungsverbesserungen oder zusätzliche Funktionen enthalten.

    Die Funktion getChipRevision() gibt einen Wert zurück, der die Revision des Chips angibt. Diese Revision kann eine numerische Kennung sein, die Informationen über die Hardware-Version des ESP32 liefert. Dies ist besonders nützlich, wenn du sicherstellen möchtest, dass dein Code mit einer bestimmten Revision des Chips kompatibel ist oder wenn du Funktionen nutzen möchtest, die möglicherweise nur in bestimmten Revisionen verfügbar sind.

    getChipModel(): gibt uns den Modellnamen
    getChipCores(): gibt uns die Anzahl der Kerne
    getCpuFreqMHz(): ermittelt die Taktfrequenz des ESP32

    „CPU Frequenz“ oder „CPU-Taktfrequenz“ in Megahertz (MHz) beschreibt die Anzahl der Taktzyklen, die der Prozessor pro Sekunde ausführen kann. Die CPU-Frequenz ist ein wichtiger Indikator für die Verarbeitungsleistung des Mikrocontrollers. Eine höhere Frequenz bedeutet in der Regel, dass die CPU mehr Berechnungen pro Sekunde durchführen kann, was zu einer besseren Leistung führt.

    ESP32-spezifische Details

    Anpassbare Frequenz: Die CPU-Frequenz kann in vielen Fällen durch Software angepasst werden, um den Energieverbrauch zu optimieren oder die Leistung zu verbessern. Dies wird oft durch Funktionen im ESP-IDF (Espressif IoT Development Framework) oder in der Arduino-IDE ermöglicht.

    Standard-CPU-Frequenz: Der ESP32 hat zum Beispiel eine CPU-Frequenz von bis zu 240 MHz. Dies bedeutet, dass die CPU bis zu 240 Millionen Taktzyklen pro Sekunde ausführen kann.


    Was ist der Flash-Speicher?

    Flash-Speicher: Der Flash-Speicher im ESP32 ist der nichtflüchtige Speicher, in dem der Code und die Daten dauerhaft gespeichert werden. Dies ist der Speicher, der beim Booten des ESP32 initialisiert wird und der für das Hochladen von Firmware, das Speichern von Konfigurationen und die dauerhafte Speicherung von Programmdaten verwendet wird.

    getFlashChipSize() – Ermittle die Größe des Flashspeichers
    getFlashChipSpeed() – Geschwindigkeit, wie schnell der Chip beschrieben werden kann
    getFlashChipMode() – Die Werte, die getFlashChipMode() zurückgeben kann, sind typischerweise Konstanten, die die Kommunikationsmodi des Flash-Speichers beschreiben.


    Programmspeicher

    getSketchSize() – Ermittle die Größe des Programmspeicher
    getFreeSketchSpace() – ist eine Methode, die dir die Menge des verbleibenden Flash-Speichers angibt

    getSketchMD5() – Die Funktion getSketchMD5() ist eine nützliche Methode in der Arduino-Umgebung, die den MD5-Hash-Wert des aktuell hochgeladenen Sketches (Programms) auf dem Mikrocontroller zurückgibt.

    Was ist MD5?
    MD5 (Message Digest Algorithm 5): MD5 ist ein kryptographischer Hash-Algorithmus, der eine 128-Bit-Hash-Wert (16 Byte) aus beliebig großen Datenmengen erzeugt. Er wird oft verwendet, um Datenintegrität zu überprüfen, indem ein einzigartiger Fingerabdruck für die Daten erstellt wird. Bei Software und Firmware kann dies dazu beitragen, sicherzustellen, dass der Code nicht verändert oder beschädigt wurde.


    Was ist eine MAC-Adresse?

    MAC-Adresse: Eine MAC-Adresse ist eine einzigartige Hardware-Adresse, die jedem Netzwerkgerät zugewiesen wird. Sie besteht aus 48 Bit (6 Byte) und wird in der Regel in hexadezimaler Schreibweise dargestellt. Sie wird verwendet, um Geräte innerhalb eines Netzwerks zu identifizieren und Datenpakete an das richtige Gerät zu senden. Dazu kommen wir spätestens, wenn wir uns mit ESP NOW beschäftigen

    Was macht getEfuseMac()?
    Diese Funktion gibt die MAC-Adresse des ESP32 zurück, die in den sogenannten eFuse-Speicher des Chips eingebrannt ist. Der eFuse-Speicher ist ein spezieller Bereich des Flash-Speichers, der einmal programmiert werden kann, um dauerhaft Daten wie MAC-Adressen, Seriennummern oder andere einzigartige Identifikatoren zu speichern.

    Wir haben jetzt eine Holz zusammengetragen, um die Daten eines ESP besser verstehen zu können.
    Ich hoffe dies ist auch für dich nützlich. Gerne kannst du dies in einem Kommentar als Feedback bekannt geben.

    Im nächsten Beitrag kümmern wir uns dann um die Programmierung des ESP zum Auslesen der Daten des ESP.

    0 Kommentare
    Inline Feedbacks
    View all comments
    Schlagwörter: