Forum: FPGA, VHDL & Co. wie verwaltet man FPGA,- µC Firmware Version?


von django freeman (Gast)


Lesenswert?

Hallo zusammen,

ich bin gerade an einem Projekt, das einen FPGA(altera) und einen µC auf 
einer Rechnerkarte erhaltet.

Meine Frage ist, wie man die Versionen von beiden verwaltet?
So habe ich mir vorgestellt: Quartus erzeugt mir Jic-File(Format: 
projectname.jic) für PROM-Speicher. Kann man ihm sagen, das er sowas wie 
projectname_versionX_Y.jic austomatisch erzeugen soll, wobei 
"versionX_Y" wird vorher als Makro definiert.

vielen Dank im voraus und schönes WE an Euch alle :-)

lg

von Andreas B. (andreasb)


Lesenswert?

Was hällst du z.B. von SVN, GIT, oder ähnlichem?

Kannst du einfach deine Projekte (Sourcen und bin) ablegen und ggf. mit 
Tags Versehen (Auslieferung Kunde XX 13.03.2013).

Für Windows z.B.
http://tortoisesvn.net/

Nur so als Vorschlag, ist in der Informatik üblich solche Tools zu 
verwenden...



mfg Andreas

von django freeman (Gast)


Lesenswert?

Hallo Andreas,

