PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega8-Boot-Loader nicht nur für den ASURO geeignet



peli51
21.05.2006, 16:05
Hallo, ich habe einen seriellen Boot-Loader für den ATmega8 geschrieben der den Boot-Loader im ASURO ersetzen soll. Das Programm ist vollständig in Assembler geschrieben (AVRStudio-GCC-Projekt) und hat im Moment einen Umfang von ca. 700Byte. Vorteil ist, dass man zur Datenübertragung jedes "normale" Terminalprogramm, mit dem sich Dateien über den COM-Port senden lassen, zur seriellen Programmierung des ATmega8 verwenden kann. Die Baudrate ist wie beim "Flash1.4" in der Testphase auf 2400 Baud eingestellt. Den COM- oder USB-Adapter des ASURO kann man weiterhin verwenden. Das Boot-Loader-Programm soll nach der ersten Testphase mit Testfunktionen wie beim Selbsttestprogramm für den ASURO erweitert werden. Im Gegensatz zum Original-Boot-Loader erwartet mein Boot-Loader die nomale, vom Assembler/Compiler erzeugte, *.hex-Datei (Textdatei).

Für die jetzt anstehende Testphase suche ich drei bis vier Leute, die den Boot-Loader an ihrem System mit verschiedenen Terminalprogrammen testen und zum Erfahrungsaustausch bereit sind. Wer also Interesse hat müsste in der Lage sein, einen ATmega8 über PonyProg2000 oder ein ähnliches Programm mit dem Boot-Loader-hex-File zu programmieren.

Der ATmega8 wird so programmiert, dass er mit seinem internen RC-Oszillator und 8MHz arbeitet. Dadurch kann man den Resonator auf dem ASURO-Boad auslöten und hat dafür zusätzlich zwei freie Portpins (PB6 und PB7) zu Verfügung!

Also Tester meldet euch.

Gruß, Peter

Vogon
21.05.2006, 23:55
.. Im Gegensatz zum Original-Boot-Loader erwartet mein Boot-Loader die nomale, vom Assembler/Compiler erzeugte, *.hex-Datei (Textdatei)...

:-k ... versteh ich jetzt nicht, der Original-Boot-Loader sendet doch auch den *.hex ? :-k

Aber es freut mich doch, das du dich da mal dran gemacht hast. 8-[
Ich war leider bisher zu faul dazu. Habe aber im Moment leider keinen ATmega8 da, sonst hätt ich da sehr gerne mal getestet. ](*,)

peli51
22.05.2006, 06:27
Hallo Vogon.
Ja, das Programm Flash1.4 verwendet natürlich auch die *.hex-Datei sendet aber nicht den originalen Inhalt dieser Datei. Wie du sicherlich weiss, ist die hex-Datei eine normale ASCII-Datei in der die Programmdaten im Intel-Hex-Format gespeichert sind. Diese Datei wird aber nicht in ihrem Originalzustand gesendet, sondern vom Programm Flash1.4 in ein anderes Format geändert und dann erst als ASCII-Datei gesendet (sendet immer eine Flash-Page von 64Byte). Warum der Programmierer das gemacht hat, kann ich nicht nachvollziehen. Das Intel-Hex-Format sieht wie folgt aus:

The first data record is explained as follows:
: Start code.
10 Hex 10 (decimal 16), indicating 16 data character
pairs, 16 bytes of binary data, in this record.
01 Four-character 2-byte address field: hex address 0100,
00 indicates location where the following data is to be loaded.
00 Record type indicating a data record.
The next 16 character pairs are the ASCII bytes of the actual program data.
40 Checksum of the first Hex-record.

The termination record is explained as follows:
: Start code.
00 Byte count is zero, no data in termination record.
00 Four-character 2-byte address field, zeros.
00
01 Record type 01 is termination.
FF Checksum of termination record.

Dieses Original benutze ich zur seriellen Datenübertragung und diese Daten erwartet auch mein Boot Loader!

Gruß, Peter

m.a.r.v.i.n
22.05.2006, 10:35
Hallo Peter,

als Beta Tester für den Bootloader stehe ich gerne zur Verfügung.
Einen Asuro und ein paar Boards mit mega8 Prozessor habe ich auch.

Gruß m.a.r.v.i.n

