Forum: Mikrocontroller und Digitale Elektronik ATmega32 + Bootloader


von Jan H. (janiiix3)


Angehängte Dateien:

Lesenswert?

Nabend!
Habe mal den Bootloader von der hier vorgestellten Seite versucht auf 
einen MEGA32 zu nutzen.

Bootloader geht auf den µC drauf und meldet sich auch wie im Tut. 
beschrieben und auch das senden der .hex die drauf soll, scheint zu 
klappen. Nur Bootet er dann nicht meine Anwendung, sondern fängt wieder 
mit dem Bootloader an.

Was könnte ich falsch gemacht haben?

von c-hater (Gast)


Lesenswert?

Jan H. schrieb:

> Habe mal den Bootloader von der hier vorgestellten Seite versucht auf
> einen MEGA32 zu nutzen.

Welchen Bootloader von welcher wo "hier" vorgestellten Seite?

Wie kann man so grenzenlos doof sein, um nicht zu erkennen, dass hier 
absolut unverzichtbare Angaben fehlen?

> Bootloader geht auf den µC drauf und meldet sich auch wie im Tut.
> beschrieben und auch das senden der .hex die drauf soll, scheint zu
> klappen. Nur Bootet er dann nicht meine Anwendung, sondern fängt wieder
> mit dem Bootloader an.
>
> Was könnte ich falsch gemacht haben?

Nunja: sehr vieles. Was genau, hängt allerdings wieder davon ab, um 
welchen verfickten Bootloader es nun genau geht...

Und wieder: Wie kann man so grenzenlos doof sein, um nicht zu erkennen, 
dass hier absolut unverzichtbare Angaben fehlen?

von Jan H. (janiiix3)


Lesenswert?

Es tut mir leid das ich so grenzenlos doof  bin. Ich endschuldige mich 
bei dir dafür.

Danke das du dafür so unendlich klug bist!
Hier der vergessene Link...

https://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung#Schritt_1_-_Konfiguration_der_Projekteinstellungen

Welche wichtigen Angaben fehlen denn?

von derjaeger (Gast)


Lesenswert?

>Und wieder: Wie kann man so grenzenlos doof sein, um nicht zu erkennen,
>dass hier absolut unverzichtbare Angaben fehlen?

Wie kann so faul sein kurz "mikrocontroller bootloader avr" in Google 
einzugeben und den ersten Link anzuklicken? Wow, hast dir ja eine Menge 
Arbeit erspart, dass er jetzt den Link nachträglich gepostet hat!

Wie wärs wenn vielleicht der ganze Inhalt hier hin kopiert wird, damit 
du erst gar nicht noch den Link öffnen musst?

Was für ein Umgangston hier herrscht.

von Jan H. (janiiix3)


Lesenswert?

derjaeger schrieb:
>>Und wieder: Wie kann man so grenzenlos doof sein, um nicht zu erkennen,
>>dass hier absolut unverzichtbare Angaben fehlen?
>
> Wie kann so faul sein kurz "mikrocontroller bootloader avr" in Google
> einzugeben und den ersten Link anzuklicken? Wow, hast dir ja eine Menge
> Arbeit erspart, dass er jetzt den Link nachträglich gepostet hat!
>
> Wie wärs wenn vielleicht der ganze Inhalt hier hin kopiert wird, damit
> du erst gar nicht noch den Link öffnen musst?
>
> Was für ein Umgangston hier herrscht.

Wozu gibt es links? Wollt ihr jetzt hier den Post kritisieren oder 
helfen?

von c-hater (Gast)


Lesenswert?

derjaeger schrieb:

> Wie kann so faul sein kurz "mikrocontroller bootloader avr" in Google
> einzugeben und den ersten Link anzuklicken?

Und das ist dann ganz sicher genau der Bootloader, den der TO gemeint 
hat? Woher willst du das denn so genau wissen?

Es gibt Tausende von AVR-Bootloadern in sicher zehntausenden möglicher 
Konfigurationsvarianten.

Wer eine Frage zu einem hat, muss schon angeben, welchen genau er meint. 
Und in vielen Fällen darüber hinaus, wie genau er konfiguriert ist.

Nur absolute Vollidioten kann es überraschen, dass das nötig ist...

> Was für ein Umgangston hier herrscht.

So what? Fakten zählen, und natürlich das Ergebnis, was aber nur auf 
Grundlage von Fakten erzielt werden kann.

Alles andere ist Wattebällchen-Bullshit, der absolut niemandem nützt. 
Totale Entropie. Rauschen. Also das Schlimmste, was es gibt, wenn 
Informationsübermittlung das Ziel ist.

von Es_ist_Obst_Im_Haus (Gast)


Lesenswert?

Moin,
Kollege c-hater, halt mal den Ball flach.

In Anbetracht dass es für den AVR hier nur ein (oder hab ich noch ein 
zweites in Erinnerung?) Tutorial für einen Bootloader gibt, und seine 
Fragestellung

> [...] Bootloader geht auf den µC drauf und meldet sich [...]
Kapitel 5, Bootloader Tutorial

> [...] senden der .hex [...]
Kapitel 7, Bootloader Tutorial

sogar Hinweise auf seine bereits vollzogenen Schritte gibt,
ist es wohl verzeihbar dass er den Link vergaß.

Man sollte meinen dass man, wenn man auf der gleichen Seite Fragen zum 
Inhalt der Seite stellt, die Leute über ihre eigenen Tutorials bescheid 
wissen.

Und ja, du hast Recht. Ein Link hat trotzdessen gefehlt. Aber das geht 
"verficktnochmal" auf freundlich. Nicht jeder ist gleich ein Schlau² wie 
du.

Argh, solche Leute liebe ich.
Grüße
pelzfrucht

von derjaeger (Gast)


Lesenswert?

