Ist es möglich, die Firmware auf einem Arduino zu aktualisieren, damit mehr Dinge wie das Ändern von Unterspannungen / Überspannungen durchgeführt werden können, um mehr Rechenleistung bereitzustellen? Um dies zu tun, müssten Sie höchstwahrscheinlich den Chip selbst neu flashen. Wie würde dies erreicht werden?
arduino-uno
firmware
JVarhol
quelle
quelle
Antworten:
So beantworten Sie den Aspekt Ihrer Frage bezüglich der "Firmware" auf der ATmega328p-MCU, die in den meisten Arduino-Boards verwendet wird:
Abgesehen vom Bootloader befindet sich auf dem ATmega überhaupt keine Firmware. Die von Ihnen geschriebenen Programme laufen direkt auf der Hardware.
Es gibt bestimmte "Sicherungseinstellungen", die mit einem ISP-Programmierer eingestellt werden . Es gibt jedoch nur 24 von ihnen (drei Bytes) und sie beziehen sich größtenteils auf die Konfiguration auf niedriger Ebene und entsprechen meiner Meinung nach nicht den folgenden Fragen:
Es gibt auch den Bootloader , ein kleines Programm, das sich in einem separaten Segment des Programmspeichers der MCU befindet und sich beim Start selbst aktualisieren kann (so werden alle Arduinos programmiert). Es läuft jedoch nur für kurze Zeit beim Start und wird vollständig aus dem Speicher entfernt, nachdem die MCU zum Hauptprogramm gesprungen ist.
Schließlich gibt es auf den meisten Arduino-Karten, die als serielle USB-Schnittstellen verwendet werden, zusätzliche MCUs (ATmega16U2 / 8U2), die aktualisiert werden können , um sich anders zu verhalten (z. B. eine Tastatur / Maus zu emulieren), aber dies ist eigentlich keine Änderung Es hängt also davon ab, wie Sie das Arduino definieren, ob es als "Installieren einer anderen Firmware" gilt.
Wirklich, ich würde dringend empfehlen, das ATmega328P-Datenblatt zu lesen . Dies ist die Dokumentation für die MCU, die im Grunde das "Arduino" bildet. Es sollte sich mit scheinbar falschen Vorstellungen befassen.
quelle
Beachten Sie, dass die folgende Tabelle in Bezug auf die Unter- / Überspannung des Geräts für verschiedene F_CPUs die Beziehung angibt. Infolgedessen werden die meisten Arduino mit 5 V und einer Taktrate von 16 MHz betrieben. Zwar gibt es einige 3,3V-Varianten, die mit 8MHz laufen.
Die mit der IDE gelieferte Kernbibliothek verfügt jedoch in der Regel über bestimmte # if-Werte für F_CPU-Geschwindigkeiten mit 8 und 16 MHz, wobei in den meisten Fällen keine Formel verwendet wird.
Daher ist es möglich, das zu tun, was Sie verlangen. Sie werden jedoch feststellen, dass sich die Einschränkungen der Kernbibliothek auswirken. Geben Sie das Kosten-Nutzen-Verhältnis an, genau so, wie es beabsichtigt ist. Und dann würde man wahrscheinlich die Stock-IDE und die Kernbibliotheken einer Makefile-Methode überlassen.
quelle