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
clean.batCode: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
compile.batCode: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
link.batCode: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
makehex.batCode: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
makelistfile.batCode: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%
send_program.batCode: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
Hier bitte aufpassen, da ich auch die Fusebits mit setze und einen ATMega8 verwende
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.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%
So jetzt muss ich erst mal sehen wie das Ergebnis meines CODE - Weitergebe - Versuches aussieht.
sast







Zitieren

Lesezeichen