mikrocontroller.net

Forum: Compiler & IDEs richtige vorgehensweiße Seriennummer


Autor: Pier S. (bigpier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ???

Autor: Benjamin Utz (utzus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pier S. schrieb:
> PS: Kann man dafür vielleicht eine Bat missbrauchen ???

Fledermäuse missbrauchen? Igitt.

;-)

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: widerstand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann der eprom nicht aus dem µC verwendet werden?

Autor: Udo R. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Marcus B. (raketenfred)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manche Programmer können das. Ich glaube, bei einem aus folgender Serie 
habe sowas mal gesehen.
http://www.elnec.com/products/device-programmers/b...

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du schon mal daran gedacht, dass es dafür extra Schaltkreise gibt? 
Z.B. DS1990A --> 1wire iButton von Maxim

Grüße Uwe

Autor: Niko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach OpenSource daraus, dann brauchst du keine Seriennummer!

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niko schrieb:
> Mach OpenSource daraus, dann brauchst du keine Seriennummer!

  Blödsinn.

Autor: pioupus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Niko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Udo R. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Guter Rat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Michael_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Pier S. (bigpier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Intel HEX ist im Wiki beschrieben, auch die Prüfsumme:

http://de.wikipedia.org/wiki/Intel_HEX#Berechnung_...

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

Autor: ponyhof (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ponyprog kann automatisch Seriennummern vergeben.
http://www.lancos.com/prog.html

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Sebastian___ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thorsten M... (thorstenm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
#!/bin/bash
LOG="bla.csv"
for i in `seq 1 100`; do
        echo "#define SERIAL $i" > serial.h
        make
        echo "naechstes anstoepseln und enter druecken, q zum beenden"
        read a
        if [[ "$a" == "q" ]]; then 
                exit 
        fi
        make program      # oder direkt avrdude anwerfen...
        (date -R ; svn info) | tr "\n" ";" >> "$LOG"
        echo "$i" >> "$LOG"
done
Das müsste mit der Fledermaussprache prinzipiell genauso funktionieren, 
aber das darf jemand mit Windowskenntnissen vorkauen.

Autor: Pier S. (bigpier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Link zu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Thorsten M... (thorstenm)
Ich glaube da fehlt noch etwas um die serial.h wieder zu löschen?!?!

Autor: willy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die wird ueberschrieben.

Autor: ichhhhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was spricht jetzt eigentlich konkret gegen das EEPROM?

Autor: Gerry E. (micky01)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ichhhhh schrieb:
> was spricht jetzt eigentlich konkret gegen das EEPROM?

Geld?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.