>In Anbetracht dass es für den AVR hier nur ein (oder hab ich noch ein
>zweites in Erinnerung?)

Scheint mehrere zugeben:
https://www.mikrocontroller.net/articles/AVR-Bootloader_mit_Verschl%C3%BCsselung_von_Hagen_Re

https://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_Dannegger/Tutorial_ATtiny13

Aber die Fragestellung war schon so formuliert, als wäre der 
Threadersteller ein Anfänger im Thema Bootloader, daher ist es am 
logischten anzunehmen, dass der "einfache Bootloader" gemeint war.

von Jan H. (janiiix3)


Lesenswert?

derjaeger schrieb:
>>In Anbetracht dass es für den AVR hier nur ein (oder hab ich noch ein
>>zweites in Erinnerung?)
>
> Scheint mehrere zugeben:
> 
https://www.mikrocontroller.net/articles/AVR-Bootloader_mit_Verschl%C3%BCsselung_von_Hagen_Re
>
> 
https://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_Dannegger/Tutorial_ATtiny13
>
> Aber die Fragestellung war schon so formuliert, als wäre der
> Threadersteller ein Anfänger im Thema Bootloader, daher ist es am
> logischten anzunehmen, dass der "einfache Bootloader" gemeint war.

Wenn du ein bisschen Ahnung von der Sprache C hättet, wusstest du direkt 
das nicht der einfache Bootloader gemeint ist. Der kann soweit ich das 
lese, den Flash nicht beschreiben. Also erstmal nachdenken, bevor man 
sich hier äußert.

von Einer K. (Gast)


Lesenswert?

c-hater schrieb:
> Alles andere ist Wattebällchen-Bullshit, der absolut niemandem nützt.
> Totale Entropie. Rauschen. Also das Schlimmste, was es gibt, wenn
> Informationsübermittlung das Ziel ist.
Schwachsinn!

Dein Verhalten ist mit nichts zu rechtfertigen.
Es ist antisozial.


Merksatz:
> In einem guten Wort ist für drei Winter Wärme,
> ein böses Wort verletzt wie sechs Monate Frost.

von Jan H. (janiiix3)


Angehängte Dateien:

Lesenswert?

Hier mal ein Screenshot vom Terminal. Nach .hex Übertragung, startet der 
Bootloader wieder anstatt meine Applikation.

: Bearbeitet durch User
von Bastian W. (jackfrost)


Lesenswert?

Hi,

Kannst du den Flash mit einem Programmer auslesen ? Wenn ja schau ob der 
Teil ab 0x0000 mit dem deines Programmes übereinstimmt oder ob da nur 
0xFF steht

Gruß JackFrost

von Jan H. (janiiix3)


Lesenswert?

Bastian W. schrieb:
> Hi,
>
> Kannst du den Flash mit einem Programmer auslesen ? Wenn ja schau ob der
> Teil ab 0x0000 mit dem deines Programmes übereinstimmt oder ob da nur
> 0xFF steht
>
> Gruß JackFrost

Moin.

Ab Adresse 0x0000 steht genau das gleiche wie in der Bootloader.hex
Das heißt ja im Endeffekt das er den Flash nicht beschreibt?

von Bastian W. (jackfrost)


Lesenswert?

Hast du den den "Start" deines Biotloaders auf die Bootloader Adresse 
gestellt so das bei dem Hex File des Bootloaders das nicht mit 0x0000 
anfängt ?

Häng mal das Hexfile deines Bootloaders hier an

Gruß JackFrost

von Jan H. (janiiix3)


Lesenswert?

Habe ich gemacht. Bloß ich weiß nicht ob ich das mit AVR Studio 7 so 
richtig gemacht habe.

