mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader ASM


Autor: fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Informiere dich hier:
http://www.mikrocontroller.net/articles/AVR_Bootlo...

Dort steht grundsätzlich drin, was ein Bootloader macht und es ist auch 
eine Step-by-step Anleitung beschrieben. Allerdings in 'C'.

Autor: fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm,

eine Frage hab ich jetzt noch.
Geht das so wie ich erst dachte mit allen Buffern laden?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Sieh mal im Datenblatt vom ATMega8 nach. Da findest du einen Bootloader 
in Assembler.

MfG Spess

Autor: Fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, aber der lädt nur ein page.

Hab ich auch gerade neben mir liegen und Buddel mich da durch.

Autor: fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt eine Erklärung zum Problem gefunden:
von 
http://www.avrfreaks.net/index.php?name=PNphpBB2&f...

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

Autor: fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir keiner helfen? Haben die andersfarbigen Zeilen in ponyprog eine 
Bedeutung?

Autor: fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn sich jemand dann für das Resultat interessiert, kann ich den Code 
auch reinstellen.

Autor: Rene Schir (gigastulle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.