peli51
22.05.2006, 12:25
Noch etwas habe ich vergessen zu erwähnen: Ich benutze zur Datenübertragung ein Laptop und konnte mit dem Flash1.4-Programm und dem COM-Adapter keine Programme zum ASURO übertragen obwohl der Com-Test einwandfrei und ohne Fehler durchgeführt wurde! Ich hatte mir deshalb zusätzlich den USB-Adapter gekauft mit dem es dann funktionierte. Mit meinem Boot Loader funktioniert die Datenübertragung jetzt auch mit dem mitgelieferten COM-Adapter einwandfrei. Ich nehme an, dass ein Softwarefehler im originalen Boot Logger ist.
Gruß, Peter

peli51
22.05.2006, 12:36
Hallo m.a.r.v.i.n,

prima, dann teile mir doch bitte deine E-Mail-Adresse mit, damit ich dir das hex-File von meinem Boot Logger und eine kurze Funktions-Erklärung schicken kann!

Für den ASURO benötigst du aber einen Low Power M8 (ATmega8L). Die 16MHz-Version des M8 läuft nur mit 5V Versorgungs-Spannung!

Peter

Archi
22.05.2006, 19:26
Hallo zusammen,

seid vorsichtig mit dem internen Oszillator. Bei den Anfängen von ASUROs Entwicklung haben wir den auch benutzt und hatten häufig Schwierigkeiten, da die Frequenz mit der Batteriespannung und Temperatur stärker schwankt, als für eine serielle Übertragung gut ist. Nur deswegen ist der Resonator überhaupt drin, die zwei Portpins hätten wir gut gebrauchen können!
Ich rate daher von der Verwendung des internen Oszillators ab, außer ihr habt eine trickreiche Baudraten-Erkennung drin. Diese haben wir uns aus Aufwands- und Platzgründen verkniffen...

CU, Robin

Vogon
22.05.2006, 19:31
... Diese Datei wird aber nicht in ihrem Originalzustand gesendet, sondern vom Programm Flash1.4 in ein anderes Format geändert und dann erst als ASCII-Datei gesendet ...
.. o ha - schon klar. Du hast deinem Bootloader das lesen der Intel-Hexfiles bei gebracht. So wird das Flashprogramm natürlich überflüssig. O:)

peli51
22.05.2006, 21:51
@Archi,
ich weiss zwar nicht welche Probleme ihr damals mit dem internen RC-Oszillator hattet, aber ich halte diesen Hinweis einfach für falsch. Für mein letztes Projekt (Datenlogger mit M8 und M32) habe ich ca. 60 Geräte gebaut, alle mit internem RC-Oszillator 8MHz CLK und 38400 Baud. Nicht bei einem einzigen Datenlogger traten die von dir erwähnten Probleme auf und unsere Baudrate war sogar "etwas" höher. Evtl. habt ihr damals eine schlecht Charge verarbeitet oder eine Fehler in der Software gehabt. Anders (Fehler in der Software) kann ich mir den oben von mir beschriebenen Fehler bei der seriellen Datenübertragung mit dem COM-Interface nicht erklären. Ich habe in der Zwischenzeit mindestens 60 hex-Dateien mit meinem Boot Loader im M8 über das COM-Interface zum ASURO übertragen und nicht bei einer gab es, wie bei eurem Boot Loader, einen Übertragungsfehler! Stell doch mal euren Boot Loader dem Forum zur Verfügung, dann wird sich, denke ich, schnell herausstellen warum bei der Datenübertragung mit COM-Interface und eurem Boot Loader so viele Probleme bei den Anwendern auftreten!
Gruß, Peter

stochri
23.05.2006, 06:49
ich weiss zwar nicht welche Probleme ihr damals mit dem internen RC-Oszillator hattet, aber ich halte diesen Hinweis einfach für falsch

Vielleicht hängt die Frequenz des RC-Oszillator ja auch von der Batteriespannung ab. Die ist beim ASURO abhängig vom Ladezustand. Hat jemand Erfahrung ?

Gruss,
stochri

Archi
25.05.2006, 16:28
Richtig,