Bootloader.hex
1
:100000000C9431000C944E000C944E000C944E0055
2
:100010000C944E000C944E000C944E000C944E0028
3
:100020000C944E000C944E000C944E000C944E0018
4
:100030000C944E000C94B5030C94E1030C944E0008
5
:100040000C944E000C944E000C944E000C944E00F8
6
:100050000C944E007B018901A901DF014302F802E3
7
:10006000300311241FBECFE5D8E0DEBFCDBF10E0C6
8
:10007000A0E6B0E0E4ECF8E002C005900D92A03EEE
9
:10008000B107D9F721E0A0EEB0E001C01D92A53282
10
:10009000B207E1F70E94F5000C9460040C94000094
11
:1000A000FA01DC0102C005900D9221503040D8F7D2
12
:1000B0000895662351F1FC016150462F50E04F5FD7
13
:1000C0005F4F480F591F80E090E0319120ED230FE2
14
:1000D0002A3078F02FEB230F263018F429EC230F69
15
:1000E00008C02FE9230F263018F429EA230F01C096
16
:1000F000232F82959295907F9827807F9827820F53
17
:10010000911DE417F50709F7089580E090E0089540
18
:10011000CF92DF92EF92FF92CF93DF936B017C013E
19
:100120006FB7F894E199FECFC60123E0F601209362
20
:100130005700E89507B600FCFDCFEA01C058DF4F35
21
:10014000DA0131E0FC01E41BF50BAF012C91FA015F
22
:10015000EA0FFB1F11968C91119790E0982F88273A
23
:10016000820F911D0C0130935700E89511241296CF
24
:10017000AC17BD0759F785E0F60180935700E89565
25
:1001800007B600FCFDCF81E180935700E8956FBF73
26
:10019000DF91CF91FF90EF90DF90CF900895CF92B5
27
:1001A000DF92EF92FF92CF93DF936B017C01EA0124
28
:1001B00080E690E00E9444042FEF81EE94E021500D
29
:1001C00080409040E1F700C00000AE01C701B601D9
30
:1001D0000E9488008FEF9FEF99838883DF91CF91F2
31
:1001E000FF90EF90DF90CF9008952F923F924F9223
32
:1001F0005F926F927F928F929F92AF92BF92CF92B7
33
:10020000DF92EF92FF920F931F93CF93DF93CDB7BF
34
:10021000DEB7C159D1090FB6F894DEBF0FBECDBF0E
35
:10022000FE01EF57FF4F85E0DF011D928A95E9F748
36
:1002300040E850E06FEF70E0CE0101960E94590453
37
:1002400085B7982F916095BF826085BF87E690E063
38
:100250000E940604789484E690E00E944404BFEF74
39
:10026000E7EAF1E6B150E040F040E1F700C00000FD
40
:10027000D12C912C612C00E088248394E12C10E097
41
:10028000412C512C212C312CC657DF4F188219825A
42
:100290001A821B82CA58D040C257DF4F1882198277
43
:1002A0001A821B82CE58D040CA57DF4F188219825B
44
:1002B0001A821B82C658D040FF24F394C12C0F2E03
45
:1002C000F1E8AF2EB12CF02DAC0EBD1E22E0A20E37
46
:1002D000B11C0E941A0490FDE2C1113009F0C4C1A2
47
:1002E0004E2D50E04730510508F0D9C1FA01E65DC6
48
:1002F000FF4F0C9453048A3309F003C283E10E9438
49
:10030000330481E10E9433040C2DEF2C212C312C7D
50
:10031000F8C191E0900FE1E8F0E0EC0FFD1FE00F75
51
:10032000F11D8083923009F0E1C183E10E94330422
52
:1003300062E0CE018F579F4F0E945900682E280E11
53
:10034000311C81E10E9433040C2D6894EE24E1F805
54
:10035000D8C191E0900FE1E8F0E0EC0FFD1FE00F55
55
:10036000F11D8083943009F0C3C183E10E943304FE
56
:1003700064E0CE018F579F4F0E945900C257DF4F54
57
:10038000288139814A815B81CE58D040280F391F9E
58
:10039000411D511DCA57DF4F288339834A835B8330
59
:1003A000C658D040220E311C230E311C81E10E9420
60
:1003B00033040C2D0F2EF3E0EF2EF02DA2C191E0AF
61
:1003C000900FE1E8F0E0EC0FFD1FE00FF11D8083DE
62
:1003D000923009F08FC183E10E94330462E0CE01C4
63
:1003E0008F579F4F0E945900D82E9927280E391EEB
64
:1003F0008130910591F128F08230910511F0049738
65
:1004000041F581104FC1CA57DF4F88819981AA8178
66
:10041000BB81C658D0408078C657DF4F28813981CC
67
:100420004A815B81CA58D040281739074A075B07C1
68
:10043000C9F0AE014F5F5F4FC657DF4F68817981CA
69
:100440008A819B81CA58D0400E94CF00412C512CF8
70
:1004500029C16894EE24E2F810C00F2EF5E0EF2ECB
71
:10046000F02D0BC0C657DF4F88839983AA83BB83C7
72
:10047000CA58D0406894EE24E2F881E10E94330427
73
:10048000912C0C2D3EC191E0900FE1E8F0E0EC0FD3
74
:10049000FD1FE00FF11D808332E0D31609F442C046
75
:1004A00044E0D41609F43EC0D110F8C0923009F0EF
76
:1004B00023C183E10E9433048EE20E94330462E090
77
:1004C000CE018F579F4F0E945900E1E0F0E0EC0F02
78
:1004D000FD1FE40DF51D8083280E311C5FEF451ACA
79
:1004E000550A9394691005C0912C0F2EF5E0EF2E5C
80
:1004F000F02D80E84816510481F4AE014F5F5F4F44
81
:10050000C657DF4F688179818A819B81CA58D04064
82
:100510000E94CF008F2C412C512C81E10E9433048A
83
:100520000C2DEFC0943009F0E9C083E10E94330440
84
:100530008AE40E943304AE014F5F5F4FC657DF4F1E
85
:10054000688179818A819B81CA58D0400E94CF00FE
86
:1005500092E0D91621F0A4E0DA16E1F02EC064E0B2
87
:10056000CE018F579F4F0E945900A0E0B0E09C0140
88
:10057000AD01689413F8220F331F441F551F1694C2
89
:10058000D1F7C257DF4F288339834A835B83CE5824
90
:10059000D04013C064E0CE018F579F4F0E94590096
91
:1005A000A0E0B0E0AC0133272227C257DF4F2883F9
92
:1005B00039834A835B83CE58D04062E0CE018F57A7
93
:1005C0009F4F0E945900182F62E0C5010E945900F8
94
:1005D000212F30E0280F311D220E331E912C0C2DBF
95
:1005E0008F2C0F2EF5E0EF2EF02D412C512C89C0D1
96
:1005F00077247394700EE1E8F0E0EC0FFD1FE00F3C
97
:10060000F11D808332E073127BC083E10E943304CA
98
:1006100062E0CE018F579F4F0E945900280E311C77
99
:10062000332441E0D4120EC0AE014F5F5F4FC65776
100
:10063000DF4F688179818A819B81CA58D0400E94AE
101
:10064000CF001C2D2114310429F00F2EF6E0EF2EDF
102
:10065000F02D01C0EC2C81E10E943304072D1FC056
103
:1006600083E20E9433044DC09C01332720373105BB
104
:1006700021F02137310531F00AC08AE890E00E946C
105
:1006800044043FC088EB90E00E9444043CC00E94B8
106
:1006900033048DED90E00E94440401C0092F111134
107
:1006A00018CE31C0CA57DF4F288139814A815B811A
108
:1006B000C658D0402078C657DF4F288339834A83F5
109
:1006C0005B83CA58D04020E830E0C657DF4F4881EE
110
:1006D00059816A817B81CA58D040CE0101960E941F
111
:1006E00050008C2C6894EE24E2F8C7CE092F09C084
112
:1006F000092F07C0092F05C0092F03C0092F01C00A
113
:10070000072D1F2DE6CD83ED90E00E9444045FEF9E
114
:1007100083ED90E3515080409040E1F700C000002D
115
:1007200085B7982F916095BF8D7F85BFE0E0F0E0A1
116
:10073000099580E090E0CF56DF4F0FB6F894DEBF0A
117
:100740000FBECDBFDF91CF911F910F91FF90EF9022
118
:10075000DF90CF90BF90AF909F908F907F906F90E1
119
:100760005F904F903F902F9008951F920F920FB679
120
:100770000F9211242F938F939F93EF93FF938BB13D
121
:100780002CB18871E091E200EF5FEF719091E10090
122
:10079000E91739F0E093E200F0E0EB51FF4F2083DE
123
:1007A00001C082E09091E000892B8093E000FF91EE
124
:1007B000EF919F918F912F910F900FBE0F901F90EF
125
:1007C00018951F920F920FB60F9211248F939F933B
126
:1007D000EF93FF939091E4008091E300981761F00C
127
:1007E000E091E300EF5FEF71E093E300F0E0EB5F97
128
:1007F000FE4F80818CB901C05598FF91EF919F9178
129
:100800008F910F900FBE0F901F9018951092E400DB
130
:100810001092E3001092E2001092E10099231CF480
131
:1008200022E02BB99F7790BD89B988E98AB986E81B
132
:1008300080BD08959091E2008091E100981781F0C9
133
:10084000E091E100EF5FEF71E093E100F0E0EB5148
134
:10085000FF4F80819091E0001092E00090E00895B9
135
:1008600080E091E008952091E4002F5F2F71909136
136
:10087000E3002917E1F3E22FF0E0EB5FFE4F808306
137
:100880002093E400559A0895CF93DF93EC0188817B
138
:10089000882331F021960E94330489918111FBCF86
139
:1008A000DF91CF910895EE0FFF1F0590F491E02D99
140
:1008B0000994DC0101C06D9341505040E0F7089568
141
:0408C000F894FFCFDA
142
:1008C400500A0D0048616C6C6F206869657220697C
143
:1008D40073742064657220656368746520426F6F69
144
:1008E400746C6F616465720A0D004B6F7069657298
145
:1008F4006520646965204865782D446174656920C4
146
:10090400756E642066FC6765207369652068696597
147
:10091400722065696E0A0D005665726C61737365A9
148
:100924002064656E20426F6F746C6F616465722120
149
:100934000A0D00526573657420415652210A0D0058
150
:00000001FF

