Verständnissfrage zum Eeprom

Ich möchte UNO-Boards an bestimmte Software koppeln. Ich dachte mir das so, das ich einen Code dauerhaft im Eeprom ablege und meine Software dann diesen Code abfragt und bei richtigem Code die Anwendung frei gebe. Dazu habe ich folgende Fragen:
Bleibt der Code auch im Eeprom wenn ich andere Sketche lade?
Wie bekomme ich den Code in den Eeprom? Über einen Sketch reinschreiben und dann den eigentlichen Arbeitssketch hochladen?
Und wie kann ich den Code über eine externes Programm abfragen? Den Code im Arbeitssketch auslesen und in eine Variable kopieren? Die könnte ich dann über die serielle Schnittstelle senden und in meinem (VB NET) Programm auswerten.
Wäre toll wenn ih mir aufs Pferd helfen könntet.

Peter

Wenn Du uns erklärst, was diese etwas konfuse Beschreibung im Endeffekt für einen praktischen Sinn ergeben soll, könnte man Dir besser helfen.

Gruß Tommy

So konfus finde ich das nicht.
"Bleibt der Code auch im Eeprom wenn ich andere Sketche lade?
Wie bekomme ich den Code in den Eeprom? Über einen Sketch reinschreiben und dann den eigentlichen Arbeitssketch hochladen?"
Das sind zwei recht konkrete Fragen, unabhängig von dem Grund, warum ich das machen möchte. :wink:

Ok, mein Programm soll abfragen, ob ein bestimmtes Board angeschlossen ist. Wenn das Board -nicht der Sketch-
zb "35" an mein Programm sendet soll eine andere Programmfunktion ausgelöst werden als wenn das Board z.b. "71" sendet.

Ich hoffe das ist verständlich. Sinn ist, das Leute eigene Sketche hochladen können, aber nur auf bestimmte Boards. Diese Boards will ich an mein Programm binden. Das Programm soll also nicht funktionieren, wenn nicht diese bestimmten UNOs angeschlossen sind.

Peter

Bleibt der Code auch im Eeprom wenn ich andere Sketche lade?

Liegt an der EESAVE Fuse, ob der ChipErase auch das EEPROM löscht.

Über einen Sketch reinschreiben und dann den eigentlichen Arbeitssketch hochladen?

Oder per ISP

Und wie kann ich den Code über eine externes Programm abfragen?

Per ISP

EEPROM verwenden

Also wenn der UNO 35 angeschlossen ist, egal welcher Sketch drauf ist - hauptsache er sendet die Kennung - springt Dein Programm an.
Das halte ich für wenig sinnvoll, zumal jeder die Sendung der 35 an den PC machen kann, egal, was im EEPROM steht.

Da müsstest Du schon mit cryptografischen Methoden arbeiten, an denen beide Partner beteiligt sind, wenn da etwas sicherheitsrelevantes raus kommen soll. Dafür dürfte der UNO aber wieder zu schwachbrüstig sein.

Rein technisch geht das, was Du willst, aber als Sicherheitsmaßnahme, egal wofür/wogegen halte ich es für nutzlos.

Gruß Tommy

Hi

Naja - der Sketch muß schon die Daten aus dem eigenem EEprom auslesen um Dir Diesen zuzusenden.
Dann müsste von Dir ein 'ok' oder eben nicht kommen, worauf der Sketch durch Nicht-Ausführung reagiert.
Nun wüsste ich nicht, wieso ich in MEINEn Sketch etwas einbauen soll, Das MEIN EEPROM ausliest, Dir schickt, von Dir eine Antwort bekommt und dann soll MEIN Sketch ggf. nicht laufen?

Denke, Das gibt SO Keinen.

mfG

Skino:
Ok, mein Programm soll abfragen, ob ein bestimmtes Board angeschlossen ist. Wenn das Board -nicht der Sketch-
zb "35" an mein Programm sendet soll eine andere Programmfunktion ausgelöst werden als wenn das Board z.b. "71" sendet.

Hallo Peter,
so wirklich verstehe ich das immer noch nicht. Wo läuft dein 'Programm'? Und was ist das 'Board'? Wenn es der UNO ist, wie soll er etwas senden, wenn es nicht der Sketch tut?

Danke erst mal für eure Hilfe.

Bin schon einige Schritte weiter durch eure Tipps und gute Tutorials.
Mit Board meine ich den Arduino. Entschuldigt die unklare Ausdrucksweise.