bei konstanten 5V und entsprechend kalibriertem Oszillator war's kein Problem. Nur wenn die Spannung langsam in die Knie geht, wird die Verstimmung größer als ein paar Prozent und dann hatten wir wirklich mit der seriellen Übertragung ein Problem. Die Datenrate ist dabei übrigens meiner Meinung nach egal. 5% Verstimmung sind immer 5% Verstimmung, egal bei welcher Frequenz.

@Peter: Hast Du eigentlich eine Fehlerkorrektur drin oder nur eine Fehlererkennung über die Checksumme im hex-File?

Keine Sorge, kannst ruhig lästern über den Bootloader, ich habe damals nur die Elektronik konstruiert ;-)

Die Sourcen (zumindest für die Linux-Version) finden sich übrigens auf der ASURO-CD...

Ich hab's auch leider nicht mitgekriegt: Gibt's den Code schon zum Runterladen zum Testen, oder nur an einen ausgewählten Personenkreis? Dann würde ich das Ding auch mal testen. Unsere Version hat damals nämlich auch auf allen Rechnern, die wir in die Finger gekriegt haben gut funktioniert...

CU, Robin

stochri
25.05.2006, 18:23
Hallo Archi,

wenn man die Threads über das Thema Bootloader so verfolgt, stellt man fest, dass ziemlich viele Leute Probleme bei der Datenübertragung zum ASURO haben.

Möglicherweise resultieren die Probleme aus einer Kombination von nicht ganz korrekt implementierter SerRead und SerWirite Funktion und der Rückoppelung der IR-Sendediode auf den IR-Empfänger.

Ich habe ungefähr eine Woche lang versucht, mit den Routinen eine Ping-Pong Kommunikation zwischen PC und ASURO zu realisieren, aber es traten immer Fehler auf. Danach habe ich meine eigenen Routinen geschrieben und mit denen läuft die Datenübtragung absolut fehlerfrei.

Gruss,
stochri

rungo
07.06.2006, 20:19
Hallo,
möchte da keinen neuen Tread eröffnen ala 'Was ist ein Boot-Loader?', sondern diese Frage hier stellen: Was ist das, was macht ein Boot-Loader und wann braucht man sowas?
Habe den Begriff jetzt schon öfter gehört und möchte nun endlich wissen was es damit auf sich hat. Wer kann es mir erklären?

MfG
Georg