: Bearbeitet durch User
von stromverdichter (Gast)


Lesenswert?

Hallo Jan,
Schau dir doch den Flash-Bereich an, ob da etwas reingeschrieben wurde. 
Was hast du denn da reingeschoben?
Das ist doch eine wunderbare Gelegenheit, den Debugger kennenzulernen?
Ich würde erst mal den Controller komplett löschen, dann den Bootloader 
aufspielen, dann Flash anschauen, dann Programm einspielen, dann nochmal 
Flash anschauen. Wenn sich da nix tut, musst du den Schritt des 
Schreibens nochmal prüfen. Die Routine dafür wird ja wohl aufgerufen, 
wie die Bildschirmausgabe zeigt. Das Programm, das du da reinschiebst 
ist auch lauffähig? Wie genau überträgst du die Hex-Datei? Woher 
bekommst du die? Welchen Controller verwendest du genau?
Du kannst eine Teraterm-Session auch loggen und hier anhängen.

von Jan H. (janiiix3)


Angehängte Dateien:

Lesenswert?

Ist das denn so richtig eingestellt?

Beitrag #5140490 wurde vom Autor gelöscht.
von Jan H. (janiiix3)


Lesenswert?

stromverdichter schrieb:
> Hallo Jan,
> Schau dir doch den Flash-Bereich an, ob da etwas reingeschrieben wurde.
> Was hast du denn da reingeschoben?
> Das ist doch eine wunderbare Gelegenheit, den Debugger kennenzulernen?
> Ich würde erst mal den Controller komplett löschen, dann den Bootloader
> aufspielen, dann Flash anschauen, dann Programm einspielen, dann nochmal
> Flash anschauen. Wenn sich da nix tut, musst du den Schritt des
> Schreibens nochmal prüfen. Die Routine dafür wird ja wohl aufgerufen,
> wie die Bildschirmausgabe zeigt. Das Programm, das du da reinschiebst
> ist auch lauffähig? Wie genau überträgst du die Hex-Datei? Woher
> bekommst du die? Welchen Controller verwendest du genau?
> Du kannst eine Teraterm-Session auch loggen und hier anhängen.

Ich habe den Bootloader einmal nackig drauf geschoben und ausgelesen und 
einmal wieder gelöscht und das gleiche von vorne.
Dann habe ich meine Applikation drauf geschoben und  ausgelesen. Beide 
verglichen.. Beide gleich!

Das heißt, ich muss irgendwas bei dem Projekt falsch eingestellt haben? 
Die Bootloader Adresse?

von Stefan E. (sternst)


Lesenswert?

Jan H. schrieb:
> Ist das denn so richtig eingestellt?

Nein.
Unter "FLASH segment" ist dies einzutragen:
.text=0x3800

von Jan H. (janiiix3)


Lesenswert?

Okay...
Nun habe ich das getan nun kommt aber keine Meldung mehr vom Bootloader?

von Bilderrahmen (Gast)


Lesenswert?

Es_ist_Obst_Im_Haus schrieb:
> Moin,
> Kollege

Der ist kein Kollege. Der ist keiner Antwort würdig. Der gehört 
geschnitten und ausgegrenzt.

