Bootloader + avrdude: kleinere Probleme

#2006098
Lesenswert?

Hallo Leute,

bin gerade dabei, entsprechend dem Artikel 
http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung 
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
1
   text    data     bss     dec     hex filename
2
   1724     214      69    2007     7d7 bootload1.elf
bzw. der Größe von bootload1.hex (ca. 130 Zeilen, Startadresse 0x7000) 
zu erwarten ist.
1
avrdude -p m32 -c usbasp -P usp -e -y -U flash:w:bootload1.hex                                                                                      
2

3
avrdude: AVR device initialized and ready to accept instructions
4

5
Reading | ################################################## | 100% 0.00s
6

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

14
Writing | ################################################## | 100% 14.89s
15

16

17

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

24
...
25

26
avrdude: verifying ...
27
avrdude: 30610 bytes of flash verified
28

29
avrdude: safemode: Fuses OK
30

31
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...
1
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
Gast #2006111
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:
1
          -D      Disable auto erase for flash.  When the -U option with
2
                   flash memory is specified, avrdude will perform a chip
3
                   erase before starting any of the programming operations,
4
                   since it generally is a mistake to program the flash with‐
5
                   out performing an erase first. [..]

HTH

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren