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 ?
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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 ?
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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
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.