Atmel-Bootloader: fuer Mega8 geeignet? Wer kann den kompilie

A

Arne Rossius

Guest
Hallo,

ich suche fuer den Mega8 einen Bootloader, der mit dem Atmel-Protokoll (das
z.B. von AVRProg und AVRdude verwendet wird) kompatibel ist. Dabei ist mir
der Bootloader in der Appnote AVR109 in die Haende gefallen. Leider steht
da nirgends dran, fuer welche Controller sich der eignet. Daher die erste
Frage, ob der ueberhaupt auf einem Mega8 (sinnvoll) einsetzbar ist (der
Bootloader sollte - ohne EEPROM, Fuses etc. - moeglichst <= 512 Byte
brauchen).
Wenn der Bootloader diese Vorraussetzungen erfuellt, dann waere mein
naechstes Problem, den C-Code zu kompilieren. Scheinbar wird da dieser
IAR-Compiler benoetigt, den ich aber leider nicht habe (gibt es den fuer
Linux ueberhaupt?). Die Dateien sehen auch etwas merkwuerdig aus (.ewp
und .eww kenne ich nicht), ausserdem fehlt irgendwie das Makefile, mit
avr-gcc komme ich da also auch nicht weiter (ich bin in C Anfaenger,
deswegen wuerde ich z.B. ein Makefile dafuer noch nicht selber
hinbekommen). Hat hier vielleicht jemand den IAR-Compiler und kann mir den
Code fuer den Mega8 kompilieren (nur die Funktionen fuer den Flash, nicht
EEPROM/Fuses/...)? Oder gibt es gar bessere/andere Bootloader in Assembler
oder fuer avr-gcc?

Vielen Dank schon mal.


Gruss,
Arne
 
Arne Rossius wrote:
Hallo,

ich suche fuer den Mega8 einen Bootloader, der mit dem Atmel-Protokoll (das
z.B. von AVRProg und AVRdude verwendet wird) kompatibel ist. Dabei ist mir
der Bootloader in der Appnote AVR109 in die Haende gefallen. Leider steht
da nirgends dran, fuer welche Controller sich der eignet. Daher die erste
Frage, ob der ueberhaupt auf einem Mega8 (sinnvoll) einsetzbar ist (der
Bootloader sollte - ohne EEPROM, Fuses etc. - moeglichst <= 512 Byte
brauchen).
Guck mal auf www.chip45.com. Für den Crumb8 gibt es da fertig
kompilierte Bootloader, und auch 'nen angepassten source für den GCC.
Funzt hier bei mir einwandfrei.

(Der Bootloader ist wohl nicht vom Betreiber der Webseite geschrieben,
sondern eine angepasste version von einem bestehenden Bootloader.. die
original-Quelle hab' ich leider auch nicht finden können..)

--
thomas.kindler@gmx.de
 
Thomas Kindler wrote:
Guck mal auf www.chip45.com. Für den Crumb8 gibt es da fertig
kompilierte Bootloader, und auch 'nen angepassten source für den GCC.
Funzt hier bei mir einwandfrei.
Danke, aber leidernoch nicht ganz das, was ich suche:
1) zu gross (2048 Byte!)
2) anderer "Befehlssatz" zur Ansteuerung

Gruss,
Arne
 
Arne Rossius wrote:
Danke, aber leidernoch nicht ganz das, was ich suche:
1) zu gross (2048 Byte!)
Ok, evtl. kann man ja noch was von Hand zusammenstreichen.

2) anderer "Befehlssatz" zur Ansteuerung
Der Code läuft einwandfrei, wie gewünscht, mit avrdude, uisp und dank
STK-200 Kompatibilität auch mit dem Menupunkt aus AVRStudio.

--
thomas.kindler@gmx.de
 
Joerg Wunsch wrote:
Ich habe einen offiziellen Port für den GCC bei Atmel in Norwegen
eingereicht, den kann ich dir gern zur Verfügung stellen.
Das waere super :)
Schick' ihn bitte einfach an meine Email-Adresse.

Aber mit 512 Byte wird das selbst beim Compilieren mit einem IAR knapp...
Notfalls sind 1024 Byte auch noch ok, aber 2048 sind definitiv zu viel.

