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
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?
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.