Hallo, mache soeben meine ersten Schritte mit Bootloader und finde offensichtlich einen bestimmten Schalter nicht. (Oder es gibt ihn nicht) AVR Studio 4.18: Minimal Test-Bootloader gebaut, der auf dem Display nur ausgibt, dass es ihn gibt, nach 5 Sek. Sprung zum Application Prog. Mit Studio übersetzt und dann (über Dragon) mit dem grünen Pfeil (Start Debugging) in den AVR1284P geschoben. Hex zurückgelesen um mal zu schauen, ob er da gelandet ist, wo er soll. Ist er. Aber oh Schreck. Das Application Programm ab $0000 ist weg. Und umgekehrt verhält es sich genau so. Application Programm geflasht >>> Bootloader weg. Schlussfolgerung: Auf diesem Weg passiert immer ein Chip Erase vorweg. Probiert: - Bootloader programmiert - Fuses "LPM und SPM prohibited in Boot Section" gesetzt - Application Programm geflasht >>> Bootloader weg. (Warum ?) (Ja ich weiß, Lock Bits werden danach immer zurückgesetzt. Aber wenigstens einmal wirken dürften sie doch) In AVR-Studio unter Program>Flash nach dem Application Programm Flash den Bootloader direkt durch Angabe des Hexfile programmiert. >>> das klappt. Beide Teile bleiben erhalten. Nach Reset kommt Bootloader, zeigt sich 5 Sekunden und dann Sprung zum Applikation Prog., wie es sein soll. Frage 1: Gibt es in AVR-Studi einen Schalter den ich nicht finden kann, um das Chip Erase zu verhindern ? Frage 2: Sollte "LPM und SPM prohibited in Boot Section" nicht mindestens einmal vor über-flashen schützen ? Frage 3: Wie macht man es richtig im Entwicklungs-Zyklus ohne dauernd aus Versehen den jeweils anderen Teil zu löschen ? Danke+Gruß Andree
Andree S, schrieb: > Frage 1: > Gibt es in AVR-Studi einen Schalter den ich nicht finden kann, um das > Chip Erase zu verhindern ? Eine kleine Tomate hast du schon auf den Augen, oder? > Wie macht man es richtig im Entwicklungs-Zyklus ohne dauernd aus > Versehen den jeweils anderen Teil zu löschen ? Mach erstmal deinen Bootloader fertig. Und mit dem brennst du dann die Applikation. Dann hat sich das unerwünschte Überschreiben von selbst erledigt. Das ist doch Sinn eines Bootloaders. So, wie du jetzt davor bist, kannst du ja nur das Umschalten vom Bootloader zur Applikation testen. mfg.
Das Anwendungsprogramm beginnt immer an Adresse 0, der Bootloader liegt am Ende des Flash Speichers. Wo genau, stellst Du mit Fuse Bits ein. Beim Compilieren des Bootloaders musst Du dem Linker seine Startadresse mitteilen, damit das Hex File an der richtigen Adresse beginnt. ( -Ttext=0x....). Hast Du das vergessen?
Thomas Eckmann schrieb: > > Eine kleine Tomate hast du schon auf den Augen, oder? > Genau damit rechne ich. Dass es etwas ist, wo man 10x draufschaut und es trotzdem nicht erkennt. Leider aber ist dieser Haken bei mir nicht gesetzt. (Und das hätte ich vermutlich auch nicht übersehen....) >> Wie macht man es richtig im Entwicklungs-Zyklus ohne dauernd aus >> Versehen den jeweils anderen Teil zu löschen ? > Mach erstmal deinen Bootloader fertig. Und mit dem brennst du dann die > Applikation. Dann hat sich das unerwünschte Überschreiben von selbst > erledigt. Das ist doch Sinn eines Bootloaders. So, wie du jetzt davor > bist, kannst du ja nur das Umschalten vom Bootloader zur Applikation > testen. > Klappt hier nicht. Im Endausbau soll der BL aus dem HP angesprungen werden, indem ich den Watchdog zubeißen lasse und so bewusst einen Reset auslöse. @Stefan Frings: Alles korrekt eingestellt. Das wollte ich eigentlich mit >"das klappt. >Beide Teile bleiben erhalten. >Nach Reset kommt Bootloader, zeigt sich 5 Sekunden und dann Sprung zum >Applikation Prog., wie es sein soll." ausdrücken. Danke soweit. Hat noch jemand einen Hinweis ? Gruß A.
>(Ja ich weiß, Lock Bits werden danach immer zurückgesetzt. Aber >wenigstens einmal wirken dürften sie doch) Wenn man Lockbits löscht wird auch das Flash komplett gelöscht. Also setze sie besser erstmal nicht.
Andree S, schrieb: > Klappt hier nicht. Im Endausbau soll der BL aus dem HP angesprungen > werden, indem ich den Watchdog zubeißen lasse und so bewusst einen Reset > auslöse. Ja und? Deswegen must du den Bootloader trotzdem erstmal komplett fertig machen. Der Bootloader wird auch nicht aus dem Hauptprogramm "angesprungen". Das Hauptprogramm macht nichts anderes als einen Reset per Watchdog auszulösen. Das nach einem Reset als erstes der Bootloader kommt, hat die Applikation gar nicht zu interessieren. Genauso wenig, wie es den Bootloader interessiert, wodurch der Reset ausgelöst wurde. Bootloader und Applikation sind zwei völlig verschiedene Programme, die nichts voneinander wissen und sich nicht füreinander interessieren. mfg.
Thomas Eckmann schrieb: > Andree S, schrieb: > Ja und? > Deswegen must du den Bootloader trotzdem erstmal komplett fertig machen. > Der Bootloader wird auch nicht aus dem Hauptprogramm "angesprungen". > Das Hauptprogramm macht nichts anderes als einen Reset per Watchdog > auszulösen. Das nach einem Reset als erstes der Bootloader kommt, hat > die Applikation gar nicht zu interessieren. Genauso wenig, wie es den > Bootloader interessiert, wodurch der Reset ausgelöst wurde. > > Bootloader und Applikation sind zwei völlig verschiedene Programme, die > nichts voneinander wissen und sich nicht füreinander interessieren. > > mfg. Das ist alles bekannt durch vielfaches suchen, lesen und Datenblatt-Studium. Nur dass es sich hier bei dieser Anwendung nicht um einen BL handeln wird, der stumpf nach jedem Reset auf irgend ein UART-Empfang oder Pin-Level achtet und dann lädt. Der Hinweis "mach deinen BL fertig und lade anschließend dein HP gefälligst darüber, dann hast du die Probleme auch nicht" zieht hier nicht. Weil er (der BL) genau das NICHT machen soll. Und außerdem löst es das grundsätzliche Problem nicht. Ich suche lediglich nach einem Hinweis, warum jeweils offensichtlich ein Chip Erase ausgelöst wird. Oder aber ob das nunmal so ist und damit normal. Dann ist es auch gut - ich habe ja einen Weg, wie es geht, auch wenn er umständlich ist. G. A.
Andree S, schrieb: > Weil er (der BL) genau das NICHT machen soll. Dann ist das auch kein Bootloader. mfg.
Hab schon verschiedene AVRs mit Bootloadern geflasht, ein Chip Erase war da noch nie im Gange. Muss n Programmfehler vom BL sein. Wenn Bootloader und Applikation in einem Rutsch geflasht werden soll, dann geh doch einfach hin und verheirate die Hexfiles miteinander. Der komplizierteste Weg ist den BL flashen, dann den Hex auslesen und dann die Hex der Aplikation in die zurückgelesene einkopieren. Geht einfach per MS-Editor.
Zu den Lockbits: die von dir gesetzten verhindern nur, dass der uC seinen Flash schreibt oder ausliest, das hat aber mit dem Programmieren über ISP nichts zu tun. Gruß, Alex
Alexander v. Grafenstein schrieb: > ... über ISP nichts zu tun. Hallo Alexander, was vermutlich genauso für das Programmieren über die JTAG Schnittstelle gilt. Ist zumindest dann dafür eine Erklärung. Danke A.
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.