Man kann zwar mit #ifdef einige Features aussieben, aber ich weiß nicht,
was das minimal sinnvolle Maß ist.
Ich werd's mal ausprobieren :)


Gruss,
Arne
 
Thomas Kindler wrote:
2) anderer "Befehlssatz" zur Ansteuerung

Der Code läuft einwandfrei, wie gewünscht, mit avrdude, uisp und dank
STK-200 Kompatibilität auch mit dem Menupunkt aus AVRStudio.
Bist du sicher? Ich habe extra gerade nochmal meinen Aufbau ueberprueft und
auch noch mal mit avrdude probiert, ohne Erfolg. Kann eigentlich auch nicht
gehen, Beispiele:

Crumb8:
/* Leave programming mode */
else if(ch=='Q') {
nothing_response();
}
AVR109:
// Read extended fuse bits.
else if(val=='Q')
{
_WAIT_FOR_SPM();
sendchar( _GET_EXTENDED_FUSES() );
}

Crumb8:
/* Erase device, don't care as we will erase one page at a time anyway. */
else if(ch=='R') {
nothing_response();
}
AVR109:
// Read program memory.
else if(val=='R')
{
// Send high byte, then low byte of flash word.
_WAIT_FOR_SPM();
_ENABLE_RWW_SECTION();
#pragma diag_suppress=Pe1053 // Suppress warning for [...]
sendchar( _LOAD_PROGRAM_MEMORY( (address << 1)+1 ) );
sendchar( _LOAD_PROGRAM_MEMORY( (address << 1)+0 ) );
#pragma diag_default=Pe1053 // Back to default.

address++; // Auto-advance to next Flash word.
}

und so weiter ...
Moeglicherweise gibt es gar 2 Atmel-Protokolle? Ich brauche auf jeden Fall
das, was vin AVR109 verwendet wird.


Gruss,
Arne
 
Arne Rossius wrote:

Hallo,

ich suche fuer den Mega8 einen Bootloader, der mit dem Atmel-Protokoll
(das z.B. von AVRProg und AVRdude verwendet wird) kompatibel ist. Dabei
ist mir der Bootloader in der Appnote AVR109 in die Haende gefallen.
Leider steht da nirgends dran, fuer welche Controller sich der eignet.
Daher die erste Frage, ob der ueberhaupt auf einem Mega8 (sinnvoll)
einsetzbar ist (der Bootloader sollte - ohne EEPROM, Fuses etc. -
moeglichst <= 512 Byte brauchen).
Ich habe da mal aus dem AVR109 Beispiel und einem anderen Bootloader (Quelle
habe ich gerade nicht zur Hand) was für den AVR-GCC gestrickt. Leider
benötigt der Bootloader knapp 1KB Flash, Du könntest allerdings ein paar
Sachen auskommentieren dann kommt er evtl. auf die 512 Bytes.

Hier der Link:
http://www.kunz-im-inter.net/frank/elektronik/avr/MBOOT_02022004.zip

naechstes Problem, den C-Code zu kompilieren.
Du brauchst den AVR-GCC, alles weitere steht in der Makefile.

Vielen Dank schon mal.
Viel Erfolg.

Gruß, Frank
 
Frank Kunz wrote:
Ich habe da mal aus dem AVR109 Beispiel und einem anderen Bootloader
(Quelle habe ich gerade nicht zur Hand) was für den AVR-GCC gestrickt.
[...]
http://www.kunz-im-inter.net/frank/elektronik/avr/MBOOT_02022004.zip
Danke, mit einem zusaetzlichen
#define cbi(sfr, bit) ((sfr) &= ~_BV(bit))
#define sbi(sfr, bit) ((sfr) |= _BV(bit))
funktioniert es! Ich werde mal sehen, ob ich das noch irgendwie kleiner
bekomme. Zumindest die EEPROM-Routinen kann ich ja schon mal rauswerfen.


Gruss,
Arne
 
Arne Rossius <ArneRossius@despammed.com> schrieb:

Wenn der Bootloader diese Vorraussetzungen erfuellt, dann waere mein
naechstes Problem, den C-Code zu kompilieren.
Ich habe einen offiziellen Port für den GCC bei Atmel in Norwegen
eingereicht, den kann ich dir gern zur Verfügung stellen. Aber mit
512 Byte wird das selbst beim Compilieren mit einem IAR knapp... Man
kann zwar mit #ifdef einige Features aussieben, aber ich weiß nicht,
was das minimal sinnvolle Maß ist.

