Hi Maddin,
freut mich, dass du uns an deinen Erkenntnissen teil haben läßt.
Habe mir zwar den Wizard noch nicht angesehen, da ich gerade erst wieder in den Thread geschaut habe, aber dafür hab ich mir mal Gedanken gemacht, wie man mit den Batches und Pfaden mit Leerzeichen umgehen kann.
Werde also versuchen, das Ergebnis hier unterzubringen.
Zum Anderen interessiert mich warum du zum WinAvr noch extra das PonyProg brauchst. Mit avrdude kann man das Programm doch auch übertragen. Gibt es da irgendwelche Vorteile?
So nun zu meinen Vorschlägen, die sich natürlich etwas an deinen Batches anlehnen.
Das Ganze ist jetzt alphabetisch sortiert und nicht in der Reihenfolge der Abarbeitung.
calcsize.bat
Code:
REM %1 ProjectDir, %2 OutDir\InputFileName, %3 OutDir
IF exist %3\programsize.txt DEL %3\programsize.txt
SET "OutDir=%3"
SET "LogFile=%OutDir%\erstellen.log"
ECHO "Getting size of %3\%2.elf ..." >> %LogFile%
SET OldDir=%CD%
CD %1
SET PrjDir=%CD%
CD %OldDir%
ECHO +++ Size begin +++ >> %3\programsize.txt
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-size.exe" -x -A %3\%2.elf >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-size.exe" -x -A %3\%2.elf >> %3\programsize.txt
ECHO +++ Sorted by size +++ >> %3\programsize.txt
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-nm.exe" -x -A %3\%2.elf >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-nm.exe" --size-sort -s %3\%2.elf >> %3\programsize.txt
ECHO +++ Size end +++ >> %3\programsize.txt
clean.bat
Code:
REM %1 OutDir
SET "OutDir=%1"
IF exist %OutDir% DEL %OutDir%\*.* /q
IF exist %OutDir% CALL :log
GOTO :end
:log
SET "LogFile=%OutDir%\erstellen.log"
ECHO "Cleaning %OutDir% ..." > %LogFile%
GOTO :eof
:end
EXIT
compile.bat
Code:
REM %1 ProjectDir, %2 InputFileName, %3 OutDir
IF NOT exist %3 MD %3
SET "OutDir=%3"
SET "LogFile=%OutDir%\erstellen.log"
ECHO "Compiling %2 ..." >> %LogFile%
SET OldDir=%CD%
CD %1
SET PrjDir=%CD%
CD %OldDir%
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -c -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.obj >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -c -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.obj
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -E -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.pre >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -E -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.pre
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -S -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.asm >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -I "%PrjDir%\/BuildTools/WinAVR/avr/include/avr" -std=c99 -O2 -Wall -S -mmcu=atmega8 "%PrjDir%\Sources"\\%2.c -o %3\\%2.asm
EXIT
link.bat
Code:
REM %1 ProjectDir, %2 OutDir
SET "OutDir=%2"
SET "LogFile=%OutDir%\erstellen.log"
ECHO "Linking AVR project ..." >> %LogFile%
SET "OutputFileName=program"
setlocal enableDelayedExpansion
SET OldDir=%CD%
CD %1
SET PrjDir=%CD%
CD %OldDir%
SET ObjFiles=
FOR %%i IN (%2\*.obj) DO CALL :objCounter "%%i"
ECHO %ObjFiles% >> %LogFile%
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -mmcu=atmega8%ObjFiles% -o %2\%OutputFileName%.elf -Os --relax -Wl,--section-start=.fuse=0x820000 -Wl,-Map,%2\%OutputFileName%.map >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-gcc.exe" -mmcu=atmega8%ObjFiles% -o %2\%OutputFileName%.elf -Os --relax -Wl,--section-start=.fuse=0x820000 -Wl,-Map,%2\%OutputFileName%.map >> %LogFile%
IF NOT %ERRORLEVEL%==0 (ECHO Linking error %ERRORLEVEL% >> %LogFile%) & ECHO %ERRORLEVEL%
GOTO :end
:objCounter
SET ObjFiles=!ObjFiles! %1
GOTO :eof
:end
CALL "%PrjDir%\BuildTools\makehex.bat" "%PrjDir%" %OutputFileName% %OutDir%
CALL "%PrjDir%\BuildTools\calcsize.bat" "%PrjDir%" %OutputFileName% %OutDir%
CALL "%PrjDir%\BuildTools\makelistfile.bat" "%PrjDir%" %OutputFileName% %OutDir%
CALL "%PrjDir%\BuildTools\send_program.bat" "%PrjDir%" %OutputFileName% %OutDir%
EXIT
makehex.bat
Code:
REM %1 ProjectDir, %2 InputFileName, %3 OutDir
SET "OutDir=%3"
SET "LogFile=%OutDir%\erstellen.log"
ECHO "Making .hex file of %3\%2.elf ..." >> %LogFile%
SET OldDir=%CD%
CD %1
SET PrjDir=%CD%
CD %OldDir%
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .text -j .data %3\%2.elf %3\flash.hex >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .text -j .data %3\%2.elf %3\flash.hex
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .eeprom --change-section-lma .eeprom=0 %3\%2.elf %3\eeprom.hex >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .eeprom --change-section-lma .eeprom=0 %3\%2.elf %3\eeprom.hex
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objcopy.exe" -O ihex -j .fuse %3\%2.elf %3\fuse.hex >> %LogFile%
makelistfile.bat
Code:
REM %1 ProjectDir, %2 InputFileName, %3 OutDir
SET "OutDir=%3"
SET "LogFile=%OutDir%\erstellen.log"
ECHO "Making listfile %3\listfile.lst ..." >> %LogFile%
SET OldDir=%CD%
CD %1
SET PrjDir=%CD%
CD %OldDir%
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objdump.exe" -s -j .fuse %3\%2.elf >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-objdump.exe" -s -j .fuse %3\%2.elf > %3\fuses.txt
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avr-objdump.exe" -h -s -j .text -j .data %3\%2.elf >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avr-objdump.exe" -h -s -j .text -j .data %3\%2.elf > %3\listfile.lst
send_program.bat
Hier bitte aufpassen, da ich auch die Fusebits mit setze und einen ATMega8 verwende
Code:
REM %1 ProjectDir, %2 InputFileName, %3 OutDir
SET "OutDir=%3"
SET "LogFile=%OutDir%\erstellen.log"
ECHO "Programming %3\flash.hex eeprom.hex ..." >> %LogFile%
SET OldDir=%CD%
CD %1
SET PrjDir=%CD%
CD %OldDir%
REM Programming support using avrdude. Settings and variables.
REM Programming hardware: alf AVR910 avrisp Bascom bsd
REM dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
SET AVRDUDE_PROGRAMMER=avrisp
SET AVRDUDE_PORT=com1
REM SET AVRDUDE_PORT=lpt1
SET AVRDUDE_WRITE_LFUSE=-U lfuse:w:0x24:m
SET AVRDUDE_WRITE_HFUSE=-U hfuse:w:0xd9:m
SET AVRDUDE_WRITE_LOCK =-U lock:w:0x2f:m
SET AVRDUDE_WRITE_FLASH=-U flash:w:flash.hex
SET AVRDUDE_WRITE_EEPROM=-U eeprom:w:eeprom.hex
SET AVRDUDE_FLAGS=-p atmega8 -P %AVRDUDE_PORT% -c %AVRDUDE_PROGRAMMER%
CD %3
REM liest den Inhalt des Flashspeichers vom ATMega8 in die Datei flash.bin r=raw i=intel s=motorola
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% -U flash:r:"./flash.bin":r >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% -U flash:r:"./flash.bin":r
REM liest den Inhalt des EEPROM (512Byte) vom ATMega8 in die Datei eeprom.bin
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% -U eeprom:r:"./eeprom.bin":r >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% -U eeprom:r:"./eeprom.bin":r
ECHO "%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% %AVRDUDE_WRITE_FLASH% %AVRDUDE_WRITE_EEPROM% %AVRDUDE_WRITE_LFUSE% %AVRDUDE_WRITE_HFUSE% >> %LogFile%
"%PrjDir%\BuildTools\WinAVR\bin\avrdude.exe" %AVRDUDE_FLAGS% %AVRDUDE_WRITE_FLASH% %AVRDUDE_WRITE_EEPROM% %AVRDUDE_WRITE_LFUSE% %AVRDUDE_WRITE_HFUSE% >> %LogFile%
CD %OldDir%
In der Befehlszeile des Studios müssen natürlich alle Parameter (alle heißt auch der nullte) in Anführungszeichen gesetzt werden, die eine Pfadangabe beinhalten. Dabei aber darauf achten, dass jeder Parameter für sich eingekapselt wird. Sonst denkt das Studio es gibt nur den nullten.
So jetzt muss ich erst mal sehen wie das Ergebnis meines CODE - Weitergebe - Versuches aussieht.
sast
Lesezeichen