Forum: Mikrocontroller und Digitale Elektronik ATtiny Bootloader C füllt FF's in Flash


von MOBA 2. (Gast)


Angehängte Dateien:

Lesenswert?

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)

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
von Plagiatus (Gast)


Lesenswert?

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.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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.

von MOBA 2. (Gast)


Lesenswert?

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).

von Bastler (Gast)


Lesenswert?

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 ;-)

von Bastler (Gast)


Lesenswert?

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.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
von MOBA 2. (Gast)


Lesenswert?

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...".

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
von Bastler (Gast)


Lesenswert?

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?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.