www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Grundsätzliches Vorgehen beim Bootloader flashen


Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin dabei mir selber einen Bootloader für den ATMega8535 zu 
schreiben. Ich arbeite unter GCC mit AVR Studio als 
Entwicklungsumgebung. Ins Flash schreibe ich mit PonyProg.
Jetzt hab ich folgendes Problem:
Der Bootloaderbereich des Controllers beginnt am Ende des Flash (hier 
bei 0xc00). Mein erzeugtes HEX File beginnt aber mit Adresse 0x0000 ...

:1000000014C02DC02CC02BC02AC029C028C027C0B6
:1000100026C025C024C023C022C021C020C01FC0CC
:100020001EC01DC01CC01BC01AC011241FBECFE5BE
:10003000D2E0DEBFCDBF10E0A0E6B0E0E0E9F1E045
:1000400002C005900D92A036B107D9F710E0A0E6E6
.
. usw ...

Wie sage ich jetzt Ponyprog, dass der Code nach oben geflasht wird ????

Ich hab auch schon versucht im AVR STudio mit [configuration][memory 
settings] ein Memory segment im Flash bei 0xc00 anzulegen. Der Compiler 
meldet dann:
avr-gcc.exe -mmcu=atmega8535 -Wl,-Map=sigma_boot.map 
-Wl,-section-start=.bootloader=0x1800 sigma_boot.o     -o sigma_boot.elf

Der  Das Hex File wird am Ende aber nicht davon beeinflußt!

Sorry ... ich kapiers einfach nicht ... :-(
Wie kann ich die Adresse im Flash vorgeben an die meine Programm 
(Bootloader) im COntroller abgelegt werden soll ???
Ich bin für jede Hilfe dankbar.

Autor: akw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ein paar Fuses die du für nen Bootloader setzen musst. Schau mal 
dannach!

Autor: akw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Fuses (BOOTRST) sorgen nur dafür dass der Resetvektor auf den 
Bootbereich umgelegt wird mehr nicht.

Den Link kenn ich auch schon. Da wird davon ausgegangen, dass im Hexfile 
bereits die richtigen Flashadressen drin stehen. Hilft mir also auch 
nicht weiter.

In einem anderen Assemblerbeispiel wird am Anfang ...

; put boot loader into boot section
.org DEVBOOTSTART

... verwendet.
Der Linker sorgt dann dafür, dass das Programm dann ab dem Bootsektor 
abgelegt wird.
Ich hab meinen Bootloader in C geschrieben. Wie erzeuge ich ein Hex File 
das ab der Adresse meines Bootloaders beginnt?
Oder gibt es Tools, mit denen ich in einem Intel Hex File Adressen 
verschieben (relocaten) kann?

Autor: Gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lösung gefunden !
Für alle dies interessiert ...

Man muß in [configuration][memory settings] ein Flash segment namens 
".text" mit der Adresse "0x0c00" anlegen.

Das wars :-)

Autor: Philipp Co (ba4_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem hatte ich auch. Im Roboternetz wurde mir geholfen. Die 
Lösung die ich nun habe ist im Makefile:

http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=26102


Gruß Philipp

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.