PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bootloader mit Bascom aufs Board spielen



sebriko
29.01.2008, 19:47
Guten Abend,

hat jemand schon einmal einen Bootloader auf ein Board draufgespielt?

Wie geht so etwas?

Basti

chr-mt
29.01.2008, 20:49
Hi,
In den Bascom Samples ist ein Bootloader Quellcode drin, den man für etliche Controller nehmen kann.
Man muß dort nur den richtigen Chip eintragen, compilieren und per ISP in den Chip flashen.

Wichtig ist, die Fuses im Controller richtig zu setzen.
Also die Bootloader-Größe und den "Boot Reset Vector" enablen.

Für die PC Seite gibt es ein Programm, das man sich bei MCS runterladen kann.
Finest du bei den Application Notes auf der MCS Seite:
http://www.mcselec.com/index.php?option=com_content&task=view&id=159&Itemid=57


Gruß
Christopher

sebriko
30.01.2008, 12:36
Danke für den Tipp. Jetzt sehe ich gerade, dass ich einen speziellen Bootloader für mein Board (Atmega 2560) verwenden muss. Den gibt es nur als Hex-File. Kann man mit Bacom auch Hex-Files aufs Board spielen?

Basti

chr-mt
30.01.2008, 13:59
Der Bootloader.bas Code aus den Samples funktioiert auch mit einem MEGA2560
Zumindest kann man ihn da auswählen
$regfile = "m2560def.dat"
Const Loaderchip = 2560

Hex Files kann man mit Bascom wohl auch flashen.
Beim "Sample Electronics Programmer" oder "STK 200/300 kompatiblen Programmern" sollte das so gehen:
Manual Program ->Buffer->Load from file->Dateityp "Hex" auswählen->File laden->Programmieren

Habe ich aber noch nicht ausprobiert, da ich das AVR Studio und STK500/AVRISP zum flashen verwende.

Gruß
Christopher

Jon
30.01.2008, 14:09
Schau dir mal die Anleitung zum RN-Mega2560 an. Da ist das mit dem Bootloader von robotikhardware..de genau beschreiben.

jon

sebriko
01.02.2008, 13:41
Wie man eine hex-Datei aufs Board flasht, weiß ich jetzt. Man muss statt der gewöhnlichen Option "Program" die Option "Manual Program" auswählen. Als nächstes wählt man die Option "Load from file" und gibt dort die hex-Datei an.

Was mich jetzt bei dem Bootloader wundert, ist, dass die Datei so groß ist (über 700 KB). Der Speicher von meinem Board ist gar nicht so groß.

Wenn ich diese Datei aufgespiele, was einige Minuten dauert, blinkt die LED viel mal hintereinander, danach Pause, danach wieder von vorne.

Leider kann ich mit dem USB-Kabel immer noch nicht programmieren, muss aber auch dazu sagen, dass ich sehr willkürlich herumprobieren muss. Die Anleitung zum Bootloader enthält zu viele grammatische Fehler, als dass ich hieraus schlau werden könnte.

Basti

chr-mt
01.02.2008, 15:06
Hi
Die Hexdatei ist um einiges Größer als die Binärdatei.
Wenn du den MCS Bootloader compilierst, bekommst du eine Hexdatei mit 719 KB und eine Binärdatei mit 256 KB
Du kannst dir die Hexdatei mal ansehen.
Bis zum Bootbereich, der am Ende des Flashs liegt, werden FFs geschrieben, deshalb ist das so groß. Die "richtigen" Daten kommen erst ganz hinten.


Gruß
Christopher

sebriko
01.02.2008, 17:17
Ein ganz großes Dankeschön erstmal für den Beitrag. Ich habe mich auch erst gewundert, warum da so viele FFs auf dem Bildschirm erscheinen. Das Beste kommt halt erst zum Schluss.

