Der "Bootloader Thread"

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Der "Bootloader Thread"

Beitrag von IPTRAIN » So 5. Mai 2013, 13:56

Wie man (neue) Programmversionen in den permanenten Speicher des ATMega 2561 lädt ("flashed") - dies beschreibt dieser "Bootloader Thread"!

Fortsetzung folgt!

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Der "Bootloader Thread"

Beitrag von IPTRAIN » So 5. Mai 2013, 15:42

Den Bootloader - Anschluss am Mega 2561 Board kennen wir schon aus diesem Thread http://www.gartenbahntechnik.de/forum/v ... ?f=32&t=45.

Es ist die UART-Schnittstelle des Mega 2561, an das wir bereits zuvor das ULM2102 oder das 610wi angebunden haben.

Er besteht aus einem 6-poligen Anschlußfeld, auf das wir einen Stecker auflöten müssen. Wer keinen passenden Stecker zur Hand hat, kann sich einen entsprechenden 6-poligen aus einem 10-poligen basteln, indem man die überflüssigen 4 Pins mit einer Zange zieht - aber dazu später.

Zuerst basteln wir uns das Adapter-Kabel, das wir später immer wieder verwenden werden. Es ist also diemal kein Provisorium.

Bilder sagen mehr als Tausend Worte:
BootLoader Anschluss.jpg
Wir basteln uns ein BootLoader Kabel, von dem wir aber nur 4 der 10 Litzen benötigen. Die 4 äusseren überflüssigen Litzen kappen wir direkt am Stecker. Den Stecker krimpen wir wie bekannt auf das Flachbandkabel auf.

Die Ader- Belegungen des Flachbandkabels sind selbsterklärend!

Wenn man keinen 6-poligen Stecker zur Hand hat, so bastelt man sich einen aus einem 10-poligen, indem man die 4 überflüssigen Pins herauszieht. Die 6 (2*3) verbleibenden Pins kann man dann in das Board einlöten.

Ein Bild:
Modifizierter Stecker (von 10 auf 6 Pins).jpg
So - nun wird der BootLoader Vorgang vorbereitet.

Es wird wie folgt verdrahtet :
Vorbereitung BootLoaden.jpg
Wenn die Verdrahtung richtig erfolgt ist, können wir die Schnittstellenfunktion wie bekannt mit dem UART Terminal - Programm testen.

Die meisten 2561 Boards sind ja von mir mit einem "Hallo"-Programm vorbereitet worden. Dies sollte im Terminal Programm diesen Output erzeugen:
Verdrahtungstest für BootLoader.jpg
Fortsetzung folgt!

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Der "Bootloader Thread"

Beitrag von IPTRAIN » Mo 6. Mai 2013, 21:43

Hallo zusammen,

anbei ein kleines Video, wie man das Nutz-Programm, das ich Euch zugesandt habe, in den MC Mega2561 flashed!http://www.youtube.com/watch?v=5kqR33g2 ... e=youtu.be

Vorher natürlich das Programm AVR Flash Vers. 2.1.1.1 installieren. Die Download Adresse habt Ihr ja!

So - wie funzt nun das Flashen ?

Folgende Schritte:

1. Programm AVR Flash aufrufen
2. Nutzprogramm (z.B. Salu2) per Dateiauswahl in das Programm laden
3. COM-Schnittstelle auswählen, an der das UM2102 hängt! (Bei mir wie bekannt COM8) Achtung: Falls das UART Terminalprogram noch connected ist, gibt es einen Fehler, voher das Terminalprogramm also disconnecten
4. Geschwindigkeit 38400 Baud einstellen
5. Password eingeben
6. <Flash> Taste drücken - Prorgramm sendet nun wiederholend eine Zeichenfolge über die COM8 Schnittstelle an den MEGA2561 .... und wartet, dass der MEGA 2561 mit einer bestimmten Zeichen-Sequenz antwortet. Wenn die Zeichen-Sequenz empfangen worden ist, startet AVR Flash die Übertragung in den MEGA 2561.

Wie bringt man nun den MEGA2561 dazu, dem AVR Flash auf seine gesendeten Zeichensequenzen zu antworten ?

Man schaltet den MEGA 2561 einmal aus und wieder an. Ca. 0,5 Sekunden lang nach dem Einschalten hat der Bootloader im MEGA 2561 die Kontrolle übernommen und wartet eben genau auf die Zeichensequenz. Er antwortet dem AVR Flash Programm und fordert zur Übertragung auf. Der Rest ist klar ...!

