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.
Es gibt ein paar Fuses die du für nen Bootloader setzen musst. Schau mal dannach!
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?
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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.