Forum: PC-Programmierung batch-Datei zur Programmierung eine Atmel µC via atprogram


von Mike (Gast)


Lesenswert?

Mein Vorhaben:
Programmieren eines Mikrocontrollers von Atmel via command Line 
Programming

Ein manuelles Vorgehen ist kein Problem.
- CommandLine Tool von Atmel starten (z.B. über Start --> Atmel --> 
Atmel Studio Command Prompt)
- dann über die Kommandozeile die befehle reinhauen (z.B.:
1
atprogram -t avrdragon -i ISP -d at90can32 -cl 8khz write -fs --values CCDEFE -v
)

Allerdings ist es unschön diesen Befehl manuell 100 mal zu schreiben und 
die Controller zu programmieren.
Daher wollte ich gerne ein Batch-Programm schreiben, bei dem man per 
Doppelklick die Programmierung anstösst.
Das Problem ist aber, dass die Befehle vom atprogram.exe ausgeführt 
werden und das Programm im "normalen" Kommandozeilen - Tool nicht 
angesprochen wird.

Ich habe durch diverse Foren und Google einträge herausgefunden, dass 
man das Programm erst starten muss.
Ungefähr so:
1
START "StudioCommandPrompt" /B "C:\Program Files (x86)\Atmel\Atmel Studio 6.2\atbackend\atprogram.exe"
Auch das funktioniert nicht wirklich, weil das programm zwar gestartet 
wird, aber es geht ein zweites Fenster auf, das erste wird durchlaufen 
und beendet.
Im zweiten (dort läuft jetzt das atprogram.exe) könnte man nun wieder 
den Befehl manuell eingeben, aber genau das möchte ich ja 
automatisieren.

Ich komme nicht auf die Lösung des Problems und probiere jetzt schon 
zwei Tage herum. Was mache ich falsch? Welcher kniff hilft mir weiter?

Hoffe, mir kann jemand auf die Sprünge helfen...

von Mike (Gast)


Lesenswert?

@moderatoren: Ist das Thema in diesem Forum richtig, oder sollte es in 
das Forum <µC & Elektronik> geschoben werden?

von Stefan P. (form)


Lesenswert?

Mike schrieb:
> und das Programm im "normalen" Kommandozeilen - Tool nicht
> angesprochen wird

Schreib den kompletten Pfad vom Programm in Deine Batchdatei, dann wird 
es auch gefunden:
1
@echo off
2
"c:\Program Files (x86)\Atmel\Atmel Studio 6.1\atbackend\atprogram.exe" -t avrdragon -i ISP -d at90can32 -cl 8khz write -fs --values CCDEFE -v

