PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro bootloader



drjmschmitz2000
19.05.2005, 22:07
Hi, ich hab jetzt mal ne saudumme Frage : das bootloader-Programm, das auf dem Asuro AT Mega 8L werksseitig schon drauf ist, wird das bei jedem flashen eines neuen Programmes neu aufgespielt ? Oder bleibt das sozusagen "versteckt" immer drauf ? Und wenn der AT Mega 8L mal den Geist aufgibt, muss ich mir dann also den AVR-Chip bei Asuro-Hersteller kaufen, kann ich dann nicht bei Conrad irgend nen mega 8 kaufen ???

viele Grüße, Jörg

thille
20.05.2005, 07:12
Das Bootprogramm bleibt drauf. Es wird beim Einschalten einmal durchlaufen und startet das eigentliche Programm, wenn keine Datenübertragung stattfindet. Kann man auch selbst gut sehen, denn der Bootlader funktioniert auch dann noch, wenn vom Flash-Tool die Meldung angezeigt wird "Flash damaged"

Das Prinzip des Bootloaders ist im Datenblatt des Mega8 beschrieben. Die Anpassung an die infrarote Übertragung ist wohl die Spezialität des Asuro.

Auf der Seite des herstellers steht, daß Asuro ausschließlich mit Freeware programmiert werden kann. Ob der Bootloader darunter fällt, kann ich leider nicht sagen. Bei den Quelltexten ist er jedenfalls nicht dabei.

Gruß

Torsten

drjmschmitz2000
20.05.2005, 07:55
Hi Torsten,

danke, das wollte ich wissen !

Jörg

Rubi
06.06.2005, 11:39
Wirklich schade, das das hexfile nicht mitgeliefert wird.
Ich habe meinen Mega8 überschrieben, das proggen über IR war mir zu mühsam (mußte jedesmal 40 bis 50 Anläufe nehmen) und ich hatte keinen anderen Mega8 in der Dil Version bei der Hand.
Jetzt würde ich es gerne bei Gelegenheit wieder einmal probieren, was ohne das Bootloader hex file leider nicht möglich ist.

LG
Rubi

Archi
06.06.2005, 16:17
Hallo Rubi,

frag' doch mal bei AREXX an, ob sie dir einen neuen ATmega8 schicken können. Das Problem ist, wenn der Bootloader-Code zugänglich wäre, dass dann kaum noch was einen Nachbau verhindert.

CU, Robin

uries
10.06.2005, 16:26
HALLO,

Den ATmega8 mit Code ( Bootloader ) habe ich bei
eBay gefunden, Ja-Ri-TEC`s Robo Shop \:D/ \:D/ \:D/

http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&category=8320&item=5781019873&tc=photo

MfG
uries

Rubi
10.06.2005, 17:21
HALLO,

Den ATmega8 mit Code ( Bootloader ) habe ich bei
eBay gefunden, Ja-Ri-TEC`s Robo Shop \:D/ \:D/ \:D/

http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&category=8320&item=5781019873&tc=photo

MfG
uries

Hallo Uries

Danke für deinen Hinweis.
Leider ist das recht teuer (was ich schon befürchtet habe, deswegen habe ich noch nicht beim Hersteller nachgefragt).
Mit Versand kommt man da locker auf 15 bis 18 Euro.
Dafür bekomt man bald schon 5 bis 6 Atemega8.

LG
Rubi

becki
05.11.2005, 18:44
Und eine ATmega8 mit bootloader per ISP auslesen und in einen aderen Flasshen geht nicht?

linux_80
05.11.2005, 19:31
geht nicht, die Lockbits des AVR sind gesetzt, und lassen sich nur durch komplettes löschen/zurücksetzen des M8 wieder herstellen, dabei geht aber auch der Bootloader flöten. Man hat danach einen ganz nomalen M8L.

m.a.r.v.i.n
07.11.2005, 09:20
Eine Möglichkeit wäre, einen alternativen freien Bootloader wie Megaload zu verwenden und als Flasher Tool AVRDude. Ich weiß allerdings nicht ob das mit dem IR Transceiver funktioniert.

Gruß Peter

linux_80
07.11.2005, 17:55
Der IR Transceiver überträgt ja nur das serielle Signal, also könnte es gehen.

