Forum: Compiler & IDEs Bootloader im IAR


von Gregor (Gast)


Lesenswert?

Hallo!

Ich versuche gerade den TWI Bootloader aus der Application Note AVR1622 
von Atmel zum Laufen zu bringen. Mein Problem ist, dass ich den 
Bootloader auf einen anderen Mikrocontroller portieren muss, denn ich 
verwende den ATxmega32C4 statt dem ATxmega128A1 für den der Bootloader 
standardmäßig geschrieben ist. Es gibt aber eine zusätzliche Application 
Note, die die notwendigen Änderungen beschreibt. Diese habe ich auch 
gemacht und der Bootloader lässt sich auch ohne fehler kompilieren. 
Weiters hab ich mir die IAR IDE heruntergeladen istalliert und 
eingerichtet, was ein paar Tage gedauert hat, weil ich eigentlich immmer 
nur mit Atmelstudio gearbeitet habe und den IAR erst erlernen muss.
Doch nun zum eigentlichen Problem.
Das Hex File das vom IAR erstellt wird, platziert den Bootloader nicht 
in den Bootloader Bereich im Flash des ATxmega32C4 sondern direkt auf 
Adresse 0x0000. Das kann man sofort erkennen wenn man das Hex - File 
öffnet und die Adressinformationen auswertet. Wenn ich das Hex- File auf 
den µC flashe und das Flash wieder auslese, ist der Bootloader auch 
tatsächlich ab Adresse 0x0000 im Flash vorhanden, das restliche 
ungenutze Flash ist wie zu erwarten mit 0xFF aufgefüllt. Der Bootloader 
sollte aber beim ATxmega32C4 erst ab der Flash Adresse 0x8000 starten.
Nun hab ich bereits einige Zeit nach Lösungen für mein Problem gegoogelt 
und auch einen vielversprechenden Lösungsansatz gefunden, der jedoch für 
mich nicht funktioniert hatte. 
http://www.avrfreaks.net/forum/how-set-bootloader-start-address
Der Effekt war immer der Gleiche, der Bootloader wurde noch immer bei 
0x0000 anfangend geschrieben.
Was übersehe ich? Muss vermutlich was Grundlegendes sein :)
Hoffe ihr könnt mir helfen!

Lg Gregor

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Gregor schrieb:
> Das Hex File das vom IAR erstellt wird, platziert den Bootloader nicht
> in den Bootloader Bereich im Flash des ATxmega32C4 sondern direkt auf
> Adresse 0x0000. Das kann man sofort erkennen wenn man das Hex - File
> öffnet und die Adressinformationen auswertet.

Sprich, der Bootloader macht genau dass, was man Ihm sagt? Warum weist 
Du den Linker nicht an, die Firmware dahin zu legen, wo sie später auch 
vom Bootloader abgelegt werden soll?

von Gregor (Gast)


Lesenswert?

Nein der Bootloader macht eben genau nicht das was er soll :) Es geht 
darum, dass ich den Bootloader ins Flash vom ATxemga32C4 programmieren 
muss, so dass dieser auch ab der Adresse 0x8000 im Flash abgelegt wird. 
Sonst Funktioniert er nicht, da er sich in der "Application Section" 
statt der "Bootloader Section" befindet.
Also Konkret:
Wie kann ich im IAR einstellen dass der Linker den Bootloader ab 0x8000 
schreiben sollte und nicht ab 0x0000?

von Steffen R. (steffen_rose)


Lesenswert?

Im konkreten Fall kann ich nicht helfen.
Aber typischerweise im Linkerfile - welches dann auch in der 
Linkersektion in den IAR Optionen eingetragen wird.

(Wie das Original-Linkerfile heißt, findet man auch in den Linker 
Optionen von IAR.

Manchmal kann man auch den "kurzen" Weg gehen, wenn man in den 
Linkeroptionen bereits einen Bereich für Flash bzw. .text hat.

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.