--
cheers, J"org .-.-. --... ...-- -.. . DL8DTL

http://www.sax.de/~joerg/ NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
 
Arne Rossius <ArneRossius@despammed.com> schrieb:

Ich habe einen offiziellen Port für den GCC bei Atmel in Norwegen
eingereicht, den kann ich dir gern zur Verfügung stellen.

Das waere super :)
Schick' ihn bitte einfach an meine Email-Adresse.
Ich hab' ihn auf

http://www.sax.de/~joerg/AVR109-gcc.tar.gz

hinterlegt. (Meine Portierung des AVR065-Codes liegt jetzt auch dort,
die habe ich auch schon eingereicht.)

Lass' dich nicht vom Unterverzeichnis namens IAR verwirren, ich habe
nur die originale Verzeichnisstruktur übernommen. Der Code kann jetzt
beides.

Du musst dich entweder durch diesen preprocessor.xls-Kram durchhangeln
(Poor men's scripting language) oder den Shellscript aufrufen, um die
Einstellungen für deinen Controller festzulegen.

Aber mit 512 Byte wird das selbst beim Compilieren mit einem IAR
knapp...

Notfalls sind 1024 Byte auch noch ok, aber 2048 sind definitiv zu
viel.
1024 Bytes sind drin, mit dem GCC (zumindest mit dem 3.4er) allerdings
nicht mit allen Features. Der IAR kommt bereits full-featured fast an
die 1024 ran.

--
cheers, J"org .-.-. --... ...-- -.. . DL8DTL

http://www.sax.de/~joerg/ NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
 
j@uriah.heep.sax.de (Joerg Wunsch) schrieb:

Ich hab' ihn auf

http://www.sax.de/~joerg/AVR109-gcc.tar.gz

hinterlegt.
Achso. Du brauchst (leider) eine CVS-Version des AVRDUDE, um mit
einem beliebigen AVR109-Bootloader zu sprechen. Falls du dich auf
19200 Bd festlegst, sollten auch ältere Versionen benutzbar sein, wenn
du "butterfly" als programmer auswählst. Aber ich hoffe mal, dass
Brian Dean bald mal ein AVRDUDE 5.0 rausbringt.

--
cheers, J"org .-.-. --... ...-- -.. . DL8DTL

http://www.sax.de/~joerg/ NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
 
Joerg Wunsch wrote:
Ich hab' ihn auf
http://www.sax.de/~joerg/AVR109-gcc.tar.gz
hinterlegt.
Danke!

Achso. Du brauchst (leider) eine CVS-Version des AVRDUDE, um mit
einem beliebigen AVR109-Bootloader zu sprechen. Falls du dich auf
19200 Bd festlegst, sollten auch ältere Versionen benutzbar sein
Das ist locker genug, es kommt da nicht so auf Geschwindigkeit an.

wenn du "butterfly" als programmer auswählst.
Das war die Sache mit dem schnellen Uebertragungsmodus, oder? Sollte der
normale Modus (mit 'c', 'C' und 'm') nicht auch ohne Butterfly-Option
funktionieren?


Gruss,
Arne
 
Arne Rossius <ArneRossius@despammed.com> schrieb:

wenn du "butterfly" als programmer auswählst.

Das war die Sache mit dem schnellen Uebertragungsmodus, oder? Sollte
der normale Modus (mit 'c', 'C' und 'm') nicht auch ohne
Butterfly-Option funktionieren?
Ich hab' den AVR109-Loader nicht als AVR910 ansprechen können, hab's
aber auch nicht ernsthaft versucht. Es war für mich einfacher, die
paar Ergänzungen stattdessen ins AVRDUDE einzubauen, da gibt's jetzt
einen Programmer namens "avr109" (der letztlich nur ein Alias des
"butterfly" ist).

--
cheers, J"org .-.-. --... ...-- -.. . DL8DTL

http://www.sax.de/~joerg/ NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
 

Welcome to EDABoard.com

Sponsor

Back
Top