Vogon
07.11.2005, 23:36
Das Protokoll, die Checksummen berechnen und das Flashen. :-k
Das sollte doch zu machen sein.
Zum Testen kann man das ja erst mal in C Programieren. :-b

Freiheit für den ASURO - Ein Bootloader für alle !

becki
08.11.2005, 12:39
also, willst du selbst nen bootloader coden?

linux_80
08.11.2005, 16:11
Wenn man einen eigenen Bootloader baut, kann man das Flashtool von ASURO nimmer verwenden, denn da werden die CRC-codes irgendwie anders berechnet, und es weiss kein normalsterblicher Asuro-User wie. :-k
Das sollte aber kein Problem sein, denn man kann es ja so machen wie man lustig ist, wenn man eeh schon einen eigenen Bootloader macht.
Man kann ja das Hex-file so übertragen wie es da auch steht, dann gibts nach jeder Zeile einen CRC-Code, ist u.U. etwas langsamer, dafür könnte man die Baudrate etwas erhöhen ?!

becki
08.11.2005, 16:21
ich würde das schematishc so machen:
start ----repli (OK)----zeile 1 ---reply angekommen-----zeile2 --- reply angekommen---foo---fertig----reply ok, ende

linux_80
08.11.2005, 20:06
hab mir die Sache mit dem Bootloader mal angeguckt, am Beispiel von Megaload (http://www.microsyl.com/megaload/megaload.html), bis auf das es nur unter Windose .NET läuft, und das man erst 30s den Startbildschirm anguggen muss, schauts erstmal garned so schlecht aus.

Der Megaload ist für den iccavr optimiert, welchen ich nicht verwende, muss also auch noch umgebaut werden, hab dazu aber schon einen Ansatz gefunden: http://www.mikrocontroller.net/forum/read-2-46637.html

also besser man sucht sich einen Bootloader den man auch unter Linux ansprechen kann, und gleich mit avrgcc zu compilieren geht.

Was man beim Asuro aber noch anpassen muss, ist das mit dem OC2, damit die IR-Diode mit 36kHz flackert, und die Daten auch wieder beim PC ankommen können, sollte aber nicht das grosse Problem sein.

Was noch zu bedenken ist, bei IR sollte man eine ähnliche Strategie der Datenübertragung haben wie das original-Flashtool, so mit timeout usw. denn man sieht ja wie gut das manchmal in der originalversion läuft #-o
Also braucht man evtl. doch wieder ein extra Flash-tool, das Asuro optimiert ist ?

Archi
08.11.2005, 21:16
Schon mal daran gedacht, bei den Linux-Sourcen zum Flash-Tool zu spicken? ;-)

CU, Robin

linux_80
08.11.2005, 22:13
ja freilich, aber zum berechnen des CRC ist da eine Tabelle mit 256 16-Bit Werten, die mir zu schade ist in den M8 zu legen, um die übertragenen CRC zu checken, ich denke das muss im ASURO irgendwie errechnet werden, was das Flashtool schon hinterlegt hat.
Oder liegt die wirklich im Bootsektor ?
Dann kann das Programm des Bootloaders max 512 Bytes lang sein :-k wird knapp wenn ich mir so andere Bootloader ansehe.
Aber man könnte da bestimmt etws ausmisten, und zB. keine automatische Baudratenerkennung einbauen.

Vom Platz her hat der Ausro doch auch noch ein Testprogramm mit drin, wo ist das denn dann ? #-o

Naja, mal schaun, vielleicht hab ich Zeit/Lust und bau erstmal ein normales Testprogramm um die Übertragung incl. Berechnung zu testen.

Vogon
08.11.2005, 23:32
Momentan verstehe ich auch (noch) nicht warum das mit der Tabelle gemacht wird.
Bei einer CRC16 Berechnung stelle ich mir so etwas vor:
http://www.eagleairaust.com.au/code/crc16.htm
http://de.wikipedia.org/wiki/Cyclic_Redundancy_Check

Vielleicht einfach mal nachrechnen, kann ja sein das dabei das gleiche heraus kommt ?
Da habe ich noch was gefunden:

http://www.4d.com/docs/GIF/U7990913.GIF
http://www.4d.com/docs/CMU/CMU79909.HTM