von Jan H. (janiiix3)


Lesenswert?

Setze ich die Adresse wieder auf .text=0x0000 meldet sich der Bootloader 
wieder. Das ist jetzt die .hex wenn ich ihn auf .text=0x3800 setze.
1
:107000000C9431380C944E380C944E380C944E3805
2
:107010000C944E380C944E380C944E380C944E38D8
3
:107020000C944E380C944E380C944E380C944E38C8
4
:107030000C944E380C94B73B0C94E33B0C944E38B4
5
:107040000C944E380C944E380C944E380C944E38A8
6
:107050000C944E387D398B39AB39E139453AFA3ADF
7
:10706000323B11241FBECFE5D8E0DEBFCDBF10E01C
8
:10707000A0E6B0E0E8ECF8E702C005900D92A23D72
9
:10708000B107D9F720E0A2EDB0E001C01D92A73F03
10
:10709000B207E1F70E94F5380C94623C0C9400387A
11
:1070A000FA01DC0102C005900D9221503040D8F762
12
:1070B0000895662351F1FC016150462F50E04F5F67
13
:1070C0005F4F480F591F80E090E0319120ED230F72
14
:1070D0002A3078F02FEB230F263018F429EC230FF9
15
:1070E00008C02FE9230F263018F429EA230F01C026
16
:1070F000232F82959295907F9827807F9827820FE3
17
:10710000911DE417F50709F7089580E090E00895D0
18
:10711000CF92DF92EF92FF92CF93DF936B017C01CE
19
:107120006FB7F894E199FECFC60123E0F6012093F2
20
:107130005700E89507B600FCFDCFEA01C058DF4FC5
21
:10714000DA0131E0FC01E41BF50BAF012C91FA01EF
22
:10715000EA0FFB1F11968C91119790E0982F8827CA
23
:10716000820F911D0C0130935700E895112412965F
24
:10717000AC17BD0759F785E0F60180935700E895F5
25
:1071800007B600FCFDCF81E180935700E8956FBF03
26
:10719000DF91CF91FF90EF90DF90CF900895CF9245
27
:1071A000DF92EF92FF92CF93DF936B017C01EA01B4
28
:1071B00080E690E00E94463C2FEF81EE94E0215063
29
:1071C00080409040E1F700C00000AE01C701B60169
30
:1071D0000E9488388FEF9FEF99838883DF91CF914A
31
:1071E000FF90EF90DF90CF9008952F923F924F92B3
32
:1071F0005F926F927F928F929F92AF92BF92CF9247
33
:10720000DF92EF92FF920F931F93CF93DF93CDB74F
34
:10721000DEB7C159D1090FB6F894DEBF0FBECDBF9E
35
:10722000BF9AC798FE01EF57FF4F85E0DF011D921F
36
:107230008A95E9F740E850E06FEF70E0CE010196E3
37
:107240000E945B3C85B7982F916095BF826085BF97
38
:1072500087E690E00E94083C789484E690E00E94E3
39
:10726000463CBFEFE9E6F8E1B150E040F040E1F71D
40
:1072700000C00000D12C912C612C00E08824839464
41
:10728000E12C10E0412C512C212C312CC657DF4F22
42
:10729000188219821A821B82CA58D040C257DF4F07
43
:1072A000188219821A821B82CE58D040CA57DF4FEB
44
:1072B000188219821A821B82C658D040FF24F39488
45
:1072C000C12C0F2EF1E8AF2EB12CF02DAC0EBD1E4F
46
:1072D00022E0A20EB11C0E941C3C90FDE2C11130C4
47
:1072E00009F0C4C14E2D50E04730510508F0D9C116
48
:1072F000FA01E65DF74C0C94553C8A3309F003C261
49
:1073000083E10E94353C81E10E94353C0C2DEF2C3D
50
:10731000212C312CF8C191E0900FE1E8F0E0EC0F66
51
:10732000FD1FE00FF11D8083923009F0E1C183E180
52
:107330000E94353C62E0CE018F579F4F0E94593822
53
:10734000682E280E311C81E10E94353C0C2D68947A
54
:10735000EE24E1F8D8C191E0900FE1E8F0E0EC0F05
55
:10736000FD1FE00FF11D8083943009F0C3C183E15C
56
:107370000E94353C64E0CE018F579F4F0E945938E0
57
:10738000C257DF4F288139814A815B81CE58D04076
58
:10739000280F391F411D511DCA57DF4F28833983DC
59
:1073A0004A835B83C658D040220E311C230E311C09
60
:1073B00081E10E94353C0C2D0F2EF3E0EF2EF02DD5
61
:1073C000A2C191E0900FE1E8F0E0EC0FFD1FE00FAB
62
:1073D000F11D8083923009F08FC183E10E94353C1A
63
:1073E00062E0CE018F579F4F0E945938D82E9927BF
64
:1073F000280E391E8130910591F128F082309105D7
65
:1074000011F0049741F581104FC1CA57DF4F8881B1
66
:107410009981AA81BB81C658D0408078C657DF4F7A
67
:10742000288139814A815B81CA58D04028173907A1
68
:107430004A075B07C9F0AE014F5F5F4FC657DF4F8A
69
:10744000688179818A819B81CA58D0400E94CF3857
70
:10745000412C512C29C16894EE24E2F810C00F2E63
71
:10746000F5E0EF2EF02D0BC0C657DF4F88839983D0
72
:10747000AA83BB83CA58D0406894EE24E2F881E125
73
:107480000E94353C912C0C2D3EC191E0900FE1E81B
74
:10749000F0E0EC0FFD1FE00FF11D808332E0D3160A
75
:1074A00009F442C044E0D41609F43EC0D110F8C03B
76
:1074B000923009F023C183E10E94353C8EE20E94A4
77
:1074C000353C62E0CE018F579F4F0E945938E1E072
78
:1074D000F0E0EC0FFD1FE40DF51D8083280E311C3C
79
:1074E0005FEF451A550A9394691005C0912C0F2E31
80
:1074F000F5E0EF2EF02D80E84816510481F4AE013E
81
:107500004F5F5F4FC657DF4F688179818A819B81CA
82
:10751000CA58D0400E94CF388F2C412C512C81E189
83
:107520000E94353C0C2DEFC0943009F0E9C083E196
84
:107530000E94353C8AE40E94353CAE014F5F5F4FAC
85
:10754000C657DF4F688179818A819B81CA58D040B4
86
:107550000E94CF3892E0D91621F0A4E0DA16E1F0CB
87
:107560002EC064E0CE018F579F4F0E945938A0E093
88
:10757000B0E09C01AD01689413F8220F331F441F43
89
:10758000551F1694D1F7C257DF4F288339834A839A
90
:107590005B83CE58D04013C064E0CE018F579F4F1D
91
:1075A0000E945938A0E0B0E0AC0133272227C2572F
92
:1075B000DF4F288339834A835B83CE58D04062E013
93
:1075C000CE018F579F4F0E945938182F62E0C50196
94
:1075D0000E945938212F30E0280F311D220E331E12
95
:1075E000912C0C2D8F2C0F2EF5E0EF2EF02D412C31
96
:1075F000512C89C077247394700EE1E8F0E0EC0F11
97
:10760000FD1FE00FF11D808332E073127BC083E128
98
:107610000E94353C62E0CE018F579F4F0E9459383F
99
:10762000280E311C332441E0D4120EC0AE014F5F4E
100
:107630005F4FC657DF4F688179818A819B81CA5825
101
:10764000D0400E94CF381C2D2114310429F00F2E78
102
:10765000F6E0EF2EF02D01C0EC2C81E10E94353CCC
103
:10766000072D1FC083E20E94353C4DC09C0133278B
104
:107670002037310521F02137310531F00AC08BE781
105
:1076800090E00E94463C3FC089EA90E00E94463C60
106
:107690003CC00E94353C8EEC90E00E94463C01C00C
107
:1076A000092F111118CE31C0CA57DF4F28813981F7
108
:1076B0004A815B81C658D0402078C657DF4F288367
109
:1076C00039834A835B83CA58D04020E830E0C657EC
110
:1076D000DF4F488159816A817B81CA58D040CE01F1
111
:1076E00001960E9450388C2C6894EE24E2F8C7CEA4
112
:1076F000092F09C0092F07C0092F05C0092F03C092
113
:10770000092F01C0072D1F2DE6CD84EC90E00E94CB
114
:10771000463C5FEF83ED90E3515080409040E1F7AD
115
:1077200000C0000085B7982F916095BF8D7F85BF01
116
:10773000E0E0F0E0099580E090E0CF56DF4F0FB633
117
:10774000F894DEBF0FBECDBFDF91CF911F910F9197
118
:10775000FF90EF90DF90CF90BF90AF909F908F9071
119
:107760007F906F905F904F903F902F9008951F9261
120
:107770000F920FB60F9211242F938F939F93EF9335
121
:10778000FF938BB12CB18871E091D400EF5FEF7063
122
:107790009091D300E91739F0E093D400F0E0E9527A
123
:1077A000FF4F208301C082E09091D200892B80930B
124
:1077B000D200FF91EF919F918F912F910F900FBE6B
125
:1077C0000F901F9018951F920F920FB60F921124D1
126
:1077D0008F939F93EF93FF939091D6008091D50064
127
:1077E000981761F0E091D500EF5FEF70E093D5005E
128
:1077F000F0E0E951FF4F80818CB901C05598FF91AD
129
:10780000EF919F918F910F900FBE0F901F90189541
130
:107810001092D6001092D5001092D4001092D3008E
131
:1078200099231CF422E02BB99F7790BD89B988E990
132
:107830008AB986E880BD08959091D4008091D300E4
133
:10784000981781F0E091D300EF5FEF70E093D300E1
134
:10785000F0E0E952FF4F80819091D2001092D20067
135
:1078600090E0089580E091E008952091D6002F5F88
136
:107870002F709091D5002917E1F3E22FF0E0E95144
137
:10788000FF4F80832093D600559A0895CF93DF93BE
138
:10789000EC018881882331F021960E94353C899142
139
:1078A0008111FBCFDF91CF910895EE0FFF1F05905F
140
:1078B000F491E02D0994DC0101C06D9341505040DA
141
:0878C000E0F70895F894FFCFF2
142
:1078C800500A0D004A2E4820456C6563202D204241
143
:1078D8006F6F7479202843290A0D004B6F70696512
144
:1078E800726520646965204865782D44617465690E
145
:1078F80020756E642066FC67652073696520686979
146
:1079080065722065696E0A0D005665726C61737345
147
:10791800652064656E20426F6F746C6F6164657278
148
:10792800210A0D00526573657420415652210A0DD3
149
:0279380000004D
150
:040000030000700089
151
:00000001FF

