Hallo Experten, ich brauche wiedermal Eure Unterstützung. Ich habe ein Programm geschrieben das soweit auch funktioniert! Jetzt ist nur noch die Frage offen wie ich in der Serie die Seriennummer (die im Flash abgelegt sein muss) komfortabel dort hin bekomme ohne 100 mal den Quellcode abzuändern und neu zu kompiliere! Ich hoffe ich habe mich einigermaßen klar Ausgedrückt. Bin schon gespannt was Euch alles einfällt ! Danke Gruß Peter PS: Kann man dafür vielleicht eine Bat missbrauchen ???
Pier S. schrieb: > PS: Kann man dafür vielleicht eine Bat missbrauchen ??? Die arme Fledermaus!! Hast du die Möglichkeit sie vieleicht per Usart zu senden und der mc (?) schreibt sie von selbst dahin?Was ist es denn für ein System überhaupt? In welchen Flash? Welche möglichkeiten hast du da hinzukommen?
Pier S. schrieb: > PS: Kann man dafür vielleicht eine Bat missbrauchen ??? Fledermäuse missbrauchen? Igitt. ;-)
Hallo, >richtige vorgehensweiße Seriennummer muß es wirklich unbedingt eine weiße Seriennummer sein, geht keine grüne? ;-) Da keine Infos dazu vorliegen: wäre es ein AVR und ich sollte es machen, würde ich wohl besagte Seriennummer per Quellcode passend im Flash ablegen. Dann mit einer Fledermaus oder passender Scriptsprache den Kram im HEX-File anpassen. Zeile mit Seriennummer nehmen, neue eintragen und Prüfsumme anpassen. Falls das File zum Flashen natürlich kein HEX-Format ist, geht es natürlich trotzdem, muß man es eben im bin suchen und replacen. PS: wie ich mich kenne, würde ich das in PHP schreiben und auf meinem lokalen Webserver erledigen, einfach, weil ich PHP kann und der da ist. ;) Gruß aus Berlin Michael
Hmm, eigentlich die schon genannten Möglichkeiten: Entweder über ein Programm das entsprechende Binärfile vor dem Programmieren jedes einzelnen Controllers automatisch patchen. Allerdings nicht mit einem Webserver und PHP sondern mit einem C/C++ Programm, Perl oder Java oder von mir aus VB! Oder als Seriennummer eine Magic Number einbauen, und bei einer hoffentlich vorhandenen Prüfung der programmierten Chips die Seriennummer über eine (vorhandene?) USB/ serielle Schnittstelle einpflegen. Damit die Nummer später nicht geändert werden kann das Progrämmchen auf dem Controller so machen, daß er die Änderung der Seriennummer nur dann ausführt wenn dort noch die Magic Number steht.
sollten die fuses danach nicht eh so gesetzt werden, dass der chip nicht mehr verändert werden kann?? ansonsten kann man vll auch mit einem bootloader arbeiten der vll gelöscht wird nach dem die nummer dadrin steht?? ich denke aber über uart ist es einfacher (Def.: kleiner Aufwand in der Serienfertigung) als eine *.bat für den Source code, vorallem würde man sich so sehr viel rechenarbeit und speicherplatz sparen- wenn auf Vorrat compilet wird^^- aber gibt es für Avr noch keine Fertigen Algorithmen, weil das ist doch eig etwas wichtiges was schon so mancher gebraucht haben sollte?? Bei Firmwareupdates musst du dann aber auch beachten, dass du die Seriennummer nicht killst. mfg
Manche Programmer können das. Ich glaube, bei einem aus folgender Serie habe sowas mal gesehen. http://www.elnec.com/products/device-programmers/beeprogplus/
hast du schon mal daran gedacht, dass es dafür extra Schaltkreise gibt? Z.B. DS1990A --> 1wire iButton von Maxim Grüße Uwe
Mach OpenSource daraus, dann brauchst du keine Seriennummer!
Ich hatte mal einen Bootloader, der die Seriennr in asm per include bekommen hat. Das assemblieren geht innerhalb von nem Bruchteil einer Sekunde. Das so erstelle Hexfile wird mit dem der Applikation kombiniert und geflasht. Der bootloader stellt dann die Seriennummer in einen bestimmten Speicherbereich, den die Applikation gleich nach dem Start liest und in ein Array schreibt, sodass sie nicht gleich wieder ueberschrieben wird. Funktioniert gut und das Programmieren dauert nicht wirklich laenger. Gruss, pioupus
Klaus schrieb: > Blödsinn. Wirklich? Frag dich mal, wie gut ein Programm sein kann, dessen Programmierer noch nicht mal gut genug Programmieren kann ,um zu wissen wie man eine Seriennummer unterbringt...
Ehe ihr hier polemisch werdet. Es gibt durchaus Situationen, wo man einen Checf hat, oder Geld mit seiner Arbeit verdienen muß und die Software nicht OpenSource machen kann!
Wenn Du die Prozessoren in einem Programmer vor dem Einbau programmieren kannst, schau Dir mal den Galep-Programmer von CONITEC an. Der kann selbständig Seriennummern vergeben. (Nach Deiner Vorgabe) Mit der Vergabe von Seriennummern und deren Einbau ins Programm/Codespeicher ist es halt nicht getan, man muß auch noch die Serienenummern halbwegs vernünftig verwalten. Letzteres kann in Arbeit ausarten. Sparversion für SN: Datum, (Uhrzeit) und fortlaufende Nummer für ein Programmierlos. Reicht bei kleineren Stückzahlen erfahrungsgemäß aus.
Und wenn man einen MC richtig sichern will, dann sperrt man ihn doch wohl gegen auslesen. Da sieht man weder Programm noch Seriennummer. Da bleibt nur die äußere Kennzeichnung des MC.
Pier S. schrieb: > Jetzt > ist nur noch die Frage offen wie ich in der Serie die Seriennummer (die > im Flash abgelegt sein muss) Muss wirklich? Schade. Sonst sind die "Kopfdaten", auch "elektronische Gerätekarte" genannt, eine bewährte Praxis: 1. Kopfdaten stehen als linked list im EEPROM. 2. Kopfdaten enthalten auch eine Kurzbeschreibung des Geräts. 3. Angehängt werden auch Kalibrierdaten. 4. Hat Deine Serienfertigung mehrere Schritte? Dann ist eine Unterstützung für die Qualitätssicherung denkbar mit Informationen, welche Bearbeitsungsmaschine ihre Spuren hinterlassen hat. 5. Fehlerereignisse sind in diesem Logbuch auch hilfreich. Wenn die Versiegelung am Gerät geöffnet und was geändert wird (Produkthaftung!), wird die Änderung mit Tag und Zeit an die Kopfdaten angehängt. (An der Einfügung von Passfoto, Unterschrift und Fingerabdruck in 4k EEPROM arbeite ich noch...." :-)) Manche Premium-Meßgeräte machen das sogar für jede Baugruppe. Ciao Wolfgang Horn
Vielen Dank für Eure Anregungen! Ja ich verwende einen Avr! Es geht hierbei nicht um das Schützen der Software, sondern um die Identifizierung des Geräts! Von außen habe ich aber keinen Schnittstelle zum Gerät (außer ISP ) und das EEPROM will mein Chef nicht verwenden. Ich glaube ich muß mir irgend eine Software anfertigen die das hexfile abändert! Hat vielleicht jemand einen C# Code Schnipsel zur Erstellung der Prüfsumme von Hexfilses Danke Gruß Peter
Das Intel HEX ist im Wiki beschrieben, auch die Prüfsumme: http://de.wikipedia.org/wiki/Intel_HEX#Berechnung_der_Pr.C3.BCfsumme Kleiner Tip: Wenn das Programm und die Hardware es zulassen kannst du ja z.B. beim Start (Power on) ein, zwei oder mehr Pins abfragen und wenn das Muster stimmt auf einem Pin (evtl. eine vorhandene LED) ausgeben (binär,z.B. 1 = 200 ms ein, 0 = 50 ms ein Pause immer 200 ms). Displayausgabe ist besser wenn vorhanden ;) Danach (oder wenn Abfrage negativ) das normale Programm. avr
Pier S. schrieb: > Vielen Dank für Eure Anregungen! > Ja ich verwende einen Avr! Es geht hierbei nicht um das Schützen der > Software, sondern um die Identifizierung des Geräts! Von außen habe ich > aber keinen Schnittstelle zum Gerät (außer ISP ) Wie soll man es dann identifizieren? Es muß ja eine Schnittstelle haben, über die es seine Seriennummer irgendwem mitteilen kann. > und das EEPROM will mein Chef nicht verwenden. Warum nicht? Einfach nur, weil er EEPROMs halt nicht mag, oder hat das auch einen konkreten Grund?
warum so kompliziert, nutze irgend einen Programmer den man per batch aufrufen kann (AVRDUDE). Ne kleine Software schreiben (Commandozeilen Tool) das ne generierte Seriennummer in das Hex file schreibt und dann noch in ne kleine Datenbank sichert (Datum, Seriennummer, Firmwareversion ...). Ist vielleicht ne arbeit von einem Vormittag und man hat ne einfach zu bedienende Lösung die keinen Compiler benötigt.
Die .bat ist wahrscheinlich das einfachste, wenn es um kleinere Stückzahlen und manuelles Flashen geht und jemand qualifiziertes das ganze durchführt und überwacht. In dem Fall kann man auch für jede Seriennummer neu compilieren. Wenn der Code geschickt strukturiert ist, sollte die Zeit fürs Compilieren/Linken gegenüber dem Aufwand für das Flashen vernachlässigbar sein. 5-Minuten-Pfusch-Ansatz, der Datum+Zeit, die SVN-Infos des Verzeichnisses und die Seriennummer (hier fest 1 bis 100) in ein excelkompatibles .csv speichert:
1 | #!/bin/bash
|
2 | LOG="bla.csv" |
3 | for i in `seq 1 100`; do |
4 | echo "#define SERIAL $i" > serial.h |
5 | make |
6 | echo "naechstes anstoepseln und enter druecken, q zum beenden" |
7 | read a
|
8 | if [[ "$a" == "q" ]]; then |
9 | exit |
10 | fi |
11 | make program # oder direkt avrdude anwerfen... |
12 | (date -R ; svn info) | tr "\n" ";" >> "$LOG" |
13 | echo "$i" >> "$LOG" |
14 | done
|
Das müsste mit der Fledermaussprache prinzipiell genauso funktionieren, aber das darf jemand mit Windowskenntnissen vorkauen.
Vielen Dank Euch allen ich muß die Ganzen Infos jetzt überdenken und dann entscheiden was für meinen Fall am besten Funktioniert ! Vielen Dank schönes WE Peter
@ Thorsten M... (thorstenm) Ich glaube da fehlt noch etwas um die serial.h wieder zu löschen?!?!
Gerry E. schrieb: > ichhhhh schrieb: >> was spricht jetzt eigentlich konkret gegen das EEPROM? > > Geld? Seit wann bekommt man Geld zurück, wenn man den EEPROM nicht nutzt?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.