mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader + avrdude: kleinere Probleme


Autor: Hermann-Josef M. (hermann-josef)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

bin gerade dabei, entsprechend dem Artikel 
http://www.mikrocontroller.net/articles/AVR_Bootlo... 
mit einem bootloader herum zu experimentieren. Allerdings ist die 
verwendete Platform eine leicht andere:
- ATmega32 auf Pollin AVR-NET-IO
- Linux (SuSE 11.2)
- mit avrdude 5.5 (bzw. 5.10)
- und minicom 2.3

Merkwürdigerweise flasht avrdude immer mehr Bytes als es aufgrude der 
Ausgabe von avrsize
   text    data     bss     dec     hex filename
   1724     214      69    2007     7d7 bootload1.elf
bzw. der Größe von bootload1.hex (ca. 130 Zeilen, Startadresse 0x7000) 
zu erwarten ist.
avrdude -p m32 -c usbasp -P usp -e -y -U flash:w:bootload1.hex                                                                                      

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9502
avrdude: erasing chip               
avrdude: erase-rewrite cycle count is now 39
avrdude: reading input file "bootload1.hex" 
avrdude: input file bootload1.hex auto detected as Intel Hex
avrdude: writing flash (30610 bytes):                       

Writing | ################################################## | 100% 14.89s



avrdude: 30610 bytes of flash written
avrdude: verifying flash memory against bootload1.hex:
avrdude: load data flash data from input file bootload1.hex:
avrdude: input file bootload1.hex auto detected as Intel Hex
avrdude: input file bootload1.hex contains 30610 bytes      

...

avrdude: verifying ...
avrdude: 30610 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Die zweite Merkwürdigkeit ist die, dass es mir nicht gelingt, das 
User-Programm zu flashen, danach ist der Bootloader weg...
avrdude -p m32 -c usbasp -P usp -y -U flash:w:user1.hex
Die '-e'-Option (= erase flash) wurde weggelassen und eigentlich sollte 
sich da immer noch der bootloader melden...

In einem frühen Entwicklungsstadium des Bootloaders (siehe o.g. Artikel) 
kann der Bootloader noch nicht flashen, das Userprogramm muss also 
händisch in den AVR übertragen werden.

Das gelingt dann nur so, wie hier 
Beitrag "Re: AVR-GCC - Bootloader & Nutzprogramm in einem. Wie?" vorgeschlagen - 
aneinanderhängen und erste Endemarkierung entfernen.

Abgesehen von diesen beiden Stolpersteinen funktioniert der bootloader 
am Ende wie im Artikel beschrieben, ich kann dann also ein Hex-File via 
minicom in den AVR übertragen.

Noch einige Infos:
- lfuse reads as EF
- hfuse reads as 80
- Linkeroption für bootload1.elf: -Ttext=0x7000
- avr-gcc -v -> gcc version 4.1.2 20070115 (OK, nicht so frisch ;))

Bei den avrfreaks wurde ein solches Verhalten bei früheren Versionen von 
avrdude bei bestimmten Programmieradaptern diskutiert, ist mir aber 
nicht klar, ob es ein spezifisches oder allgemeines Problem des avrdude 
ist.

Vielleicht kennt jemand das Problem und kann mir sagen, wo ich etwas 
falsch gemacht habe?

Danke schon mal
Hermann-Josef

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zumindest da kann ich meinen Senf dazugeben:

> Die '-e'-Option (= erase flash) wurde weggelassen und eigentlich sollte
> sich da immer noch der bootloader melden...

Kuckst Du manpage:
          -D      Disable auto erase for flash.  When the -U option with
                   flash memory is specified, avrdude will perform a chip
                   erase before starting any of the programming operations,
                   since it generally is a mistake to program the flash with‐
                   out performing an erase first. [..]

HTH

Autor: Atmel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nicht einfach die "lock" fuses setzen, die Verhindern doch das 
überschreiben des Bootloaders (ausser bei -e Option).

Autor: Hermann-Josef M. (hermann-josef)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo g457,

Danke, das habe ich in der Tat übersehen, vermutlich hat es der avrdude 
sogar ausgegeben... ;(

So geht es dann:
avrdude -p m32 -c usbasp -P usp -y -D -U flash:w:user1.hex

Danke nochmals
Hermann-Josef

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.