Forum: Mikrocontroller und Digitale Elektronik Bootloader aus Tutorial nimmt Hex-File nicht korrekt an


von Ralf S. (durokh)


Lesenswert?

Hi zusammen,
ich habe mich heute durch das Bootloader Tutorial gearbeitet und stecke 
am letzten Schritt des ganzen Tutorials fest.
(hier der Link: 
www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anl 
eitung)

Die Verbindung über Putty steht, ich empfange auch die Nachrichten vom 
IC und auf meine Eingaben wird korrekt reagiert. Alle Tutorial Schritte 
zuvor haben funktioniert.

Wenn ich nun allerdings die HEX-File dort mit der rechten Maustaste 
hineinkopieren soll, erscheinen bei mir zunächst die im Tutorial 
beschriebenen Punkte, die Zeile aus Punkte wird aber nicht mit einem "p" 
beendet (was die erfolgreiche Übergabe der Zeile bedeutet, sondern es 
erscheinen danach nur noch "#".

Die HEX-File habe ich aus einer .txt Datei erstellt, dessen Endung ich 
geändert habe (also die letzte Endung ".txt" ist geändert, die in 
Windows ja je nach Einstellung verborgen wird --> ist also nicht der 
Fehler "filename.hex.txt).

Ich habe es auch mit HTerm versucht die File zu senden und erhalte die 
gleiche Rückmeldung.

Wenn ich Zeile für Zeile einzeln rein kopiere, erhalte ich zumindest 
nach der ersten Zeile ein "p", danach dann aber auch nicht mehr...

Woran kann es liegen?

Gruß,
Durokh

von Michael (Gast)


Lesenswert?

Ralf S. schrieb:
> Woran kann es liegen?
Sind sich dein Bootloader und dein Terminalprogramm über das 
Zeilenendezeichen einig?

von Ralf S. (durokh)


Lesenswert?

Hm,
also ich habe den Code aus dem Tutorial natürlich erstmal so übernommen, 
wie er da steht und habe eine HEX-File erstellt, die ebenfalls 
Copy-Paste den Text enthält. Hier mal exemplarisch:

:100000002CC046C045C044C043C042C041C040C0EF
:100010003FC03EC03DC03CC03BC03AC039C038C004
:1000200037C036C064C08FC033C032C031C030C0AA
:100030002FC02EC048696572206973742064617393
:1000400020416E77656E64756E677370726F67724C


Somit gehe ich davon aus, dass der das auch korrekt interpretiert.

Ich korrigiere allerdings meine Fehlerangabe etwas:
MAL kommt er über eine Zeile auch hinaus, ich erhalte also ein "p", 
danach bricht er irgendwo mittendrin ab...

von holger (Gast)


Lesenswert?

>Die HEX-File habe ich aus einer .txt Datei erstellt

Und was steht da drin?

von Ralf S. (durokh)


Lesenswert?

Aus dem Tutorial:


:100000002CC046C045C044C043C042C041C040C0EF
:100010003FC03EC03DC03CC03BC03AC039C038C004
:1000200037C036C064C08FC033C032C031C030C0AA
:100030002FC02EC048696572206973742064617393
:1000400020416E77656E64756E677370726F67724C
:10005000616D6D2E2E2E0D0A000011241FBECFEFF4
:10006000D4E0DEBFCDBF11E0A0E0B1E0EAE6F2E00F
:1000700002C005900D92A434B107D9F711E0A4E4B1
:10008000B1E001C01D92A938B107E1F702D0EBC081
:10009000B7CFEF92FF920F931F93CF93DF9383E33A
:1000A00090E07BD0789484E390E0D0D088ECE82E88
:1000B000F12C00E018E18BD0EC0190FDFCCF8236F2
:1000C00069F480E091E0B6D080E197E2F7013197E2
:1000D000F1F70197D9F7F8010995EDCF8CE191E09F
:1000E000A9D08C2F91D081E491E0A4D0E4CF1F92CD
:1000F0000F920FB60F9211242F938F939F93EF932C
:10010000FF939091C0002091C600E0918601EF5FBF
:10011000EF7180918701E81711F482E008C0892F00
:100120008871E0938601F0E0EC59FE4F20838093C4
:100130008801FF91EF919F918F912F910F900FBEAA
:100140000F901F9018951F920F920FB60F921124C7
:100150008F939F93EF93FF939091840180918501FA
:10016000981769F0E0918501EF5FEF71E0938501E9
:10017000F0E0EC5BFE4F80818093C60005C080916B
:10018000C1008F7D8093C100FF91EF919F918F916E
:100190000F900FBE0F901F9018959C011092840134
:1001A00010928501109286011092870197FF04C07A
:1001B00082E08093C0003F773093C5002093C40055
:1001C00088E98093C10086E08093C20008959091F1
:1001D000860180918701981719F420E031E012C060
:1001E000E0918701EF5FEF71E0938701F0E0EC5958
:1001F000FE4F308120918801922F80E0AC01430FA7
:10020000511D9A01C9010895282F909184019F5F83
:100210009F71809185019817E1F3E92FF0E0EC5B85
:10022000FE4F2083909384018091C100806280936F
:10023000C1000895CF93DF93EC0102C02196E4DF63
:1002400088818823D9F7DF91CF910895CF93DF93E9
:10025000EC0101C0D9DFFE01219684918823D1F7FA
:0A026000DF91CF910895F894FFCFCD
:10026A00537072696E6765207A756D20426F6F747C
:10027A006C6F616465722E2E2E0D0A00447520681B
:10028A0061737420666F6C67656E646573205A6566
:10029A00696368656E20676573656E6465743A2084
:0402AA00000A0D0039
:00000001FF

von holger (Gast)


Lesenswert?

>Aus dem Tutorial:

Ok. Und du benutzt natürlich einen Quarz damit die Baudrate
auch stimmt?

von Ralf S. (durokh)


Lesenswert?

Die Baudrate liegt bei 9600 und wird mit (laut Tutorial) 8 Mhz internem 
Oszillator verwendet.
Die Kommunikation funktioniert ja an sich. Ich erhalte Rückmeldung über 
den seriellen Port in Textform und erhalte darüber auch die Anweisung 
was zu tun ist. Nur beim Übertragen der HEX-Datei habe ich Probleme.

Normale serielle Kommunkation habe ich auch schon öfter aufgebaut etc 
und das müsste (meiner Ansicht nach) alles laufen.

Muss ich die hex-Date in irgend einem bestimmte Format erstellen? Also, 
kommt der irgendwie nicht mit dem Dateiformat zurecht (sprich, da ist 
irgendetwas in einem Header...)

Gruß,
Durokh

von Ralf S. (durokh)


Lesenswert?

Hat keiner eine Idee? :(

von amateur (Gast)


Lesenswert?

Ich kenne das Projekt nicht, aber übersetzt der Bootloader wirklich Hex 
in Bin?
Die Programme, die ich kenne fressen zwar alle .Hex, senden aber 
Binärdaten.

von Ralf S. (durokh)


Lesenswert?

Die main-File aus dem Tutorial übersetzt den empfangenen HEX-Code, 
soweit ich das verstanden habe.

Eine Vermutung, die ich derzeitig habe, ist, dass es mit der 
Flow-Control zusammenhängt. Die Funktioniert bei mir anscheinend nicht 
korrekt.

Wenn ich die Flow-Control an habe, klappt das Programm nicht, wie es 
soll, obwohl ich es in Putty /Hterm eingestellt habe.
Schalte ich es aus, funktioniert das Programm wie gewünscht, importiert 
aber nicht die HEX-Datei.

Oder es ist so, dass die Flow Control falsch funktioniert und das 
Empfangen der HEX-Datei nicht steuern...


In dem Tutorial ist übrigens die Rede davon, dass ich die Extended Fuses 
setzen soll -- wo kann ich die im AVR Studio 6 einstellen? Bei mir ist 
nur HIGH und LOW zu sehen. Vielleicht liegt es ja daran.

von c-hater (Gast)


Lesenswert?

Ralf S. schrieb:

> Eine Vermutung, die ich derzeitig habe, ist, dass es mit der
> Flow-Control zusammenhängt. Die Funktioniert bei mir anscheinend nicht
> korrekt.

Was ist es denn für eine Flußkontrolle, Hardware oder Software?

Wenn Hardware, dann muß es natürlich auch die entsprechenden Leitungen 
zwischen µC und PC geben, im Minimum also eine 5-adrige Verbindung. 
Zusätzlich ist dann PC-seitig (zumindest unter Windows) aber auch noch 
eine Verbindung zwischen DSR und DTR auf der PC-Seite nötig.

Und wenn Software, dann müssen natürlich PC-seitig genau die 
Steuerzeichen für XON/XOFF konfiguriert sein, die auch der µC verwendet.


>
> Wenn ich die Flow-Control an habe, klappt das Programm nicht, wie es
> soll, obwohl ich es in Putty /Hterm eingestellt habe.
> Schalte ich es aus, funktioniert das Programm wie gewünscht, importiert
> aber nicht die HEX-Datei.
>
> Oder es ist so, dass die Flow Control falsch funktioniert und das
> Empfangen der HEX-Datei nicht steuern...
>
>
> In dem Tutorial ist übrigens die Rede davon, dass ich die Extended Fuses
> setzen soll -- wo kann ich die im AVR Studio 6 einstellen? Bei mir ist
> nur HIGH und LOW zu sehen. Vielleicht liegt es ja daran.

von Ralf S. (durokh)


Lesenswert?

c-hater schrieb:
> Was ist es denn für eine Flußkontrolle, Hardware oder Software?
>
> Wenn Hardware, dann muß es natürlich auch die entsprechenden Leitungen
> zwischen µC und PC geben, im Minimum also eine 5-adrige Verbindung.
> Zusätzlich ist dann PC-seitig (zumindest unter Windows) aber auch noch
> eine Verbindung zwischen DSR und DTR auf der PC-Seite nötig.
>
> Und wenn Software, dann müssen natürlich PC-seitig genau die
> Steuerzeichen für XON/XOFF konfiguriert sein, die auch der µC verwendet.



Wenn ich das richtig überblick, läuft die Flußkontroller über Software 
(XON/XOFF).

Ich kann mich ja leider nur auf das Tutorial berufen. Dort steht, dass 
in Putty (HTerm bietet keine direkte Auswahl an, nur CTS Flowcontrol) 
die Flusskontrolle auf XON/XOFF gestellt werden soll.
Im Code des Tutorials ist ebenfalls XON/XOFF als Flusskontrolle 
eingestellt.

Muss für die Flusskontrolle, wenn sie Softwareseitig läuft, noch eine 
zusätzliche Verbindung vorhanden sein? Mein Schaltplan sieht aus wie 
hier:

http://www.mikrocontroller.net/wikifiles/d/d8/Max232_korr.png

von Jens (Gast)


Lesenswert?

Du kannst in HTerm oder Putty (sogar das Windows Terminal) eine 
Wartezeit angeben, die der Sender wartet, bis er das nächste Zeichen 
sendet. Stell das mal auf 1ms-10ms ein und versuch das neu. Jetzt werden 
dann alle 10ms ein neues Zeichen gesendet.
Wenn es jetzt funktioniert, liegt es sicher an deiner Flusskontrolle.
(Achja, bei dem Test schaltest du die Flusskontrolle aus)

Gruß, Jens

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.