Wie gesagt, ich vermute mal es ist ein silicon bug mit im Spiel oder/und ein Bug im Pony. Von dem Problem hab ich schon öfter gehört, (weiß jetzt nicht mehr mit welchen Proggern).
Bei mir ist der Ablauf so: Zum Brennen wird per make-Target ein sh-script gestartet. Das script bekommt die mcu geliefert. Es schreibt ne tmp-datei und startet danach pony.
Makefile:
Code:
BURN_SCRIPT = /d/avr/bin/burn-prog.sh
.PHONY: burn
burn: $(PRG).hex
sh $(BURN_SCRIPT) $< $(MCU_TARGET)
burn-prog.sh
Code:
#!/bin/sh
burn=e:/temp/burn-tmp.e2s
pony=e:/PonyProg2000/PONYPROG2000.EXE
case $2 in
at90s2313)
target=AT90S2313
;;
atmega8)
target=ATmega8
;;
at90s8515)
target=AT90S8515
;;
*)
echo !!! Unknown Target $2;
exit 1;
;;
esac
portion=PROG
echo Burning $1 for $target
rm -rf $burn
echo "# generated file" > $burn
EEPROM_FILE=`basename $1 .hex`_eeprom.hex
#------ START --------
#Programming sequence
echo "SELECTDEVICE $target" >> $burn
echo "call \"echo Clearing buffer...\"" >> $burn
echo "CLEARBUFFER" >> $burn
echo "call \"echo Loading PROG from $1...\"" >> $burn
echo "LOAD-PROG $1" >> $burn
echo "call \"echo read FUSE...\"" >> $burn
echo "READ-FUSE" >> $burn
# LOAD-DATA eeprom.hex
# echo "PAUSE \"Reinstöpseln, anschalten, und los geht's!\"" >> $burn
# READ-CALIBRATION 0x3ff
echo "call \"echo Erasing $target...\"" >> $burn
echo "ERASE-ALL" >> $burn
# echo "WRITE&VERIFY-ALL" >> $burn
echo "call \"echo Writing PROG to $target...\"" >> $burn
echo "WRITE-PROG" >> $burn
$pony $burn
Dateinamen musst du natürlich anpassen. Die Stellen findest du. In dem Script steht noch etwas Müll rum den kannst du entsorgen.
Was genau gemacht wird wird dir klarer, wenn du in die erzeugte tmp-Datei reinguckst ($burn)
Lesezeichen