von Jan H. (janiiix3)


Lesenswert?

Woher weiß der µC eigentlich das er bei Adresse 0x3800 los legen soll?

von Stefan E. (sternst)


Lesenswert?

Jan H. schrieb:
> Woher weiß der µC eigentlich das er bei Adresse 0x3800 los legen soll?

BOOTRST + BOOTSZ

von Jan H. (janiiix3)


Lesenswert?

Tut er aber nicht!

von Einer K. (Gast)


Lesenswert?

Jan H. schrieb:
> Tut er aber nicht!


Der logische Schluss:
Dann steht da das falsche drin!

von Felix F. (wiesel8)


Lesenswert?

Wenn auf dem MC nur der Bootloader ist, sollte er immer funktionieren, 
da die FFs ab 0x00 übersprungen werden, bis ein gültiger Opcode (der 
Bootloader) kommt. Hier scheint noch einiges mehr falsch zu sein.

mfg

von Adam P. (adamap)


Lesenswert?

Jan H. schrieb:
> Es tut mir leid das ich so grenzenlos doof  bin. Ich endschuldige mich
> bei dir dafür.

DU brauchst dich bestimmt nicht entschuldigen!

Wozu gibt es sonst dieses Forum, wenn Nutzer nicht mal eine Frage 
stellen dürfen?
Jeder von uns fängt "klein" an oder bearbeitet vllt. zum ersten mal ein 
neues Themengebiet, das rechtfertigt noch lange nicht die Reaktion von
"c-hater".