Was ich möchte ist:
Ich habe z.b. 10 Arduino Uno und ein selbst geschriebenes Programm in VB Net. Ich möchte, das mein Programm ausschliesslich mit diesen 10 UNOs läuft, nicht mit anderen UNOs.

Warum ich das möchte sollte für den technischen Teil ja keine Rolle spielen.

Diese 10 Arduino enthalten einen Sketch. Die Leute, die damit arbeiten sollen aber auch eigene Sketche hochladen können. Sie wissen nicht das der UNO im EEprom codiert ist.

Und letzt kommt das letzte Problem, das ich lösen muss:
Kann ich diesen EEprom von außen auslesen, OHNE das ein Sketch darauf läuft? Wenn die Leute eigenen Sketche hochladen soll das Auslesen des EEproms ja nicht Teil des Sketches sein.

Und letzt kommt das letzte Problem, das ich lösen muss:
Kann ich diesen EEprom von außen auslesen, OHNE das ein Sketch darauf läuft? Wenn die Leute eigenen Sketche hochladen soll das Auslesen des EEproms ja nicht Teil des Sketches sein.

Warum glaubst du mir nicht?
Warum liest du nicht das Datenblatt?

Weil dir die Antwort nicht schmeckt?
Weil du es nicht wahr haben möchtest?

Und wie kann ich den Code über eine externes Programm abfragen?
...
Kann ich diesen EEprom von außen auslesen, OHNE das ein Sketch darauf läuft?

Per ISP

Wie bist du den drauf? Was glaube ich dir nicht?
"Liegt an der EESAVE Fuse, ob der ChipErase auch das EEPROM löscht."

Genau das habe ich doch probiert ob es bei mir gelöscht wird oder nicht und es wird nicht gelöscht.

Genau mit deiner Hilfe habe ich doch die meisten Probleme gelöst. Du solltest vielleicht lesen was du schreibst. Wenn ich dich nerve dann vermeide den Thread doch. *kopfschüttel

Hallo,

habe ich jetzt was nicht verstanden?
Was soll mich hindern, z.B. mit AVR-Studio den EEPROM auszulesen?
Was soll mich hindern, einen kelinen Sketch raufzuspielen, der mir den EEPROM-Inhalt schickt?

Gruß aus Berlin
Michael

Skino:
Ich habe z.b. 10 Arduino Uno und ein selbst geschriebenes Programm in VB Net. Ich möchte, das mein Programm ausschliesslich mit diesen 10 UNOs läuft, nicht mit anderen UNOs.

Diese 10 Arduino enthalten einen Sketch. Die Leute, die damit arbeiten sollen aber auch eigene Sketche hochladen können. Sie wissen nicht das der UNO im EEprom codiert ist.

Und letzt kommt das letzte Problem, das ich lösen muss:
Kann ich diesen EEprom von außen auslesen, OHNE das ein Sketch darauf läuft? Wenn die Leute eigenen Sketche hochladen soll das Auslesen des EEproms ja nicht Teil des Sketches sein.

Wie soll denn der PC mit dem Arduino verbunden sein? Wie kommuniziert dein Programm mit dem UNO?
Wie schon geschrieben wurde, kannst Du das EEPROM über den ISP auslesen. Dazu muss der UNO aber über eine entsprechende HW mit dem PC verbunden sein. Die serielle Schnittstelle reicht da nicht aus. Es funktioniert auch nicht während der Sketch läuft. Der UNO ist während dieser Kommunikation im RESET-Zustand. Außerdem musst Du das spezielle Protokoll dafür beachten. Evtl könntest Du dazu avrdude verwenden. Wie das alles praxisgerecht laufen soll, wenn die Leute dann auch ihre eigenen Sketche schreiben sollen, ist mir allerdings nicht klar.

Vergiss das alles und ignoriere den EEPROM!
Das wird hinten und vorne nicht funktionieren, egal wie Du es drehst.

Ein (originaler) Arduino verfügt über einen FTDI-Chip für die USB Kommunikation.
Dieser Chip hat eine eindeutige ID.
Man kann im Gerätemanager unter Eigenschaften -> Details diese ID anzeigen.

In Deinem .Net Programm kannst Du nun prüfen ob die Hardware an dem entsprechenden COM-Port eine der Dir bekannten 10 ID´s ist und fortfahren. Oder das Gerät ignorieren.
Dazu findest Du zahlreiche Tutorials, wie man ein USB-Gerät identifiziert und auch die Eigenschaften auslesen kann.

Dass ich Dein VB-Programm in 0,5 Sekunden wieder in lesbaren Code umgewandelt habe, ist Dir aber hoffentlich bewusst?

