Forum: Compiler & IDEs richtige vorgehensweiße Seriennummer


von Pier S. (bigpier)


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 ???

von Benjamin U. (utzus)


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?

von Mark B. (markbrandis)


Lesenswert?

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

Fledermäuse missbrauchen? Igitt.

;-)

von Michael U. (amiga)


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

von widerstand (Gast)


Lesenswert?

kann der eprom nicht aus dem µC verwendet werden?

von Udo R. S. (Gast)


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.

von Marcus B. (raketenfred)


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

von Michael_ (Gast)


Lesenswert?

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

von Uwe (Gast)


Lesenswert?

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

Grüße Uwe

von Niko (Gast)


Lesenswert?

Mach OpenSource daraus, dann brauchst du keine Seriennummer!

von Klaus (Gast)


Lesenswert?

Niko schrieb:
> Mach OpenSource daraus, dann brauchst du keine Seriennummer!

  Blödsinn.

von pioupus (Gast)


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

von Niko (Gast)


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...

von Udo R. S. (Gast)


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!

von Guter Rat (Gast)


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.

von Michael_ (Gast)


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.

von Wolfgang Horn (Gast)


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

von Pier S. (bigpier)


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

von avr (Gast)


Lesenswert?

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

von ponyhof (Gast)


Lesenswert?

Ponyprog kann automatisch Seriennummern vergeben.
http://www.lancos.com/prog.html

von Rolf Magnus (Gast)


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?

von Sebastian___ (Gast)


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.

von Thorsten M. (thorstenm)


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:
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.

von Pier S. (bigpier)


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

von Link zu (Gast)


Lesenswert?

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

von willy (Gast)


Lesenswert?

die wird ueberschrieben.

von ichhhhh (Gast)


Lesenswert?

was spricht jetzt eigentlich konkret gegen das EEPROM?

von Gerry E. (micky01)


Lesenswert?

ichhhhh schrieb:
> was spricht jetzt eigentlich konkret gegen das EEPROM?

Geld?

von Rolf Magnus (Gast)


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?

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
Noch kein Account? Hier anmelden.