Einfach nur lächerlich :-/

von Es_ist_obst_im_haus (Gast)


Lesenswert?

Jan H. schrieb:
> Wenn du ein bisschen Ahnung [...]

Wenn du ein bisschen Ahnung hättest, wüsstest du dass @derjaeger mit 
"einfach" den vereinfachten Bootloader

https://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung

gemeint hat. Dieser ist insofern "einfach" als das er eine wesentlich 
geringere Komplexität als folgendne Bootloader aufweist:

https://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_Dannegger/Tutorial_ATtiny13

https://www.mikrocontroller.net/articles/AVR-Bootloader_mit_Verschl%C3%BCsselung_von_Hagen_Re

von Es_ist_obst_im_haus (Gast)


Lesenswert?

Es_ist_obst_im_haus schrieb:
> Jan H. schrieb:
>> Wenn du ein bisschen Ahnung [...]
>
> Wenn du ein bisschen Ahnung hättest, wüsstest du dass @derjaeger mit
> "einfach" den vereinfachten Bootloader
>
> 
https://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung
>
> gemeint hat. Dieser ist insofern "einfach" als das er eine wesentlich
> geringere Komplexität als folgendne Bootloader aufweist:
>
> 
https://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_Dannegger/Tutorial_ATtiny13
>
> 
https://www.mikrocontroller.net/articles/AVR-Bootloader_mit_Verschl%C3%BCsselung_von_Hagen_Re

Rückzug!

Hab vergessen das du der TO bist. Verzeihung ;)

Aber du musst verstehen das dich jemand in Schutz genommen hat und 
dadrauf hinweisen wollte das du den einfachen Bootloader meinst. Aber 
nicht im Sinne von dem Test Bootloader in dem von dir gemeinten Tutorial 
sondern dein Tutorial als ganzes. Der "nicht-einfache" wäre dann der mit 
Verschlüsselung etc...
Und ich hab jetzt gedacht du wärst eine weitere Nervensäge die hier den 
TO und die, die hinter seiner Fragestellung stehen versucht anzugreifen.

Aber was solls.

Grüße

von Bastian W. (jackfrost)


Angehängte Dateien:

Lesenswert?

Hi,

das .text=0x3800 ist wichtig damit der Bootloader auch da steht wo er 
hingehört.

Lösche den Atmega32 ganz,flashe dann denn Bootloader mit der richtigen 
.text Einstellung und lese ihn dann mal aus. Das Ergebnis sollte so in 
etwa wie in der angehängte Hex sein. 0x0000 bis  0x6FFF muss mit 0xFF 
"beschrieben" sein.

Gruß JackFrost

von Jan H. (janiiix3)


Lesenswert?

Habe es lösen können. Es lag an den MCUCR Register. Das muss geändert 
werden. Die Bits stehen dort leider nicht drin. Danke trotzdem.

von Jan H. (janiiix3)


Lesenswert?

Eine Frage habe ich dennoch.

Wenn ich jetzt in meiner Hauptapplikation den Bootloader ausführen 
möchte, ohne Reset drücken zu müssen, klappt das?

Habe es versucht mit einem Funktionszeiger, leider kommt immer ein 
casting Fehler.
1
void (*bootloader)(void) = 0x3800;

Diese Fehlermeldung kommt..
1
initialization makes pointer from integer without a cast

Was mache ich da falsch? Muss ich die Adresse noch mal casten? (void*) ?

von stromverdichter (Gast)


Lesenswert?

Steht dein Bootloader echt an Adresse 0x3800?
Das mit dem casten kannst du ja jetzt schön üben. Der Compiler sagt dir 
ja, wo du überall nicht richtig castest. Alternativ könntest du doch 
einen Reset auslösen, dann hast du keine Probleme mit fehlerhaften 
Interrupt-Einstellungen oder vergessenen Watchdogs.

von Jan H. (janiiix3)


Lesenswert?

stromverdichter schrieb:
> Steht dein Bootloader echt an Adresse 0x3800?
> Das mit dem casten kannst du ja jetzt schön üben. Der Compiler sagt dir
> ja, wo du überall nicht richtig castest. Alternativ könntest du doch
> einen Reset auslösen, dann hast du keine Probleme mit fehlerhaften
> Interrupt-Einstellungen oder vergessenen Watchdogs.

Wenn ich im Projekt vom Bootloader ".text=0x3800" einstelle, steht er 
doch an dieser Adresse oder nicht?

von Bastian W. (jackfrost)


Lesenswert?

Bei .text=0x3800 beginnt der Bootloader bei der Wordadresse 0x3800 was 
dann in der Datei die Byteadresse 0x7000 ist.

Gruß JackFrost

: Bearbeitet durch User
von Jan H. (janiiix3)


Lesenswert?

Bastian W. schrieb:
> Bei .text=0x3800 beginnt der Bootloader bei der Wordadresse 0x3800 was
> dann in der Datei die Byteadresse 0x7000 ist.
>
> Gruß JackFrost
1
void (*boot)(void) = (void*)0x7000;
2
boot();