m.a.r.v.i.n
09.11.2005, 12:21
Die Tabelle dient nur zur Beschleunigung der CRC-Berechnung (Lookup Table). Genausogut könnte man die Tabelle zur Laufzeit berechnen und im RAM ablegen, oder die Funktion zur Berechnung aufrufen.

Die CRC-16 im Asuro Flasher ist jedenfalls keine CCITT CRC 16. Damit ist auch der Algorithmus zur Berechnung nicht bekannt.

Gruß Peter

Rubi
09.11.2005, 12:31
Die CRC-16 im Asuro Flasher ist jedenfalls keine CCITT CRC 16. Damit ist auch der Algorithmus zur Berechnung nicht bekannt.

Gruß Peter

Na ja die müßte man aber wirklich leicht im Linux Source abschauen können.
Obwohl es eigentlich auch egal ist wie es jetzt berechnet wird,
wenn man einen eigenen Bootloader baut, muß man ohnehin "beide Seiten des Programmierkabels" bedienen.

LG
Rubi

linux_80
09.11.2005, 13:17
@Rubi
das steht eben nicht im Linux-source, denn da ist ja die Tabelle, von der man (noch) nicht weiss wie sie generiert wurde.

Ich hatte mir schon vor einiger Zeit die Arbeit gemacht, und alle Werte ins Excel eingegeben, und ein Diagramm draus gemacht, ob sich da optisch was abzeichnet, evtl. fällt jemanden was dazu ein:

[edit]Diagramm gelöscht

m.a.r.v.i.n
09.11.2005, 13:34
hier sind ein paar Code Schnipsel für die Berechnung einer CCITT CRC 16 Checksumme. In C mit Tabelle und Assembler für den AVR.

Man könnte die CRC Tabelle aus dem ASURO Flasher austauschen, und die CRC Berechnung in den Asuro Bootloader einbauen.

Gruß Peter

Edit: Die im ASURO Flasher verwendete CRC ist eine XMODEM CRC-16 Checksumme. Habe gerade mal die Tabellen verglichen.
Hier gibt es auch AVR Beispielcode:
http://www.atmel.com/dyn/resources/prod_documents/AVR350.zip

linux_80
09.11.2005, 17:10
Hallo,
hätte man auch gleich haben können:

Die Speicherung der Tabelle benötigt 512 Bytes.
Sollte es für eine Speicherung dieser Tabelle zu voll sein, so kann man sie wie folgt zur Laufzeit aufbauen:


unsigned char Table[256];
const int Rest[8] = { 0xC0C1, 0xC181, 0xC301, 0xC601, 0xCC01, 0xD801, 0xF001, 0xA001 };
main() {
int i, j;
unsigned short value;

for (i = 0; i < 256; i++) {
value = 0;
for (j = 0; j < 8; j++)
if (i & (1 << j))
value ^= Rest[j];
Table[i] = value;
}
}

dann brauchts erstmal nur 16Byte :-)

linux_80
09.11.2005, 23:17
ich bins wieder, \:D/
jetzt hab ich mal in C was zusammengebraten, zum testen auf einem RN-M8, im moment ist es ein normales Programm, noch kein Bootloader, aber man kann schon mit dem orig. Flashtool die Daten rüberschicken, und der M8 checkt den CRC und meldet obs gepasst hat, usw.
Was noch nicht geht, die Daten in den Speicher schreiben.
Das dürfte aber nimmer so schlimm sein, der rest ist schon vorbereitet.
Bis jetzt hat es 982 Bytes, ohne das irgendwas optimiert wäre.

PS:
Obwohl ich im moment die Daten per Kabel versende, bekomme ich öfter CRC-fehler, das liegt wohl daran, das manchmal am Seitenbeginn ein Byte verschluckt wird, das der Asuro noch nicht mitbekommt. Sonst sieht es von der Übertragung genauso aus wie mit IR, da gehts bei mir auch nicht ganz ohne CRC-fehler.

Rubi
10.11.2005, 09:18
Hallo Linux-80

Bin schon gespannt!
Habe meinen Bootloader versehentlich überschrieben und würde meinen
Asuro gerne wieder mal über IR programmieren.

LG
Michael

m.a.r.v.i.n
10.11.2005, 09:37
Hallo linux_80,

