Kann Arduino UNO einen Code dauerhaft speichern?

Sep 23 2020

Ich bin wirklich neu in Arduino und wollte wissen, ob ich Arduino zu einem permanenten Controller machen kann? und könnten Sie mir mit einer günstigeren Alternative helfen? Ich wollte auch etwas über "Sicherung" wissen. Ich habe irgendwo gelesen, dass ich den Code mit einer Sicherung vor jemand anderem schützen kann, der ihn verwenden möchte.

Vielen Dank, dass du mir geholfen hast :)

Antworten

4 chrisl Sep 23 2020 at 17:13

idk wenn der arduino den code für immer speichert

Der Code wird im nichtflüchtigen Flash-Speicher gespeichert. Während des Aus- und Einschaltens verliert es seinen Inhalt nicht. Wenn man sich die Zeitdimension ansieht, hält sie den Code über einen sehr langen Zeitraum, wenn auch nicht für immer. Das Datenblatt des Atmega328p (der Mikrocontroller im Arduino Uno oder Nano) besagt:

Die Ergebnisse der Zuverlässigkeitsqualifizierung zeigen, dass die projizierte Ausfallrate der Datenaufbewahrung über 20 Jahre bei 85 ° C oder 100 Jahre bei 25 ° C viel weniger als 1 ppm beträgt.

Über 20 Jahre bei einer Temperatur von 85 ° C können Sie also 0,0001% des Datenverlusts im Flash-Speicher erhalten. Bei normaler Raumtemperatur können Sie diesen Verlust in 100 Jahren bekommen. Also deutlich länger als die Lebensdauer der meisten elektronischen Produkte.

Ich wollte auch etwas über "Sicherung" wissen. Ich habe irgendwo gelesen, dass ich den Code mit einer Sicherung vor jemand anderem schützen kann, der ihn verwenden möchte.

Es gibt verschiedene Arten und Schutzniveaus. Obwohl dies ein fortgeschritteneres Thema ist, sollten Sie es angehen, wenn Ihr Produkt anderweitig fertig ist. Es gibt im Internet mehrere Ressourcen dazu. Der erste Ort, an dem Sie suchen müssen, ist immer das Datenblatt des verwendeten Mikrocontrollers. Der erste Teil könnte darin bestehen, nicht den Standard-Arduino-Bootloader zu verwenden, sondern Ihren eigenen. Und dann können Sie 2 Sicherungen einstellen, um unterschiedliche Schutzstufen (Schreibschutz, Leseschutz) zu erhalten, die 99% der Menschen ausschließen. Diese Frage zu Electrical SE könnte Sie auch interessieren. Sie können viele Ressourcen im Web finden, indem Sie nach "Arduino-Code-Schutz" oder "AVR-Code-Schutz" suchen (wenn Sie einen AVR-basierten Mikrocontroller wie beim Arduino Uno / Nano / Mega verwenden).


Abgesehen davon würde ich Ihnen auch die Frage stellen, ob Ihr Code wirklich so neu und genial ist, dass Sie ihn davor schützen müssen, auf diese Weise gelesen zu werden. Es könnte durchaus sein, dass dies bei Ihnen der Fall ist. Aus meiner Sicht ist die Wahrscheinlichkeit jedoch sehr gering. Ich kann von meinen eigenen Codes nicht sagen, dass sie den Aufwand des Schutzes wert sind. Und es kommt auch darauf an, was Sie so wirklich verhindern wollen.

Zum Kontext: Wenn Sie das Arduino (oder einen beliebigen Mikrocontroller) mit Ihrem C / C ++ - Programm programmieren, wird der Text des Programms nicht auf dem Arduino gespeichert. Stattdessen wird der Code zuerst in Assembler-Code konvertiert und dann in binären Maschinencode kompiliert. Auf dieser Ebene sind nicht alle netten Konzepte der höheren Sprachen vorhanden, daher werden sie von mehreren Funktionen der unteren Ebene ausgeführt (zum Beispiel sind Schleifen Sprünge mit Bedingungen). Ein Angreifer liest möglicherweise den Maschinencode vom Mikrocontroller zurück. Die größte Bedrohung besteht darin, dass er es einfach auf einen neuen Mikrocontroller kopiert.

Wenn er "Code" daraus erhalten möchte, würde er einen Disassembler aufrufen, der den Maschinencode zurück in die Assembler-Sprache konvertiert. Zu diesem Zeitpunkt gehen jedoch alle Symbole (Namen von Variablen, Funktionen, ...) verloren, da sie nicht von Anfang an im ursprünglichen Maschinencode gespeichert sind. Das Lesen und Verstehen eines solchen Codes ist sehr schwierig, insbesondere wenn Ihr Code ziemlich groß und komplex ist. In den meisten Fällen ist es für einen Angreifer einfacher, Ihren Code basierend auf dem Verhalten des ursprünglichen Mikrocontrollers einfach rückzuentwickeln.

Letztendlich kann man also nicht wirklich verhindern, dass Menschen gefälschte Produkte bauen. Dafür ist ein Patent da.

Dies bedeutet nicht, dass Sie den Codeschutz nicht verwenden sollten. Führen Sie einfach eine realistische Sicherheitsbewertung durch und entscheiden Sie dann, ob sich der Aufwand lohnt.