Wenn ich versuche irgendwo hin zu springen, klappt das ganze Programm 
zusammen. Dann hilft nur ein Reset.

von Carl D. (jcw2)


Lesenswert?

Jan H. schrieb:
> Bastian W. schrieb:
>> Bei .text=0x3800 beginnt der Bootloader bei der Wordadresse 0x3800 was
>> dann in der Datei die Byteadresse 0x7000 ist.
>>
>> Gruß JackFrost
>
>
1
> void (*boot)(void) = (void*)0x7000;
2
> boot();
3
>
>
> Wenn ich versuche irgendwo hin zu springen, klappt das ganze Programm
> zusammen. Dann hilft nur ein Reset.

Naja, "boot()" läd einfach per ICALL das Z-Register in den PC, und das 
enthält 0x7000, was als Wortadresse interpretiert wird und "knapp" über 
32kb liegt.

von Bastian W. (jackfrost)


Lesenswert?

Für deinen Sprung in den Bootloader brauchst du die Wordadresse 0x3800.

Wenn du den Watchdog nutzt kannst du auch mit einem
1
 
2
3
While(1);

Einen Reset machen.

Wenn du von deinem Programm in den Bootloader über die Adresse springst 
ubd von dort dann wieder an 0x0000 haben deine Register nicht die Werte 
wie nach einem echten Reset.

Gruß JackFrost

von Jan H. (janiiix3)


Lesenswert?

Bastian W. schrieb:
> Wenn du von deinem Programm in den Bootloader über die Adresse springst
> ubd von dort dann wieder an 0x0000 haben deine Register nicht die Werte
> wie nach einem echten Reset.
>
> Gruß JackFrost

Kann man die Werte nicht sichern? Wahrscheinlich nicht oder?

von Bastian W. (jackfrost)


Lesenswert?

Bei einem echten Reset haben die Register die Standardwerte wie im 
Datenblatt. Nach dem Bootloader bzw. wenn du in den Bootloader springst 
haben die z.B die Register für die Ausgänge noch die Werte die sie im 
Program hatten. Da solltest du schauen ob das nicht zu einem Problem 
wird. Bei multiplexten LEDs kann das ein Problem werden.

Gruß JackFrost

von Jan H. (janiiix3)


Lesenswert?

Sobald ich den Funktionspointer im Quellcode habe, obwohl er noch nicht 
aufgerufen wird, funktioniert gar nichts mehr... Das kann ja wohl auch 
nicht sein, da muss was ganz anderes faul sein.

von Markus F. (mfro)


Lesenswert?

Jan H. schrieb:
> void (*boot)(void) = (void*)0x7000;

Das ist nicht das, was Du willst (auch wenn's nicht der Grund für dein 
Problem ist).

Du castest 0x7000 als Zeiger auf ein void, willst aber einen Zeiger auf 
eine void()-Funktion.
Das geht nur zufällig weil, void-Zeiger zuweisungskompatibel zu allen 
anderen Zeigertypen sind. Richtig wäre:
1
void (*boot)() = (void (*)(void)) 0x7000;

oder - in Häppchen - möglicherweise etwas leichter verständlich:
1
typedef void void_func(void);
2
void_func *boot = (void_func *) 0x7000;

von Jan H. (janiiix3)


Lesenswert?

Wenn ih

Markus F. schrieb:
> Jan H. schrieb:
>> void (*boot)(void) = (void*)0x7000;
>
> Das ist nicht das, was Du willst (auch wenn's nicht der Grund für dein
> Problem ist).
>
> Du castest 0x7000 als Zeiger auf ein void, willst aber einen Zeiger auf
> eine void()-Funktion.
> Das geht nur zufällig weil, void-Zeiger zuweisungskompatibel zu allen
> anderen Zeigertypen sind. Richtig wäre:
> void (*boot)() = (void (*)(void)) 0x7000;
>
> oder - in Häppchen - möglicherweise etwas leichter verständlich:
> typedef void void_func(void);
> void_func *boot = (void_func *) 0x7000;

Wenn ich jetzt Adresse 0x3800 eintrage, springt er immer noch nicht zum 
Bootloader. Trage ich jedoch die Adresse 0x0000 ein, fängt er wieder von 
0x0000 an. Nur mein Grafikdisplay bleibt weiß.. Aber auch direkt beim 
starten.. Sobald diese Funktion mit im Spiel ist, arbeitet das Programm 
nicht mehr ganz wie es soll.. Obwohl ich es nur nach einem Tastendruck 
aufrufe..

von Marco H. (damarco)


Lesenswert?

Erstmal muss du nachschauen wie groß der Bootloader ist und wo dieser 
den Programm Code erwartet. Springt er irgend wo hin macht der 
vermutlich einen Reset wenn kein gültiger Programmcode vorhanden ist.

Dann ist das Linkerscript A: für den Bootloader und B: für den Code 
anzupassen. Doch Vorsicht bei B: meist wird der Code trotzdem bei 0x00 
geblinkt und der Bootloader schreibt diesen dann oberhalb hinein.

Das der Bootloader bei 0x3800 etw. gespeichert wird hat liegt daran das 
manchmal die Adressen gemappt werden. Der Bootloader liegt oberhalb des 
ProgrammSpeichers beim Starten wird dieser Teil auf 0x00 gemappt.

Schau in die Referenz vom Controller.

von Carl D. (jcw2)


Lesenswert?

> Nur mein Grafikdisplay bleibt weiß.

Eventuell funktioniert die Initialisierung des Displays nur nach 
Neueinschalten. Verhindert wird dies durch die oft verwirrenden Zugriffe 
auf das Display beim Initialisieren, die dazu da sind es aus jedem 
Zustand abzuholen.
Aber dazu müßte man mehr über Display und seine Ansteuersoftware wissen.

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.