Seit ich mit dem AVR Studio 5 und auch mit dem ATMEL Studio 6 arbeite, habe ich mich immer dann geägert, wenn ich von einem Projekt zu einem anderen gewechselt bin. Zum Programmieren des Chips im Programmier-Dialog muss man sowohl den Chip-Typ (z.B. ATmega 8) als auch den Pfad der zu programmiernden Datei neu einstellen. Dies habe ich naturgemäß regelmäßig vergessen!
Jedoch besteht in den genannten Applikationen die Möglichkeit, in den Buildprozess einzugreifen. Diese Möglichkeit gab es bei den vorhergehenden Version im Prinzip auch, indem man eine externe Makefile erstellte. Jedoch musste man dann bei jeder Änderung im Projekt die Makefile händisch anpassen, insbesondere durfte man das nicht vergessen.
Beim ATMEL Studio 6 kann man so genannte Pre-Build- und Post-Build-Ereignisse definieren. Das sind Programme, die vor bzw. nach dem eigentlichen Build-Vorgang ausgeführt werden. Somit kann man also nahezu beliebige Dinge für den Buildvorgang vorbereiten, ohne die durch das AVR Studio aktuell gehaltene Makefile anpassen zu müssen.
Zur Lösung des "Umschalt-Problems" habe ich mich ein kleines Programm geschrieben, das, wenn es in den Pre-Build-Event eingebunden wird, die Werte bei jedem Build passend vorbelegt. Damit das Programm während des Build-Vorgangs gefunden werden kann, habe ich es in das "GlobalToolchain"-Verzeichnis kopiert. Dies ist bei mir: "...\Atmel\Atmel Studio 6.0".
Die Vorbelegungen für den Programmiervorgang werden von dem Programmiertool in die Registry eingetragen. Das Programm ""
Im ATMEL Studio muss dann noch das Pre-Build-Ereignis definiert werden. Dies geschieht bei den Projekt-Eigenschaften.
Die Build-Event-Definition enthält auch die Anweisung zur Erhöhung der Versionnummer.
Ein kleines Problem bleibt jedoch. In keiner der aktuellen ATMEL Studios (bis einschl. 6.1 beta) funktionieren die Makros $(OutputFilenName) und $(OutputFileExtension). Deshalb benutze ich $(SolutionName) (meisten benenne ich Solution .elf-File gleich) und und die feste Ergänzung ".elf". Damit ich mich nicht wundere, wenn es einmal deswegen Probleme gibt, habe ich einen Kommentar in die Kommandozeile eingefügt. Der stört die Programmausführung nicht.
Hier der Text für Copy&Paste (einschl. der Anführungszeichen): <<"$(AVRSTUDIO_EXE_PATH)\SetProgrammingConfig.exe" "$(OutputDirectory)\$(SolutionName).elf" $(avrdevice) 'SolutionName ist Ersatz für OutputFilename. OutputFilename funktioniert nicht!>>. Die Anführungszeichen, die das Kommando und den Parameter einschließen, sind notwendig, wenn die Pfade Leerzeichen enthalten.
Das Binary und die Quellen zum download (21.7.2013: Programm für Atmel Studio 6.1 angepasst).