mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVRdude und hex mit allen Datenbereichen?


Autor: blip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche gerade Elm ChaNs sd WAV player zu flashen, auf einen neuen 
t85:
avrdude -p t85 -c avrispv2 -P COM5 -U flash:w:sd8p_mo.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e930b
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed

         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "sd8p_mo.hex"
avrdude: input file sd8p_mo.hex auto detected as Intel Hex
avrdude: ERROR: address 0x820003 out of range at line 378 of sd8p_mo.hex
avrdude: write to file 'sd8p_mo.hex' failed

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


Die Fuse Bytes sind wohl mit im HEX
/* This is the fuse settings for each operating mode. The fuse data will be
   included in an output hex file with program code. However some flash programmers
   may not support this sort of hex files. If it is the case, use these values
   to program the fuse bits.
*/
#if   MODE == 0
FUSES = {0xE1, 0xDD, 0x01};  /* Mono: Low, High and Extended */
#elif MODE >= 1
FUSES = {0xE1, 0x7D, 0x01};  /* Stereo/Hi-Fi: Low, High and Extended (*HVS mode only*) */
#endif


Was läuft da schief? Wieso will er überhaupt in eine Datei schreiben?

http://elm-chan.org/works/sd8p/report.html
http://www.nongnu.org/avrdude/user-manual/avrdude_...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du versuchst, die Fuses mitsamt Offset in den Flash zu schreiben.
Das geht nicht.

AVRDUDE unterstützt derzeit nur das Schreiben eines Speicherbereichs
pro -U-Option, du musst also dein ELF-File in ein Hex-File pro
Speicherbereich aufteilen (aber nicht vergessen, dass der Flash
nicht nur .text bekommt, sondern auch .data, wegen der Initialisierung
der Variablen).  Den ELF-internen Offset musst du dabei außerdem von
avr-objcopy rausrechnen lassen (mit --change-section-address).

Autor: blip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, ich habe die fuses section in der letzten Zeile des Makefile_mo 
entfernt, deine Tips sind etwas zu hoch für mich (danke trotzdem).
$(OBJCOPY) -j .text -j .data -O ihex $< $@

Bei der extended fuse bekomme ich leider einen Fehler:
avrdude -p t85 -P C
OM5 -c AVRISPv2 -U flash:w:sd8p_mo.hex -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U ef
use:w:0x01:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e930b
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed

         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "sd8p_mo.hex"
avrdude: input file sd8p_mo.hex auto detected as Intel Hex
avrdude: writing flash (5994 bytes):

Writing | ################################################## | 100% 2.43s

avrdude: 5994 bytes of flash written
avrdude: verifying flash memory against sd8p_mo.hex:
avrdude: load data flash data from input file sd8p_mo.hex:
avrdude: input file sd8p_mo.hex auto detected as Intel Hex
avrdude: input file sd8p_mo.hex contains 5994 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.37s

avrdude: verifying ...
avrdude: 5994 bytes of flash verified
avrdude: reading input file "0xe1"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xe1:
avrdude: load data lfuse data from input file 0xe1:
avrdude: input file 0xe1 contains 1 bytes
avrdude: reading on-chip lfuse data:

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

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xdd"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xdd:
avrdude: load data hfuse data from input file 0xdd:
avrdude: input file 0xdd contains 1 bytes
avrdude: reading on-chip hfuse data:

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

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0x01"
avrdude: writing efuse (1 bytes):

Writing |                                                    | 0% 0.00s ***faile
d;
Writing | ################################################## | 100% 0.09s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0x01:
avrdude: load data efuse data from input file 0x01:
avrdude: input file 0x01 contains 1 bytes
avrdude: reading on-chip efuse data:

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

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x01 != 0x00
avrdude: verification error; content mismatch

avrdude: safemode: lfuse changed! Was e1, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: hfuse changed! Was dd, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: efuse changed! Was 1, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude: safemode: Fuses OK

avrdude done.  Thank you.


Als ich eben mal yes angegeben habe, erschien der erste BSOD seit 
Jahren: DRIVER_IRQL_NOT_LESS_OR_EQUAL

AVRISP blieb dann bei roter oder oranger LED hängen, während ich Win7 
neustartete.
avrdude
Usage: avrdude [options]
Options:
  -p <partno>                Required. Specify AVR device.
  -b <baudrate>              Override RS-232 baud rate.
  -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
  -C <config-file>           Specify location of configuration file.
  -c <programmer>            Specify programmer type.
  -D                         Disable auto erase for flash memory
  -i <delay>                 ISP Clock Delay [in microseconds]
  -P <port>                  Specify connection port.
  -F                         Override invalid signature check.
  -e                         Perform a chip erase.
  -O                         Perform RC oscillator calibration (see AVR053).
  -U <memtype>:r|w|v:<filename>[:format]
                             Memory operation specification.
                             Multiple -U options are allowed, each request
                             is performed in the order specified.
  -n                         Do not write anything to the device.
  -V                         Do not verify.
  -u                         Disable safemode, default when running from a scrip
t.
  -s                         Silent safemode operation, will not ask you if
                             fuses should be changed back.
  -t                         Enter terminal mode.
  -E <exitspec>[,<exitspec>] List programmer exit specifications.
  -x <extended_param>        Pass <extended_param> to programmer.
  -y                         Count # erase cycles in EEPROM.
  -Y <number>                Initialize erase cycle # in EEPROM.
  -v                         Verbose output. -v -v for more.
  -q                         Quell progress output. -q -q for less.
  -?                         Display this usage.

avrdude version 5.10, URL: <http://savannah.nongnu.org/projects/avrdude/>

Mhh, eigentlich sollte es ein 5-Minuten-Projekt werden :-)

Aber vielleicht kannst du mir noch weiterhelfen?

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.