Vogon
07.06.2006, 21:42
Googel doch mal [-o<
http://de.wikipedia.org/wiki/Boot-Loader


... Ein Boot-Loader (verkürzte Form des ursprünglichen Wortes bootstrap loader) ist eine spezielle Software, die ...
... Der Boot-Loader lädt dann weitere Teile des Betriebssystems...

Der englische Begriff "bootstrap" bezieht sich ursprünglich auf die Schlaufe, die sich an der Hinterseite eines Stiefels befindet, um das Anziehen des Stiefels zu erleichtern. Der Prozess des Bootens (ein Programm auf einem Rechner laufen zu lassen, auf dem noch kein Betriebssystem läuft) erinnert teilweise an das Bemühen, sich an der eigenen Stiefelschlaufe aus dem Morast ziehen zu wollen.

Arexx-Henk
08.06.2006, 09:34
Hallo,

Die Asuro bootloader ist einem von DLR geschriebenes Program dass sich im obersten bereich vom 8KB Flash befindet. Die bootloader benutzt 1KB. Damit bleiben 7KB ubrig fur Anwenderprogramme.

Die bootloader ist so geschrieben dass:
- er die erste 3 Sekunden nach dem aufstarten testet ob da Daten am RXD/PD0/Pin2 ankommen. An diesen Pin hangt die Asuro Infrarot Empfanger.
- er die empfangene Daten wie Program Instruction in die 7KB Flash speichert
- er nach 3 Sekunden nichts empfangen zu haben dass Anwenderprogram startet

Normalerweise brauchte mann ein Programmiergerat wie PonyProg oder STK500 um uberhaupt ein program im Atmega8L zu programmieren.

Diesen 'bootloader trick' kostet etwas speicherplatz aber damit kann ohne Programmiergerat die Atmega8L programmiert werden.

Die DLR bootloader wird vom Asuro-hersteller im Atmega chip hineinprogrammiert mit ein Programmiergerat (STK500, PonyProg oder sonstiges).

Gruss

Henk

09.06.2006, 09:45
Hallo zusammen,

heute habe ich den Bootloader V1.3 in einen ATMega8L geflashed und in meinen Asuro gesteckt. Die Datenübertragung zum Asuro funktioniert jetzt hervorragend, sogar am Laptop mit USB-Seriell-Wandler. Herzlichen Dank an alle. die diesen neuen Bootloader programmiert und verbreitet haben.

Ich möchte aber noch folgende Erfahrung weiter geben: Bei mir funktioniert die Datenübertragung nur mit dem externen Quarz-Resonator. Bei internem 8 Mhz- Oszillator erscheint zwar die Statusmeldung des Bootloaders, die Übertragung zum Asuro wird aber nach weniger als einer Sekunde fehlerhaft (d.h. Status-LED blinkt langsamer). Ich habe aber meinen ATMega8 nicht selbst kalibriert, das Calibration-Byte hat den Wert 0xC0. Ich nehme an, dass mein ATMega8 ein Ausreisser ist. Mich stört dies jedoch nicht, da ich momentan die beiden zusätzlich gewonnenen Pins nicht benötige.

Nochmals mein grosses Kompliment für den neuen Bootloader.

Gruss Klaus.


P.S. Die IR-Sende-LEDs habe ich so mit Schrumpfschlauch überzogen, dass nur noch die Kappe frei bleibt.

pebisoft
09.06.2006, 19:27
Ich rate daher von der Verwendung des internen Oszillators ab, außer ihr habt eine trickreiche Baudraten-Erkennung drin. ...

stimmt nicht !!!!!!

mein asuro läuft auch mit dem internen und sogar mit dem bootloader 1.3.

außer ihr habt eine trickreiche Baudraten-Erkennung drin. .....

diese aussage kann nur ein schwachmat machen.
bei der bauratenerkennung wir nicht getrickst.

Ronny10
10.06.2006, 08:53
@Klaus:
Ich danke dir für das Kompliment.

@pebisoft:
Jemanden als "Schwachmat" zu bezeichnen, nur weil er eine gegenteilige Auffassung vertritt, halte ich für absolut unangebracht.

Viel Spass mit dem neuen Bootloader wünscht
Peter (Ronny10 ehemals peli51)

klecksinger
11.06.2006, 14:59
OT:

Hallo zusammen,

Ich konnte mit dem von pebisoft verwendeten Wort "schwachmat" nichts anfangen und habe mal im Lexikon nachgeschaut. Ergebnis:
schwachmat = Verballhornung des Wortes "Schachmatt";
bezeichnet einen möglichen Endzustand für das im Begriff enthaltene Brettspiel;
Verballhornung entsteht vorzugsweise bei verkürztem Abstand zwischen Kopf des Spielers und dem Spielbrett.

Man lernt nie aus.

mfg Klaus

isis
16.01.2007, 16:02
Hallo,

ich habe den mitgelieferten ATmega wohl etwas zu oft programmiert - obwohl höchstens 100 mal, auf jeden Fall erhalte ich jetzt beim Flashen immer nur fie Meldung v.v.v.v.v.v was so viel heißt, das der Flashspeicher wohl seinen Geist aufgegeben hat.
Einen ATmega8L habe ich noch rumliegen, aber keinen Bootloader, deshalb meine Frage: kann man dein schönes Teil irgendwie bekommen.

linux_80
16.01.2007, 19:51
Hi isis,

das war evtl. nicht unbedingt optimal sich an diesen Thread anzuhängen,

aber heisst es nicht LVLVLV ?
Dann würde ich einfach darauf tippen, das die Batterie bzw. der Akku leer ist !
Den Flash kann man 10.000 mal beschreiben, da sollte es eigentlich keine Probleme geben.

damaltor
17.01.2007, 20:51
wenn du den flash wirklich erst einige 100 male beschreiben hast, dann schreib ne englische mail an info@arexx.nl und frag, was man da machen kann. ne möglichkeit gibts bestimmt. ansonsten bekommst du den vorprogrammierten atmega bei ebay (teuer - ca 12 euro)

cj84
15.04.2007, 22:59
Hi,

ich habe meinen Asuro lediglich einmal erfolgreich geflashed. Denn am nächsten Abend habe ich durchweg folgendes erhalten:


Open COM1 --> OK !
Bulding RAM --> OK !
Connect to ASURO --> OK !

Sending Page 001 of 086 --> v.v.v.v.v.v.v.v.

Das Sendemodul habe ich bereits ausgiebig getestet. Die LED leuchtet (Webcam). Es werden auch Daten empfangen (Papiertest, Fernbedienung).

Kann denn der Chip schon kaputt sein? Der selbstest lief damals ohne Probleme. Habe es auch schon mit einem Netzteil als Versorgungsspg. am Asuro getestet. Kein t (timeout) und kein c (checksumerror).

@isis: hat sich schon etwas ergeben? Antwort von Arrex? Scheine da wohl das gleiche Problem zu haben.

linux_80
15.04.2007, 23:52
Hi cj84,

die Batterie ist leer, bzw. Spannung (Volt) zu gering,
bei Übertragungsfehler kommt nämlich t oder c !

damaltor
16.04.2007, 13:21
Hi cj84,

die Batterie ist leer, bzw. Spannung (Volt) zu gering,
bei Übertragungsfehler kommt nämlich t oder c !

das ist leider falsch.

bei leerer batterie kommt VLVLVLV... (Lov Voltage). das flash tool in der neueren version gibt dann eine entsprechende fehlermeldung aus.
v.v.v.v. bedeutet VERIFY ERROR. das bedeutet dass der flash-speicher deines prozessors physisch beschädigt ist. da gibts leider keine rettung. normalerweise kommt dieser fehler erst nach etwa 10.000 flash-vorgängen.

da dein asuro noch recht neu ist, ist offensichtlich ein defekter prozessor geliefert worden.

schreibe eine englische email an
info@arexx.nl
und erkläre dein problem an den support. der ist wirklich nett und sehr hilfsbereit, ich denke du solltest schnell einen neuen prozessor bekommen. vielleicht hängst du einen screenshot des flash tools an.
im notfall gibts den prozessor bei ebay (asuro eingeben). allerdings kostet er da meist 12 euro. ein einfacher neuer atmega8 zB von reichelt hilft nix, weil der bootloader fehlt.

cj84
16.04.2007, 21:59
Hallo,

erst einmal vielen dank für eure Antworten.

Dass der Prozessor anscheinend beschädigt ist, habe ich vermutet. Laut Asuro-Skript tritt das v nämlich nur in diesem Fall auf. Wenn ich mit dem IR-Sender schwenke, erhalte ich ein c, also fehlerhafte Übertragung, halte ich ihn vom Asuro weg, ein t, also timeout. Es kommt also alles korrekt an, wird aber nicht korrekt abgespeichert. Da ich einen erfolgreichen Flashvorgang verzeichnen konnte, hat also alles vorher geklappt (richtig zusammengelötet, Software OK, etc.). Statt 10.000 mal nur einmal, was für die Statistik ;) Mein letzter Versuch war ebend noch einmal mit einem Netzteil (4 Batterien mit 1,5 V = 6V angelegt). Gleicher Fehler.

Open COM1 --> OK !
Bulding RAM --> OK !
Connect to ASURO --> OK !
Sending Page 001 of 086 --> v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v. v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.
TIMEOUT !
Not successful, Flash contents will be invalid!

Ich werde die Tage eine E-Mail schreiben an die genannte Adresse und eventuell den Chip einmal bei einer Studentischen Arbeitsgemeinschaft an einem Programmierboard testen (am besten nach Antwort des Supports). Einen neuen "original"-Prozessor finde ich mit 12 Euro ganz schön happig. Eventuell teste ich auch mal einen normalen Prozessor mit alternativem boot-loader. Da ich die ATmega-Prozessoren auch etwas genauer kennenlernen möchte, kann man den Chip später auch noch für andere Zwecke einsetzen, falls der Versuch misslingen sollte.

Wenn ich etwas neues weiß, berichte ich davon.
Viele Grüße
CJ

damaltor
17.04.2007, 09:14
mach das. der support ist wirklich schwer in ordnung, ich denke nicht dass das ein problem sein sollte. schreib auf englisch, oder, wenn du kannst, niederländisch. =)

MartinFunk
06.09.2007, 16:43
sorry das ich diesen tread noch mal aufwühl aber hast du auch nen link dazu?

MfG Martin