Installieren einer anderen Firmware auf Arduino

12

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?

JVarhol
quelle
2
Die meisten neuen Funktionen werden durch Bibliotheken und Programmierung bereitgestellt. Von was für "mehr Dingen" redest du?
TheDoctor
Was TheDoctor gesagt hat, was meinst du mit mehr Dingen? Und worauf beziehen Sie sich bei "Firmware"? Ist die Software / das Betriebssystem an Bord?
hichris123
Sollte ich nur die Frage löschen
JVarhol
@JVarhol Wenn du es klarer machen kannst, nah, behalte es. Erklären Sie uns einfach, was genau Sie denken ...
hichris123
Ich weiß, dass Sie neue Firmware auf dem USB-Seriell-Chip installieren können, damit er eine Tastatur emulieren kann
TheDoctor

Antworten:

7

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:
Bildbeschreibung hier eingeben

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.

Connor Wolf
quelle
5

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.

Frequenz vs Vcc

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.

mpflaga
quelle
Anscheinend kann es auf 20 MHz übertaktet werden
TheDoctor
@TheDoctor - das ist kein Übertakten. Der ATmega328p ist für 20 MHz ausgelegt. Arduinos tatsächlich untertaktet bis 16 MHz.
Connor Wolf
@FakeName ja, ich meinte, dass Sie ein Arduino-Board so modifizieren können, dass der erforderliche Resonator auf 20 MHz eingestellt ist
TheDoctor
Oh, noch eine Randnotiz. Sie können den sicheren Betriebsbereich in der Regel ohne größere Probleme überschreiten . Ich habe eine Reihe von Platinen mit 16 MHz und 3,3 V-Schienen ohne Probleme. Sie können Stabilitätsprobleme bei extremen Temperaturen haben, aber es scheint, dass es bei Raumtemperatur meistens gut funktioniert.
Connor Wolf