(Anscheinend fehlte in Deinem Beispiel aber noch die Angabe der Datei 
die programmiert werden soll, z.B. so:
1
"...\atprogram" -t jtagice3 -i jtag -d at32uc3b0512 program -f e:\file.elf

: Bearbeitet durch User
von Mike (Gast)


Lesenswert?

Ja, das ist richtig, obige Befehlszeile war nur ein beispiel um zu 
verdeutlichen, was ich vorhabe. In diesem beispiel wurden "nur" die 
Fuses programmiert.
Falls es später einmal laufen sollte kann ich die Batchdatei um einige 
zusätzliche Befehle problemlos erweitern.

von chris (Gast)


Lesenswert?

1
"C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg\atprogram" -t avrispmk2 -i isp -d atmega88pa -cl 125khz chiperase
2
3
"C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg\atprogram" -t avrispmk2 -i isp -d atmega88pa -cl 125khz write -fs --values F7D5FC -v
4
@echo.
5
6
"C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg\atprogram" -t avrispmk2 -i isp -d atmega88pa -cl 1mhz program -c -fl --verify -f program.hex
7
@echo.
8
"C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg\atprogram" -t avrispmk2 -i isp -d atmega88pa -cl 1mhz write -lb --values FC -v
9
10
pause

Damit wird erst der Chip mit niedrgier Taktfrequenz gelöscht, damit es 
auch bei gesetzter CLKDIV8 Fuse klappt.
Anschließend werden die Fuses entsprechend gesetzt (hier auf ext. Quarz, 
EESAVE, BOOTRST, ...)

Dann wird "program.hex" geflasht und verifiziert.
Zum Schluss noch Lockbits gegen auslesen.

von Mike (Gast)


Lesenswert?

Ja Klasse,

das funktioniert!
Habe das jetzt mal umgesetzt und ausprobiert.

Der erste Schritt, der bei jeder Zeile ausgeführt wird ist "Firmware 
check
OK"
Kann man das unterbinden? Das kostet doch nur Zeit.

von Holger (Gast)


Lesenswert?

@echo off
title AVR PRogrammieren
color 0A
mode con lines=50 cols=180



::===============================================================
:: set Atmel
set MCU=ATmega328PB

:: set Pfad
set PATH="C:\Program Files 
(x86)\Atmel\Studio\7.0\atbackend"\atprogram.exe

:: set Pfad hex
set PATHhex="C:\Users\Holger\Google 
Drive\Bascom_GIT\Lukaszelle"\Lukaszelle_29.hex

:: set fuses      Low byte: E2   High Byte: C1    Extended Byte: F7
set setfuses=E2C1F7

:: set programmer
::set programmer=avrone
::set programmer=jtagice3
set programmer=avrispmk2

::goto test
::echo Pfade geladen...
::===============================================================


::===============================================================
:Auswahlmenu
cls
color 0A
echo.
echo Auswahlmenue fuer AVR Programmierung
echo ===========
echo.
echo [1]Fuses lesen
echo [2]leeren AVR Programmieren mit Lockbit
echo [3]schnell Programmieren
echo [4]Ende

echo.

set asw=0
set /p asw="Bitte eine Auswahl treffen, mit ENTER bestaetigen: "

if %asw%==1 goto Auswahl1
if %asw%==2 goto Auswahl2
if %asw%==3 goto Auswahl3
if %asw%==4 goto Auswahl4

goto ende
::===============================================================



::===============================================================
:Auswahl1
cls
color 0F
echo AVR fuse lesen..
::Fuses lesen
%PATH% -t %programmer% -i isp -d %MCU% -cl 125khz read --fuses
::@echo.
echo ---------
echo lesen fertig!!
echo --------------------------------------------
pause
cls
goto Auswahlmenu
::===============================================================


::===============================================================
:Auswahl2
cls
color 0F
echo AVR loeschen..
::Damit wird erst der Chip mit niedrgier Taktfrequenz gelöscht, damit es 
auch bei gesetzter CLKDIV8 Fuse klappt.
::%PATH% -t %programmer% -i isp -d %MCU% -cl 125khz chiperase
%PATH% -t %programmer% -i isp -cl 125khz -d %MCU% chiperase
::@echo.
echo ---------
echo loeschen erledigt!!
echo --------------------------------------------
echo

echo Fuses setzten..
::Dann werden die Fuses entsprechend gesetzt (hier auf int. Quarz, 
EESAVE,)
::%PATH% -t %programmer% -i isp -d %MCU% -cl 125khz write -fs --values 
%setfuses% -v
%PATH% -t %programmer% -i isp -cl 125khz -d %MCU% write -fs --values 
%setfuses% -v
::@echo.
echo ---------
echo Fuses gesetzt!!
echo --------------------------------------------
echo

echo Programmieren..
::Dann wird ".hex" geflasht und verifiziert.
::%PATH% -t %programmer% -i isp -d %MCU% -cl 8mhz program -c -fl 
--verify -f %PATHhex%
%PATH% -t %programmer% -i isp -cl 1mhz -d %MCU% program -fl -f %PATHhex%
::@echo.
echo ---------
echo Programmiert!!
echo --------------------------------------------
echo

echo Lockbits setzen..
:Zum Schluss noch Lockbits gegen auslesen setzen.
%PATH% -t %programmer% -i isp -d %MCU% -cl 1mhz write -lb --values FC -v
::@echo.
echo ---------
echo Lockbits gesetzt!!
echo --------------------------------------------
echo
pause
cls
goto Auswahlmenu
::===============================================================





::===============================================================
:Auswahl3
cls
color 0F
echo AVR loeschen..


echo Programmieren..
::Dann wird ".hex" geflasht und verifiziert.
::%PATH% -t %programmer% -i isp -d %MCU% -cl 8mhz program -c -fl 
--verify -f %PATHhex%
%PATH% -t %programmer% -i isp -cl 1mhz -d %MCU% program -fl -f %PATHhex%
::@echo.
echo ---------
echo Programmiert!!
echo --------------------------------------------
echo


pause
cls
goto Auswahlmenu
::===============================================================




::===============================================================
goto ende
test:
echo. Test
ende:
echo AVR Programmiert!
pause
:Auswahl4

von balesi (Gast)


Lesenswert?

Ich bin heute auf diesen Thread gestoßen, der mir sehr geholfen hat.
Der ist zwar schon ewig alt, aber doch recht nützlich.

Leider kann ich keine DOku zu ATMEL Flip bzw. zu den Commandos von 
batchisp finden.

Ist es möglich das device auch auszulesen?

Ich habe den Controller AT90CAN32 im Einsatz. Zukünftig kann es aber 
auch die 64er Version sein.
Da ich dann ein anderes hex-file programmieren muss würde ich gerne eine 
Abfrage einbauen.
Wie mache ich das am besten?
Gibt es ein Kommando: "Wer bist du" ?

Oder mache ich das über <Lese fuses von AT90CAN32>. Welche Antwort 
bekomme ich, wenn es ein AT90CAN64 ist?
Hat noch jemand eine Dokumentation über die batchisp Kommandos?

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.