klasse, das ging ja wirklich fix.
Habe mich mal inzwischen mal mit der avr-libc beschäftigt.
Dort findet sich eine Menge an Funktionen für Bootloader Support,
Flashen und CRC Berechnung. Alles bestens dokumentiert und in Assembler geschrieben.
http://savannah.nongnu.org/projects/avr-libc/

Gruß Peter

linux_80
16.11.2005, 12:54
\:D/ Hallo an alle Asurobesitzer und ersteller, \:D/

hatte die letzten Tage nicht soviel Zeit, aber heute hab ich wieder frei :cheesy:

so schauts aus:
getestet auf einem RN-Mega8 Board, mit dem orig. FlashTool vom Asuro
Das heisst, die Übertragung geht hier per Kabel, aber es geht,
CRC-fehler nur einmal am Anfang der 1. Seite,
Flash wird schon richtig geflasht,
es wird nicht nach dem Batteriefüllstand gecheckt (VL Meldung),
es wird auch noch nicht überprüft, ob die Daten dann richtig drin stehen, (zB. Flash schon zu oft geflasht),
Ich hab das bis jetzt danach immer mit Pony ausgelesen, und es stand immer alles da wo es hin sollte :-)
Hab alles in Assembler gemacht, bzw. erst mit C, dann was da rauskam nachgearbeitet, und die Routinen zum Flashen direkt in asm reingebaut,
im moment braucht er 832 Byte,


so wenn man dann einen gewöhlichen, dann modifizierten, M8 in den Asuro steckt schauts so aus,
Daten werden schön per IR hin- und hergeschickt, aber ich bekomme immer nur CRC-fehler, schaffe es also nicht etwas zu Flashen ! :-(
(sehe schon das grinsen von Archi und Kollegen ;-) )

Ich hab hier mehrere dieser IR-Adapter, kann deshalb auch mitverfolgen was so alles IR-mässig rumgesendet wird, hier sehe ich das der PC nicht immer alle Zeichen so mitbekommt wie sie der Asuro sendet , und bestimmt auch umgekehrt :-k
Das ist auch beim orig. Asuro-M8 so nur da gehts dann doch irgendwann.


Dann hätte ich noch eine Frage, bevor ich hier das Programm reinstelle,
wie können wir sicherstellen, wenn der Bootsektor mal auch auf dem Asuro klappt, das nicht ein findiger Mitbastler hier für €7,94 bei irgendwelchen Auktionshäusern solch fertige M8 loswerden will ?
Darf ich den Bootsektor hier reinstellen ?

Es bräuchte jetzt jemanden der die Sache mit der IR-kommunikation stabilisiert.

m.a.r.v.i.n
16.11.2005, 15:49
Hallo linux_80,

vermute, der Asuro empfängt über die IR Schnittstelle seine eigenen gesendeten Zeichen.
Nach dem Senden der Antwort sollte man auf alle Fälle den Empfangsbuffer leeren.

Bin selbst leider zur Zeit zu sehr im Stress um mich mit dem Asuro zu beschäftigen. :(

Gruß Peter

linux_80
16.11.2005, 20:33
ich hab das schon so gemacht, das wenn der Asuro sendet ich vorher den Empfänger ausmache, und erst wieder einschalte wenn ich was empfangen will.
Hilft aber nix. :-k

raptor_79
10.01.2008, 16:40
hallo,
andere frage,
kann man den bootloader nicht über jtag auslesen?
(hab noch nie mit jtag was gemacht, darum die evtl. dumme frage).

ist nur so eine idee.....

robo.fr
10.01.2008, 17:13
Nein, der Atmega8 hat kein Jtag.

damaltor
10.01.2008, 18:19
und wenn er es hätte, wäre es deaktiviert worden, da jtag einen kompletten port belegt. auch ein mega32 mit bootloader könnte man also nicht auslesen. jtag ist eigentlich in erster linie zu debugging zwecken entwickelt, und wird deshalb bei fertiggeräten/prozessoren/... im allgemeinen deaktiviert.

Theux
17.01.2008, 14:15
ähm auf dieser seite gibt es einen bootlaoder
was is mit dem geht der net?

http://home.planet.nl/~winko001/Asuro/Bootloader/AsuBtlPagFrm.htm

sloti
17.01.2008, 14:56
Hmm, der Link funktioniert bei mir nicht.

Theux
17.01.2008, 15:03
stimmt du hast recht mom ich schick mal nen anderen

Theux
17.01.2008, 15:06
ne die ganze seite funktioniert net mehr versuch es viell morgen noch mal weiß auch ent warum des etz net mehr geht


@dalmator: ok sry mach ich nie mehr

damaltor
18.01.2008, 13:20
Theux: Bitte benutze den EDIT-Button neben deinen Posts. du musst nicht immer einen neuen beitrag schreiben.

xeox
05.06.2008, 20:33
auch wenn der thread schon ziemlich alt ist hats mir keine ruhe gelassen ;)