Aber ACHTUNG: Wenn man den MEGA2561 wieder einschaltet, muss man unbedingt darauf achten, dass das Einschalten ABRUPT erfolgt. Man darf mit der Hand am Draht nicht zittern, es muss sofort eine feste Verbindung hergestellt werden (also unbedingt das "Prellen" vermeiden). Ansonsten wird die Verbindung wieder unterbrochen und der AVR Flash zeigt einen Fehler. Man muss dann einfach die <Flash> Taste drücken und die Prozedur wiederholen.

7. Ist die Übertragung erfolgreich, so leuchten alle drei GRÜNEN LEDs im Flash Programm.

Danach wieder in das UART Terminalprogramm gehen und auf die COM-Schnittstelle connecten. Und bitte nicht vergessen, den MEGA 2561 erneut zu starten ... :roll: - sonst passiert nix!

Have Fun!

LG vom Karl

HaMuKiBahner
Anfänger
Beiträge: 10
Registriert: Do 17. Jan 2013, 20:50
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Der "Bootloader Thread"

Beitrag von HaMuKiBahner » So 12. Mai 2013, 12:11

Hallo Karl,
ich habe da folgendes Problem. Gehe ich mit dem Terminal auf Connect am eingeschalteten MC dann kommt die Antwort des MC mit einer Verzögerung von ca. 12 Sekunden. Ist ja nicht weiter schlimm, aber das AVRflash-Progarmm bringt nach ca. 8 Sekunden schon einen Timeout. Kann es am alten USB-Seriellwandler (nicht das ELV)oder dem PC (Win7) liegen. Ich benutzt extra einen prellfreien Schalter aber nichts hilft.
Gruß
Andreas


Übrigens: TCP Test Tool 3.0 (Win7 fähig) kann derzeit nicht heruntergeladen werden. Benutze jetzt halt das Vorgängerprogramm unter XP.

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Der "Bootloader Thread"

Beitrag von IPTRAIN » So 12. Mai 2013, 15:43

Hallo Andreas,

ich glaube eher nicht an eine Probkem der UART Verbindung, denn diese hat ja kein "Gedächtnis" - wo sollen denn die Daten in der Zwischenzeit gespeichert worden sein?

Ist Deine Funkverbindung schwach - was zeigt den die Feldstärke an?

Klingt eher so, dass "intelligente" Mitglieder (Router oder wiznet), es nicht schaffen, "durchzukommen" und permanennt die Übertragung wiederholen, bis es endlich klappt ?

Gehen denn auch schon mal Daten verloren ?

Liebe Grüße vom Karl.

Benutzeravatar
michaelb
Senior
Beiträge: 121
Registriert: Di 15. Jan 2013, 20:24
Wohnort: Österreich
Kontaktdaten:

Re: Der "Bootloader Thread"

Beitrag von michaelb » So 12. Mai 2013, 17:07

Hallo Leute!

Da ich kein ULM2102 seriell-USB Modul für den PC habe und trotzdem den Bootloader ausprobieren wollte, musste eine schnelle Bastel-Lösung her. Daher wieder einmal das "Schweizer Taschenmesser der IT" angeworfen - das Raspberry Pi und mit einem gebastelten Adapterkabel an unser WLANCROC-Mikrocontroller-Board angeschlossen.
kabel2.jpg
Die beiden Widerstände (Spannungsteiler) sind wichtig, da der ATMega 5V Signale schickt, das Raspberry Pi aber nur 3,3V Signale an seinen Eingängen verträgt.


Einrichtung am Raspberry Pi

Zuerst muß die standardmäßig eingerichtete serielle Konsolenausgabe über die UART Schnittstelle deaktiviert werden (/boot/cmdline.txt und /etc/inittab müssen angepasst werden - Anleitungen sind zu Haufe im Netz zB. hier).

Nach einem Neustart kann man sich die Daten ansehen, die vom WLANCROC-Board gesendet werden.

Zuerst muß für die Schnittstelle noch die richtige (vom Sender vorgegebene) Datenrate eingestellt werden:

Code: Alles auswählen

stty 38400 -F /dev/ttyAMA0
Mit diesem Befehl kann man die Daten anzeigen, die über die UART Schnittstelle empfangen werden:

Code: Alles auswählen

cat /dev/ttyAMA0

Ein Linux-Tool für den am ATMega verwendeten Bootloader gibt es hier. Man kopiert die Files in ein Verzeichnis am Raspi und ruft daraus "make" auf. Dadurch wird aus dem Quellcode das lauffähige Programm erstellt.

Mit folgendem Aufruf läßt sich Karls Testsoftware in den ATMega2561 flashen:

Code: Alles auswählen