Danke für deine schnelle Antwort!:)
Mir scheint sowas neu und ...kompliziert:(

Kann man sowas in Quartus nicht erledigen lassen?

Lg

von Christian R. (supachris)


Lesenswert?

Naja, besonders kompliziert ist das nicht. Aber man muss schon etwas 
Handarbeit anlegen, ganz von alleine können das die Tools nicht. Wir 
verwenden z.B. einen TeamCity Build Server, der vergibt automatisch 
Versionsnummern, die sich aus den SVN Versionen und der Build Nummer 
zusammen setzen. Die werden dann in ein VHDL File als Constant durch das 
Build Script geschrieben, und somit ist jede Version eindeutig 
zurückverfolgbar und auch wieder herstellbar.
Lokal geht das natürlich wie oben schon geschrieben auch recht einfach 
mit z.B. den SVN Revisions. Irgendwo müssen die Versionsnummern ja 
herkommen, wenn du die manuell vergibst, kommst früher oder später 
Quatsch raus, weil man da immer mal Fehler macht. Und was bringen 
Versionsnummern, wenn man die Quellcode Stände dazu nicht hat?

von user (Gast)


Lesenswert?

Also was man machen kann ist die SVN-Revisions-Nummer automatisch in 
eine VHDL Datei einbinden lassen, somit kann man feststellen welche 
Version gerade verwendet wird

von MegaSuperMario (Gast)


Lesenswert?

Andreas B. schrieb:
> Was hällst du z.B. von SVN, GIT, oder ähnlichem?

Bei prof. Produktion im 20 Mann Team macht das Sinn aber darunter?

Meiner einer macht Unterverzeichnisse mit #1, #2 die bei Bedarf im 
Verzeichnisnamen kommentiert werden. Geht mit Tools wie Total Commander 
in Sekunden und sogar beim compilieren.

Rollouts kommen in ein freeze Verzeichnis und da gibt es dann auch eine 
Versionsnummer.

von Christian R. (supachris)


Lesenswert?

Hm, naja, SVN, Git o.ä. ist aus meiner Sicht selbst für einen einzelnen 
Programmierer/FPGA-Designer sinnvoll. Weil man da einfach den kompletten 
Versionsüberblick behält. Das muss ja nicht besonders aufwendig gemacht 
sein. Im einfachsten Fall reicht ein file-Repository auf einem 
Netzlaufwerk.

von Fpgakuechle K. (Gast)


Lesenswert?

Christian R. schrieb:
> Im einfachsten Fall reicht ein file-Repository auf einem
> Netzlaufwerk.

Das ist m.E. gerade für Privatanwender eine Hürde, Netzlaufwerke mit 
SVN-Server sind in Privathaushalten nicht besonders verbreitet und 
seinen Quellcode mag nicht jeder einem SVN-Provider anvertrauen. Zwar 
kann man SVN auch local aufsetzen und betreiben, das ist aber nicht 
gerade selbst- erklärend. RCS ist da Neuling- und 
Single-User-freundlicher; mit Einschränkungen auch CVS.

MfG,

von Lattice User (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Christian R. schrieb:
>> Im einfachsten Fall reicht ein file-Repository auf einem
>> Netzlaufwerk.
>
> Das ist m.E. gerade für Privatanwender eine Hürde, Netzlaufwerke mit
> SVN-Server sind in Privathaushalten nicht besonders verbreitet und
> seinen Quellcode mag nicht jeder einem SVN-Provider anvertrauen. Zwar
> kann man SVN auch local aufsetzen und betreiben, das ist aber nicht
> gerade selbst- erklärend. RCS ist da Neuling- und
> Single-User-freundlicher; mit Einschränkungen auch CVS.

Mit dem oben schon erwähnten TortoiseSVN unter Windows ist es wirklich 
sehr einfach: rechtsclick in einem leeren Verzeichnis -> Create 
Repository Here.

von Fitzebutze (Gast)


Lesenswert?

Aloha,

ich nutze git und SVN immer kombiniert, und zwar git fürs Tracken der 
Änderungen während der Entwicklung, SVN fürs Einfrieren/Release.
Mit 'svnversion' kann man sich die Tags per Makefile beliebig in Sources 
ausgeben, oder die $Rev:$ Tags nutzen (Siehe dazu Stichwort 
'svn:keywords' zur Aktivierung des Tagging). Bei git ist das Revisioning 
grundsätzlich anders und nicht wirklich mit fortlaufenden Versionnummern 
kompatibel, müsste man sich also das Tagging auch selber stricken.
Die Dinos wie RCS und CVS würde ich nicht mehr empfehlen, die haben so 
einige Limitierungen und Probleme mit grossen Projekten.
svn und git sind ansich ohne grosses Gefuddel aufzusetzen, so dass die 
Repositories auf lokalen Laufwerken liegen.

von Fpgakuechle K. (Gast)


Lesenswert?

Lattice User schrieb:
> Fpga Kuechle schrieb:

>> Das ist m.E. gerade für Privatanwender eine Hürde, Netzlaufwerke mit
>> SVN-Server sind in Privathaushalten nicht besonders verbreitet und
>> seinen Quellcode mag nicht jeder einem SVN-Provider anvertrauen. Zwar
>> kann man SVN auch local aufsetzen und betreiben, das ist aber nicht
>> gerade selbst- erklärend. RCS ist da Neuling- und
>> Single-User-freundlicher; mit Einschränkungen auch CVS.
>
> Mit dem oben schon erwähnten TortoiseSVN unter Windows ist es wirklich
> sehr einfach: rechtsclick in einem leeren Verzeichnis -> Create
> Repository Here.

OK, hab ich grad ausprobiert. Es werden mehrere Verzeichnisse 
(hooks,locks,...) angelegt. Damit habe ich immer nocht nicht die Sourcen 
in Ihren verzeichnissen unter Versionskontrolle. Wie gehts weiter mit 
SVN local unter Windows?

von Fpgakuechle K. (Gast)


Lesenswert?

Fitzebutze schrieb:
> Aloha,
>
> ich nutze git und SVN immer kombiniert, und zwar git fürs Tracken der
> Änderungen während der Entwicklung, SVN fürs Einfrieren/Release.
> Mit 'svnversion' kann man sich die Tags per Makefile beliebig in Sources
> ausgeben, oder die $Rev:$ Tags nutzen (Siehe dazu Stichwort
> 'svn:keywords' zur Aktivierung des Tagging). Bei git ist das Revisioning
> grundsätzlich anders und nicht wirklich mit fortlaufenden Versionnummern
> kompatibel, müsste man sich also das Tagging auch selber stricken.
> Die Dinos wie RCS und CVS würde ich nicht mehr empfehlen, die haben so
> einige Limitierungen und Probleme mit grossen Projekten.
> svn und git sind ansich ohne grosses Gefuddel aufzusetzen, so dass die
> Repositories auf lokalen Laufwerken liegen.

Der Fragesteller Django bemerkt oben das svn kompliziert ist, da hilft 
es m.E. nicht ihn mit Fachchinesisch wie 
Tags/TaggingAktivierung/$Rev:$/Einfireren/Release/Repositories ihn vom 
Gegenteil überzeugen zu wollen. RCS ist zwar limitiert  aber kein 
behäbiger, schwer kontrollierbarer Dino. Für globale Teams die an x 
Modulen werkeln ist eben eine komplexer Struktur und verschiedene 
Prozesse (Freeze/RollOut/ConfigManagment) notwendig die im 
Einzelkämpfermodus die Versionsverwaltung unnötig aufblähen.

Meines Erachtens liegt das problem am Aufsetzen des SVN etc an den 
eigenwilligen Begriffen die es erst mal zu klären gilt Und das jede 
Versionsverwaltung alles anders bennent und geringfügig anders umsetzt.
Da heisst es mal Depot/Repository/VOB/sandbox oder
trunk/main/baseline oder label/tag/etc.

Dabei will man doch nur verschiedene versionen abspeichern, die 
Änderugen zwischen diesen sehen und ggf. auf eine ätere Version 
zurückspringen.

MfG,

von Böser Ingenieur (Gast)


Lesenswert?

Das Entscheidende jeder Versionsverwaltung, Teamarbeit, 
Autoaktualisierung, Branching, Seitenentwicklung und Zusammenführung von 
Dokumenten ist Ordnung im Kopf und eine geeignete Strategie, an die sich 
alle halten.

Mit welchem tool das passiert, ist eigentlich zweitrangig.

Wenn ich mir ansehe, wie in deutschen Stuben gebastelt wird, ist jedes 
Versinostool nutzlos. Meistens dient es nur zum Archivieren.

von Christian R. (supachris)


Lesenswert?

Fpga Kuechle schrieb:
> OK, hab ich grad ausprobiert. Es werden mehrere Verzeichnisse
> (hooks,locks,...) angelegt. Damit habe ich immer nocht nicht die Sourcen
> in Ihren verzeichnissen unter Versionskontrolle. Wie gehts weiter mit
> SVN local unter Windows?

Die versteckten Verzeichnisse interessieren erst mal nicht. Das was du 
jetzt hast, ist das Repository, quasi eine Datenbank.

Jetzt kannst du da rechte Maustaste -> Tortoise -> Repo Browser machen 
und die Adresse aus dem Feld oben kopieren.

Dann gehst du in deinen Quellcode-Ordner und machst rechte Maustaste -> 
SVN Checkout und dann die Adresse reinkopieren. Und schon steht der 
Ordner zunächst mal formell untere Versionskontrolle. Wenn du dann SVN 
Commit machst, werden alle Dateien (die man anhakt) erstmalig 
hinzugefügt und versioniert. Ab dann gehts einfach in dem 
Quellcode-Ordner immer mit Commit und Update.

von Fpgakuechle K. (Gast)


Lesenswert?

Christian R. schrieb:

> Jetzt kannst du da rechte Maustaste -> Tortoise -> Repo Browser machen
> und die Adresse aus dem Feld oben kopieren.
>
> Dann gehst du in deinen Quellcode-Ordner und machst rechte Maustaste ->
> SVN Checkout und dann die Adresse reinkopieren. Und schon steht der
> Ordner zunächst mal formell untere Versionskontrolle. Wenn du dann SVN
> Commit machst, werden alle Dateien (die man anhakt) erstmalig
> hinzugefügt und versioniert. Ab dann gehts einfach in dem
> Quellcode-Ordner immer mit Commit und Update.

Machn wir nen Artikel fürs wiki draus? Mit Screenshots? Ich hab die 
deutchsprachige Schildkröte am Laufen, da heist das alles etwas anders.

von Christian R. (supachris)


Lesenswert?

Och, für sowas hab ich immer wenig Zeit....außerdem gibts da ganz sicher 
schon zig Anleitungen für im Netz...

von CZM (Gast)


Lesenswert?

Fpga Kuechle schrieb:
> Machn wir nen Artikel fürs wiki draus? Mit Screenshots? Ich hab die
>
> deutchsprachige Schildkröte am Laufen, da heist das alles etwas anders.

fände ich begrüssenswert

gfs könnte ich da sogar mitwirken

meine Kenntnisse sind allerdings begrenzt

von Dieter (Gast)


Lesenswert?

wir setzten hier anstelle von SVN Mercurial an. Für Windows findest Du 
es als TortiseHG, es gehört zu den dezentralen Versionsverwaltungen und 
eignet sich auch gut als Einzelentwickler.
Ist meiner Meinung nicht so kompliziert wie SVN, aber das ist immer 
Geschmackssache.

Wichtig ist jedoch immer, dass auch regelmäßig die Versionsstände 
gespeichert werden. Evtl. innerhalb von Branches.

von Bronco (Gast)


Lesenswert?

Einfache Lösung ohne Tools:

1. Im Code hat man eine Versionsinformation, die man im System auslesen 
kann (z.B. beim µC über RS232). Diese Versionsinfo sollte ausführlich 
genug sein, um die einzelnen Entwicklungszwischenschritte anzuzeigen 
(also nicht nur "1.0" sondern z.B. "1.0.1223" für den 1223 
Entwicklungsschritt).

2. Wenn Du mit einem Entwicklungsschritt zufrieden bist, kopierst Du das 
ganze Projektverzeichnis und erweiterst den Namen um die Versionsinfo 
(z.B. "MeinProjekt_1.0.1223"). Darin änderst Du dann nie mehr 
irgendetwas!!!
Mit der Zeit bekommst Du dann jede Menge Verzeichnisse, was aber dank 
großer HD heute kein Problem ist.
(Hier hilft auch ZIP)

3. Wenn Du Deinen aktuelles Projektstand mit einen alten vergleichen 
willst, kannst Du einfach die Projektverzeichnisse per "WinMerge" 
vergleichen.

Mit einer Versionsverwaltung wie ClearCase geht das alles viel besser, 
aber ist halt auch etwas aufwändiger.

von Duke Scarring (Gast)


Lesenswert?

Kopfschüttel...

Bronco schrieb:
> 1.
> 2.
> 3.
Das ist echt ein Haufen Handarbeit und genau dafür lassen sich (ohne 
Wertung) svn, git und mercurial super einsetzen. Einmal ein passendes 
Tutorial durchgeackert und man braucht kein manuelles Kopieren und 
hochzählen. Ist viel zu umständlich...

Duke

von Bronco (Gast)


Lesenswert?

Duke Scarring schrieb:
> Das ist echt ein Haufen Handarbeit und genau dafür lassen sich (ohne
> Wertung) svn, git und mercurial super einsetzen. Einmal ein passendes
> Tutorial durchgeackert und man braucht kein manuelles Kopieren und
> hochzählen. Ist viel zu umständlich...

Keine Frage!
Wahrscheinlich muß jeder für sich selbst die Erfahrung machen, wie toll 
ein Versionierungssystem ist, wenn man's mal verstanden hat.
Allerdings ist meiner Meinung nach alles besser als Chaos... ;)

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.