Hallo alle zusammen, ich hoffe erstmal, dass das einigermaßen hier richtig ist. Ich habe noch nicht besonders viel mit AVR und ASM gemacht. Benutze zur Zeit einen Attiny 2313 und möchte einen Bootloader programmieren. Damit ich etwas lerne! Das ganze soll über Terminal laufen, der mir dann ein Hex file schickt. Soweit so gut. Jetzt habe ich noch ein paar Fragen. -Self programming: Kann ich (soviele wie in den Sram passen)alle Daten in den temporary Buffer laden und dann einen Page Write Befehl nach dem Anderen geben? -Ich werde es so machen, dass ich die Pages lösche, die .hex empfange, die Daten aufbereite, und dann in den Buffer lade. Ist das so möglich? Vielen Dank schon einmal fred
Informiere dich hier: http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung Dort steht grundsätzlich drin, was ein Bootloader macht und es ist auch eine Step-by-step Anleitung beschrieben. Allerdings in 'C'.
Hallo, danke für die superschnelle Antwort. Frage zwei wäre dann geklärt. Ich glaub jetzt schaff ichs. Werde hier dann von meinen (Miss-)erfolgen berichten. fred
Ähm, eine Frage hab ich jetzt noch. Geht das so wie ich erst dachte mit allen Buffern laden?
Hi Sieh mal im Datenblatt vom ATMega8 nach. Da findest du einen Bootloader in Assembler. MfG Spess
Ja, aber der lädt nur ein page. Hab ich auch gerade neben mir liegen und Buddel mich da durch.
Hab jetzt eine Erklärung zum Problem gefunden: von http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=746200 Hier steht(unten): Von clawson: kursivAVR is Atmega168 ?? Anyway this is not in the 1024 bytes of SRAM that are visible to you in a 168. It's an additional 128 bytes that are set aside ONLY for use by SPM and that cannot be used in any other way apart from when you write 00000001 to SPMCSR and then perform the SPM opcode. The 128 bytes are write only. You cannot read back what you have written so this RAM serves NO other purpose than performing page writes. You make 64 "word" (R1:R0) writes to the buffer then you invoke 00000101 and SPM to actually write the buffer contents to the erased flash page./ Thank you very much
Hallo alle zusammen. Ich hab's jetzt schon recht weit geschafft und komme dem Ziel näher. Eines schaff ich jedoch nicht. Das schreiben. Ich kann Löschen, per UART kommunizieren, und bei losgelassener Taste macht er das was er soll, aber wenn ich schreiben möchte hängt er sich auf. Kann mir jemand helfen? Ich weiß nicht mehr weiter. Weil an den fusebits kann esja nicht mehr hängen. Der 2313 hat ja keine außer spmen und SDAX ist gesetzt. Sonst würde ja auch löschen nicht gehen.Oder? Hier mein Code: Die Daten liegen aufbereitet im Sram der gleichzeitig Stack ist. Problem? Flash_erase: LDI XL, 0x60 CLR XH ldi Loop, 16 CLR ZL CLR ZH eraseloop: ld r0, X+ ld R1, X+ ldi spmval, 1 rcall do_spm adiw ZL, 2 DEC Loop BRNE eraseloop Sbiw ZL, 32 ldi spmval, 0b00000101 rcall do_ spm ret Danke Fred
Kann mir keiner helfen? Haben die andersfarbigen Zeilen in ponyprog eine Bedeutung?
Habe es jetzt gefunden. Er hatte schon die Funktion drinne zum normalen Programm zu springen wenn er fertig ist und hat daher den Flash immer und immer wieder gelöscht und ich hab's nicht gemerkt. Außerdem kommt man aus einer Schleife mit DEC und BRNE nicht raus. Summt das oder bin ich nur blöd? Das geht nur mit subi. Trotzdem vielen Dank und tschuldigung, dass ich so ungeduldig bin.
Wenn sich jemand dann für das Resultat interessiert, kann ich den Code auch reinstellen.
fred schrieb: > Wenn sich jemand dann für das Resultat interessiert, kann ich den Code > auch reinstellen. Also mich würde das Brennend interessieren !!! Den so richtig sehe ich da nicht durch. ob woll ich eigentlich Fit in ASM bin und auch mit den AVR's schon viel gemacht habe. Nur den Bootloader habe ich noch nicht benutzt. Habe ich das jetzt richtig verstanden, das ich in den Bootloader Secktor das Program schreiben muß welches mir die Daten in den Flash Brennt und sich die Daten auch vom PC hohlt ? Sieht das ganze nur kompliziert aus oder ist auch so Danke schon mal im vorraus
Rene Schir schrieb: > Habe ich das jetzt richtig verstanden, das ich in den Bootloader Secktor > > das Program schreiben muß welches mir die Daten in den Flash Brennt und > > sich die Daten auch vom PC hohlt ? Genau so ist das. mfg.
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.