mithilfe des stk500 und dessen hv-programming-mode ist es ganz leicht den original-bootloader zu extrahieren.

das hexfile (asuro-bootloader.hex) könnt ihr auf einen leeren atmega8(l) brennen. folgende fuses müssen dazu geändert werden:
- high fuse 0xDA
- low fuse 0xBF
- lockbits 0xFF (eigentlich 0xCF, aber dann ist die cpu für weitere externe brennvorgänge gesperrt! habe damit auch schon einen damit verfused :( )

wenn euch mal ganz langweilig ist könnt ihr das file disassemblieren und nen gescheiten asm-code erstellen :P

lg

xeox

[[[ATTACHMENT ENTFERNT von damaltor@05.06.08,23:30h]]]

damaltor
05.06.2008, 22:30
Ich habe das Attachment mal entfernt. Der Originale Bootloader hat Copyright von Arexx. solange das nicht offiziell abgesegnet ist, dass der bootloader hier angeboten wird, will ich mal kein risiko eingehen.

du kannst mal ne email hinschreiben, wenn du magst, ob wir den download hier anbieten dürfen.

xeox
06.06.2008, 06:01
gibt es das gesetz zur erstellung von sicherheitskopien zum privaten gebrauch noch? modifiziert wurde ja nichts.. ;)

wie gesagt: mit dem stk500 kann man den bootsektor ganz einfach extrahieren ohne bewusst sicherheitsbeschränkungen zu umgehen. sollte interesse bestehen kann ich das verfahren posten.

WICHTIG: das verfahren dient nur zum aufzeigen von sicherheitslücken und des technisch möglichen. ich distanziere mich hiermit von jeglicher art der softwarepiraterie oder dem illegalen vertrieb des codes!

lg
xeox

robo.fr
06.06.2008, 07:06
wie gesagt: mit dem stk500 kann man den bootsektor ganz einfach extrahieren ohne bewusst sicherheitsbeschränkungen zu umgehen. sollte interesse bestehen kann ich das verfahren posten.

Nein, kann man nicht. Das was Du mit dem stk500 erhälst, ist eine Zufallsfolge.

Gruß,
robo

xeox
06.06.2008, 12:36
wie gesagt: mit dem stk500 kann man den bootsektor ganz einfach extrahieren ohne bewusst sicherheitsbeschränkungen zu umgehen. sollte interesse bestehen kann ich das verfahren posten.

Nein, kann man nicht. Das was Du mit dem stk500 erhälst, ist eine Zufallsfolge.

Gruß,
robo

so ganz zufällig kann dieser code nicht sein.. immerhin kann ich meinen geklonten atmega mit ir flashen ;)

wenn du dich selbst überzeugen willst melde dich per pm

robo.fr
06.06.2008, 14:38
Na, da haben die wohl vergessen, das Lock-Bit zu sezten.


wenn du dich selbst überzeugen willst melde dich per pm

Nein danke, wenn Du es sagst. wird's wohl so sein.

xeox
06.06.2008, 15:32
was sollte denn alles gesetzt sein?
die lockbits waren bei mir auf 0xcf gesetzt. also lb und blb0 deaktiviert, blb1 war auf lpm+spm sperren in boot section gesetzt.

damaltor
09.06.2008, 08:26
privater gebrauch ist aber nicht hochladen ins forum. wenn du den bootloader rausbekommen hast, dann benutz ihn meinetwegen, aber behalt ihn auf deiner platte. hier im forum hat er nichts zu suchen.

geschlossen am 9.6.08@9.30h