Hallo,

ich wollte mehr darauf hinweisen, daß ich wohl in kürzester Zeit viele seiner UNOs hätte, wenn ich auf einen mal Zugriff habe...

@TriB: ein originaler UNO hat einen Mega16U2 als Bridge, auch dem kann ich beibringen, was ich will.

Gruß aus Berlin
Michael

Mal eine ganz generelle Betrachtung:

Auf jedem µC gibt es mehrere Möglichkeiten zum Programmieren, d.h. Zugriff auf Flash, EEPROM usw.:

  • entweder die debugWire oder
  • Parallel Programming Hardware, die ohne extra Programm funktionieren,
  • oder über eine Boot Loader Software, die nach jedem Reset nachschaut ob ihre Dienste benötigt werden, bevor sie das zuletzt geladene Programm startet.

Beim Uno, Mega etc. gibt es 2 Controller auf dem Board, einer für den USB Anschluß und einer für das eigentliche Programm. Diese beiden lassen sich über ihre jeweilige ISP Schnittstelle separat soft programmieren.

Wie bist du den drauf? Was glaube ich dir nicht?

Wenn ich dir sage, dass du das EEPROM nur über ISP von einem externen Programm auslesen kannst......
Und eine Stunde später die Frage kommt:

Kann ich diesen EEprom von außen auslesen, OHNE das ein Sketch darauf läuft?

Lauter Cracks hier, die Programme sofort zerlegen *lach

"Was soll mich hindern, z.B. mit AVR-Studio den EEPROM auszulesen?!"

Klar könnt ihr das und auch die anderen Tricks. Aber ich könnte das z.b. nicht und viele andere auch nicht.

Das mit der ID ist ne gute Idee, vielen Dank dafür.

Ach so, der Arduino ist per USB und virtuellem COM Port an einem Windows PC.

Danke für die Hilfe, hat mich weitergebracht.

Bis zu nächsten Problem.

Peter

Skino:
Kann ich diesen EEprom von außen auslesen, OHNE das ein Sketch darauf läuft?

Kommt auf die Fuse und Lock Bits an, wie gut der Inhalt des Chips gesichert ist.

@Skino

Vll. solltest Du die Hände, Die Dich füttern, nicht als Cracks bezeichnen.

Aber mach' Du Mal - Deine Idee wird Dich zum Millionär machen - mindestens - und die Leute werden Dir die Bude einrennen, um mit Deinem VB-net-Programm spielen zu dürfen.

Ja - man darf durchaus mit Seiner Idee auch Geld verdienen - auch mit Arduinos - aber dann sollte man Das auch schon halbwegs selber hinbekommen.
Und wenn Einem ein Dutzend Leute, Die wohl halbwegs Ahnung von der Materie haben, erzählen, daß der gewählte Weg eine Sackgasse ist - jo, kann man Das auch stur ignorieren - wie in frühen Kindertagen - wenn man die Augen zu hat, klappt Verstecken gleich viel besser!

Vll. wirst Du mit Original-Arduinos und den darin wohl enthaltenen Seriennummern glücklich - hat zumindest den Vorteil, daß Arduino auch was davon hat.

Achja ... *lach :wink:

Ich habe keine finanziellen Interessen mit dem Projekt. Woraus schliesst du das? Ich bin 56 Jahre alt und muss nicht mehr auf Biegen und Brechen Geld verdienen. Das ist lediglich Hobby. Eigentlich ist es Hobby, was ich mit dem Arduino mache, nicht das programmieren selber. Das mache ich lediglich, weil ich keine fertige Lösung gefunden habe. Deshalb habe ich auch wenig Kenntnis davon und es wird sich auch nicht ändern. Ich habe einfach keine Zeit alles und jedes zu lernen. Ich fummle mir das meiste so zusammen. Sicher nicht elegant oder effizient aber es reicht für meine Bedürfnisse. Was ich nicht weis frage ich einfach. Daraus ergeben sich manchmal auch so nette Gespräche wie hier.

Ein Crack ist übrigens jemand, der sich auf einem Gebiet wirklich gut auskennt. Ich zitiere mal:

"ein Crack ist einer, der sich wirklich, wirklich gut in einem Thema auskennt.Dabei ist der Crack sonst ein normaler Typ. Also nicht zu verwechseln mit dem Fachidioten, der sich zwar auch wirklich gut auskennt, aber absolut nur in seinem Bereich und der ist ansonsten nicht lebensfähig."

Sollte ich das jemanden fälschlich unterstellt haben bitte ich um Entschuldigung.