Hallo Forumsmitglieder,
ich habe vor einiger Zeit einen Bootloader für XMega und Mega erstellt.
Funktioniert auch super (über UART).
Jetzt wollte ich den Bootloader auch für die großen Tiny's machen
(ATTiny1634 z. Zt. bei mir). Der Bootloader funktioniert an sich (also
kann alle Daten korrekt entgegen nehmen und verarbeiten (habe ich mir
via UART anzeigen lassen)). Das Problem: Manche Zeilen funktionieren
super, aber dazwischen sind Blöcke mit lauter FF's?!
Leider sind die wenigsten Bootloader in C, ich kann kein asm. Als
Sprungadresse habe ich die gleiche genommen, wie beim ATMega168 (dachte
mir sind ja gleich groß, also sollte bei Bootloadersize von max. 2kb
Sprungadresse 0x1C00 passen; ist auch so beim ATMega168 angegeben). Ich
weiß echt nicht was da falsch läuft :(
Die "AVR_Tiny_Bootloader.c" binde ich einfach als Bibliothek in mein
Hauptprogramm ein und rufe bootloader(1) auf, wenn programmiert werden
soll.
Im Makefile habe ich noch folgendes implementiert: Toolchain -> Symbols
(mit BOOTADDR=0x3800) und Toolchain -> Memory Settings (mit
.bootloader=0x1C00)
Marius Dege schrieb:> Manche Zeilen funktionieren super, aber dazwischen sind Blöcke mit> lauter FF's. Das kommt aber wieder nur am Anfang vor, später ist der
Wenn nichts anderes hilft, DaBla lesen.
Tiny1634 löscht 4 Pages auf einmal, Mega168 aber nur eine.
Daher die ganzen FFs.
Marius Dege schrieb:> ich habe vor einiger Zeit einen Bootloader für XMega und Mega erstellt.
Du meinst abgeschrieben ?
Marc Vesely schrieb:> Marius Dege schrieb:>> ich habe vor einiger Zeit einen Bootloader für XMega und Mega erstellt.> Du meinst abgeschrieben ?
1. Bitte nicht plenken.
2. Den Vorwurf begründen.
Plagiatus schrieb:> 1. Bitte nicht plenken.> 2. Den Vorwurf begründen.
Wenn er es selber geschrieben hätte, würde er auch wissen wo der
Fehler zu suchen ist.
Hi,
nein ist nicht abgeschrieben, sondern selbst erstellt - auf ATMega
Basis, nun habe ich versucht ihn auf den ATTiny umzubasteln (dachte ich
könnte es einigermaßen importieren wenn ich die Section beim ATTiny
hinzufüge). Das einzige was ich hier aus dem Forum habe, ist die
Aufteilung beim ATTiny (also das mit der " BOOTLOADER_SECTION", wie man
das beim ATTiny "simuliert"). Das war alles beim Mega nicht nötig und
viel einfacher - unabhängig davon kann dir das aber auch egal sein; ich
habe nach Hilfe gebeten, dafür ist das Forum doch da.
Jetzt zum wichtigen: Du sagst der ATTiny löscht 4 Pages - ok, aber wie
erklärst du dir dann, dass es nach den ersten paar Segmenten normal
funktioniert, warum ist beim EEPROM nur die erste Zeile falsch? Die FF's
im unteren Ende der IST.hex sind ok, da das Programm nicht den ganzen
Flash nutzt. Ab da fängt dann auch der Bootloader an (und der kann nicht
überschrieben werden).
Wenn man Flash-Ist anschaut, 3:1 FF zu Code, dann sieht das verdammt
nach dem beschriebenem "4 Pages gleichzeitig" Verfahren in "falsch
bedient" aus. Offensichtlich muß man da das DB intensiver durcharbeiten.
Beim kurzen Überfliegen würde ich auf 1x 4PageErase gefolgt vom
Schreiben von 4 aufeinander folgende Pages. Wird vor der 4ten Page noch
mal ein 4PageErase gemacht, dann werden auch 1 2 und 3 mitgelöscht. Wenn
man spitzfindig wäre könnte man auch einfach sagen, die PageSize ist 4x
so groß. Im BL-Code steht nichts von 4er Löschen und 4mal Seite
schreiben, da bleibt also noch Raum für Eigenentwicklung ;-)
Zudem EEProm und FLASH sind zwei ganz verschiedene Dinge. EEProm scheint
auch kein Problem zu haben, außer daß beim Lesen alle Bytes gelesen
werden, beim schreiben aber nur die nicht FF geschrieben werden müssen.
Genau Das steht in den beiden EEProm Hex-Files.
Bastler schrieb:> Zudem EEProm und FLASH sind zwei ganz verschiedene Dinge. EEProm scheint> auch kein Problem zu haben, außer daß beim Lesen alle Bytes gelesen> werden, beim schreiben aber nur die nicht FF geschrieben werden müssen.> Genau Das steht in den beiden EEProm Hex-Files.
Und als erfahrener Programmierer sollte man das auch wissen.
Marius Dege schrieb:> nein ist nicht abgeschrieben, sondern selbst erstellt - auf ATMega> ...> viel einfacher - unabhängig davon kann dir das aber auch egal sein; ich> habe nach Hilfe gebeten, dafür ist das Forum doch da.
Es ist mir auch egal, nur dieses erstellt hat mich gestört. Solche
Wörter in Zusammenhang mit solchen Fragen sind mir ein Dorn im Auge.
Sag doch einfach, dass es beim MEGA funktioniert hat und es ist genug.
EDIT:
Und jetzt natürlich zum zweiten Mal - du hast es abgeschrieben ohne
überhaupt zu wissen, was da überhaupt vor sich geht.
Hi,
das mit den 4 Pages ist wie bereits von Marc Vesely festgestellt ein
Problem.
Damit habe ich nicht gerechnet; ist mir im nachhinein jetzt auch
aufgefallen.
Jetzt nochmal zu dir, Marc:
Ich weiß wo der Unterschied zwischen EEPROM und FLASH ist, EEPROM passt
ja auch. Und selbst wenn nicht wäre auch egal, ist softwareseitig
verriegelt, selbst wenn da falsche Werte auftauchen sollten.
Das Problem liegt beim Flash, hättest du gesagt ich habe das Datenblatt
vom Tiny nicht gelesen hättest du wohl recht gehabt; ich dachte, mir
reicht das Wissen vom Mega.
Ob du jetzt denkst ich weiß nicht was da vor sich geht und er ist
irgendwo abgeschrieben oder peng - ist mir egal; keine Lust mich hier
vor irgendwelchen Kindern rechtzufertigen; er ist bis auf ein paar
Kleinigkeiten selber geschrieben und selbst erstellt ;). Davon ab ist
das auch nur ein kleiner Teil von meinem Mega-Bootloader.
Ich weiß gar nicht, warum in fast allen Foren (wobei das hier wohl noch
das seriöseste ist) nicht einfach die Fragen beantwortet werden können.
Hättest du einfach:
"Tiny1634 löscht 4 Pages auf einmal, Mega168 aber nur eine. Daher die
ganzen FFs."
geschrieben hätte ich bescheid gewusst und das Problem wäre schon
erledigt gewesen. Den Rest bekomme ich dann schon selber hin, auch wenn
ich keine Ahnung habe und alles nur abschreibe - Gott hat halt nicht
viel Zeit für meine Fragen.
So und jetzt gehe ich auch nicht mehr weiter auf diesen Kinderkram ein -
der nächste der evlt. auch so ein Problem hat denkt sich auch wieder:
"Immer diese Foren...".
Marius Dege schrieb:> Hättest du einfach:>> "Tiny1634 löscht 4 Pages auf einmal, Mega168 aber nur eine. Daher die> ganzen FFs."> geschrieben hätte ich bescheid gewusst und das Problem wäre schon> erledigt gewesen.
Dann haben wir wohl beide ein Satz zuviel geschrieben ?
Ja stimmt schon, man muß sich nicht alles von Kindern vorsagen lassen,
was man selber viel besser weiß. Genau deshalb fragt man doch hier, oder
hab ich da was missverstanden?
Marius Dege schrieb:> Ich weiß wo der Unterschied zwischen EEPROM und FLASH ist, EEPROM passt> ja auch.
Und deshalb hast du es auch gepostet ?
Ausserdem hat dich Bastler auf Eeprom aufmerksam gemacht, nicht ich.
Bastler schrieb:> Ja stimmt schon, man muß sich nicht alles von Kindern vorsagen lassen,> was man selber viel besser weiß. Genau deshalb fragt man doch hier, oder> hab ich da was missverstanden?
Nein, passt schon, so habe ich es auch verstanden.
Marius Dege schrieb:> irgendwo abgeschrieben oder peng - ist mir egal; keine Lust mich hier> vor irgendwelchen Kindern rechtzufertigen; er ist bis auf ein paar> Kleinigkeiten selber geschrieben und selbst erstellt ;). Davon ab ist> das auch nur ein kleiner Teil von meinem Mega-Bootloader.
Hut ab.
Das muss dann aber ein Giga-Bootloader sein.
Marc Vesely schrieb:> Das muss dann aber ein Giga-Bootloader sein.
Nein Marc, nun les doch mal richtig, es ist ein TINY-Bootloader...
SCNR,
Marcus :D duck