./bootloader -d /dev/ttyAMA0 -b 38400 -P passwort -p Salu.hex
Der Bootloader wartet darauf, dass man am ATMega einen Reset auslöst. Dann wird der Flash-Vorgang gestartet.
raspi-bootloader.jpg
Schöne Grüße,
Michael

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Der "Bootloader Thread"

Beitrag von IPTRAIN » So 12. Mai 2013, 18:24

Vielen Dank Michael,

das war jetzt ein ganz wichtiger Hinweis ...! :lol: :lol: :lol: :lol:

Jetzt wird es nämlich echt interessant! Ich baue gerade ein anlaloges F7 ABA (SantaFe) Gespann auf WLAN - Funk um! Das mach ich aber jetzt nicht mehr mit dem 610wi, sondern mit einem Raspberry Pi (als Funk-Komponente UND als mächtiger Haupsteuerungs-Computer).

ABER: Das Raspberry Pi ist nicht geeignet, um Echtzeit - Funktionen abzuwickeln. Das liegt daran, dass LINUX kein Echtzeitbetriebssystem ist. Also kann man z.B. nicht darauf bauen, das LINUX z.B. in 1/10 - 1/1000 Sekunde auf ein Ereignis reagiert (bei Sound muss aber in 1/1000 Sekunde reagiert werden) usw..

Also hänge ich unter das RPi einen I2C - Bus, an den ich "Billig-" MCs hänge (2,00 Euro pro Stück ...!!!). Die werden auch über einen Bootloader mit Programmen geladen (genau wie ich beschrieben habe). Die "kleinen" Programme übernehmen Spezialfunktionen (wie z.B. Entkupplungswalzer, RFID- Erfassung, Motor Geschwindigkeit + Beschleinigung, und und und ...)

Und die programmiert man dann demnächst über Funk (über das Raspberry Pi), ohne dass man die Lok dann noch öffnen braucht !

Jetzt versteht Ihr auch, warum ich so viel mit dem I2C - Bus rumexperimentiere. Aber keine Angst - unser Projekt mit den wiz610wi läuft weiter - wie gehabt! ;)

LG vom Karl :roll:

Tony Cannaerts
User
Beiträge: 28
Registriert: Di 15. Jan 2013, 21:50
Wohnort: Blaasveld (Belgien)
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Der "Bootloader Thread"

Beitrag von Tony Cannaerts » Do 16. Mai 2013, 22:21

Hallo

Bei mir passiert nichts! Wenn ich den bootloader arbeiten las hat er immer einem 'timeout'. Ich glaube das da irgendwo eines problem ist mit der empfangsseite von das board weil de uart schnitstelle gut arbeited. Weiss jemand was es sein kan?
LG
Tony
Deutsch, eine Sprache einfach zum sprechen aber schwer zum schreiben ...

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Der "Bootloader Thread"

Beitrag von IPTRAIN » Fr 17. Mai 2013, 06:14

Tony Cannaerts hat geschrieben:Hallo

Bei mir passiert nichts! Wenn ich den bootloader arbeiten las hat er immer einem 'timeout'. Ich glaube das da irgendwo eines problem ist mit der empfangsseite von das board weil de uart schnitstelle gut arbeited. Weiss jemand was es sein kan?
LG
Tony
Hallo Tony,

schaue einmal bitte in den Beitrag von Lipperbahner. Marcel hatte zu Anfang das gleiche Problem. Es hat noch eine Entwicklungsumgebung von ATEML installiert, die offensichtlich einen Schnittstellentreiber auf dem PC mitbringt (so vermute ich).

(Alle Kollegen in den Mikrocontroller - Foren haben dieses Programm (ATMEL-IDE) installiert, vielleicht ist das Problem deswegen vorher nicht aufgefallen.)

Danach sehen wir weiter!

LG vom Karl

Benutzeravatar
Rainer
User
Beiträge: 47
Registriert: Mo 3. Dez 2012, 11:17
Wohnort: Düsseldorf
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Der "Bootloader Thread"

Beitrag von Rainer » Fr 17. Mai 2013, 14:57

Hallo Karl,

auch bei mir tritt der timeout auf. Da ich auch ein Atmel-Board mit AVR-Studio einsetze, gibt es den Fehler. Vorsichtshalber habe ich AVR-Studio 4.19 nochmal gelöscht und neu installiert aber der Fehler bleibt.
Für mich ist es insoweit kein Problem, da das Programmieren über das Atmel-Board einwandfrei funktioniert. Vielleicht kannst Du ja noch über Deine Microcontroller-Foren etwas herausfinden.

LG
Rainer

Antworten
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Zurück zu „Aktueller Stand“