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


von Gerhard (Gast)


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.

von akw (Gast)


Lesenswert?

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

von akw (Gast)


Lesenswert?


von Gerhard (Gast)


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?

von Gerhard (Gast)


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 :-)

von Philipp C. (ba4_philipp)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.