Jetzt frage ich mich nur, warum die LED so seltsam blinkt, wenn ich den Bootloader aufgespielt habe (4 mal Blinken 1 mal Pause) Ist das gut oder schlecht? :-s

chr-mt
01.02.2008, 19:50
Hi,
der Bascom-Bootloader zeigt an einem Port an, daß er mit dem eigentlichen Programm beginnt, also entweder fertig ist, oder einen Timeout hatte.
Wenn daran eine LED hängt, dann blinkt die.

Beim Einschalten startet ja zuerst der Bootloader und wartet auf einen Startbefehl vom PC - Programm.
Kommt eine gewisse Zeit lang kein Startbefehl (beim Bascom Bootloader der Wert "123") an der seriellen Schnittstelle rein, wird der Bootloader beendet (Timeout),
der LED Pin wird ein paarmal getoggelt und das eigentliche Programm ab Adresse 0000 ausgeführt.

Ist kein Programm geladen, wird dann irgendwann wieder der Bootloader gestartet, dann fängt das Spiel wieder von vorne an.
Da es etwas dauert, bis der Programmzähler die Adressen bis zum Bootbereich hochgezählt hat, hast du eine Pause.

Wenn der Vorgang also immer wieder von vorne beginnt, dann ist kein Programm geladen.
(Oder das Programm ist fehlerhaft und läuft in's Nirvana ...) ;)

Gruß
Christopher

sebriko
02.02.2008, 17:18
Danke für den Beitrag, ich wäre sonst ziemlich ratlos gewesen. Dann schließe ich aus dem Blinken, dass der Bootloader zumindest schon einmal auf dem Board ist.

Jetzt geht es nur noch darum, das erste Programm aufs Board zu spielen. Aber das werde ich durch Probieren schon hinbekommen. Muss ja!

Freundliche Grüße

Basti

sebriko
05.02.2008, 15:02
Hallöchen nochmal,

habe es immer noch nicht geschafft über den Bootloader zu programmieren. Wenn ich mit meinem Testprogramm auf "Program" klicke, erscheint ein Fenster mit der Überschrift "Reset Chip". Darunter sind Meldungen zu sehen, was gerade gemacht wird. Erst wird der COM-Port geöffnet. Anschließend steht da "Sending init Byte" Danach tut sich aber einfach nichts mehr. Auch wenn ich beim Board kurz den Strom ausschalte. Muss man das Board vielleicht anders reseten? Wenn ich auf Abbrechen klicke, weil sich minutenlang nichts tut, erscheint hinter "Sending init Byte" "Loader returned 240" oder manchmal auch "Loader returned 248".

Gruß

Basti

Lemonsquash
05.02.2008, 15:28
Now in BASCOM-AVR select the 'MCS Bootloader' in the options->programmer window.
You can now use the serial port to program your controller

<-- Hast du das so gemacht (so in dem Link zu MCS oben)

sebriko
05.02.2008, 15:45
Ja, ich hab alles genau so befolgt. "MCS-Bootloader" ausgewählt. COM-Port ist bei mir 3. (Habe ich überprüft.) Ich habe alle Baudraten schon einmal durchprobiert. Nichts!

chr-mt
05.02.2008, 16:34
Stimmt die Quarzfrequenz im Code ?
Fuses richtig gesetzt ?
Ist die Baudrate mit deinem Quarz möglich ?
Benutzt du überhaupt den Bootloader-Code aus den Bascom Samples, oder was anderes?


Zum testen kannst du mal, wenn der Upload startet, Pin 2 und 3 der seriellen verbinden.
Du müsstest dann "Loader returned 123" zurückkriegen.

Gruß
Christopher

sebriko
06.02.2008, 20:23
Hi,

ich fürchte, dass mir jetzt definitiv niemand mehr helfen kann, weil ich im Eifer des Gefechts die Stromversorgung von meinem Atmega2560 falsch herum gepolt habe. 8-[ Das wars dann wohl. Trotzdem danke für die Hilfe.

Basti