Archiv verlassen und diese Seite im Standarddesign anzeigen : Bootloader 1.3 quellcode???
Hi, wie kann ich den Quellcode für den Bootloader bekommen? ich will gerne wissen wie sowas eigentlich funktioniert und einen eigenen Bootloader selbst zu schreiben, der mit ASURO-Flasher kompatibel ist. Ist der Quellcode wirklich geheim???
damaltor
12.02.2007, 19:03
naja "geheim" ist wahrscheinlich das falsche wort... aber veröffentlicht wurde er nicht, und urheberrecht gilt auch hier. schreib doch mal ne mail an arexx, ich glaube du bist nicht der einzige den das interessiert...
Denis911
12.02.2007, 19:11
Also für die Statistik:
Mich würde der Quellcode auch interessieren. Besonders, da ich gerne den ATmega168 einsetzen würde (mehr Flash und ein paar andere nette features) und dann den Bootloader portieren könnte.
Schöne Grüße,
D e n i s
damaltor
12.02.2007, 19:16
das kannst du machen. es gibt einen alternativen bootloader. hier:
http://home.planet.nl/~winko001/Asuro/Bootloader/AsuBtlPagFrm.htm
auf der homepage von Henk
Denis911
12.02.2007, 19:23
Ja, das hab ich gesehen, aber dort gibt es nur ein .hex-File und ebenfalls nicht den Quellcode. Oder hab ich das einfach nur übersehen?
Gruß,
D e n i s
damaltor
12.02.2007, 19:25
naja es ist ja schliesslich auch shareware. aber frag henk doch mal
Ich hab Henk gefragt, er meinte er hat es nicht geschrieben, sondern sein Kollege von ihn. Henk hat ihn ein eMail geschrieben, und wird wieder zurückmelden, wenn der ihn ein Antwort gegeben hat.
damaltor
12.02.2007, 21:40
das ist doch schonmal nicht schlecht. vielleicht hast du ja glück.
ich denke das würde alle heir im forum interessieren.
Ich bin der Bootloader-Schreiber. Ich habe mit Henk gesprochen und er wird jedem Interessenten den Bootloader mit Projektdatei usw. zuschicken. Ich muss aber an dieser Stelle darauf hinweisen, dass der Bootloader in Assembler geschrieben ist. In C wäre der Code zu groß geworden (1KB max.). Aber es ist evtl. das geeignete Projekt für den Einstieg in die Assembler-Programmierung. C ist zwar eine mächtige Programmiersprache, aber manche Programmteile lassen sich halt nur in Assembler realisieren. Wer in C programmiert sollte die Grunglagen der Assemblerprogrammierung kennen. Das ist in dem Moment wichtig, wenn man den vom Compiler erzeugten Zwischencode (Assemblerprogramm) kontrollieren möchte.
Peter (Ronny10)
Arexx-Henk
13.02.2007, 12:04
Okay,
hier ist er denn....
http://home.planet.nl/~winko001/
Gruss
Henk
Hmm, ich hab es nicht gefunden auf der seite :(
damaltor
13.02.2007, 15:36
da klickst du auf asuro, dann auf bootloader, und dann auf bootloader source.
super Peter, vielen Dank! Natürlich auch an dich, Henk.
Aso, Cache problem ^^, ich sah immer nur die alte seite
Hmm... In Assembler :(
Ich muss langsam mal anfangen assembly zu lernen ;)
radbruch
13.02.2007, 17:00
Toll, danke an Henk und Peter. Auch die pps-Präsentation ist einsame Spitze, mein Favorit ist "Schalte asuro ein" mit entsprechendem Bild.
Im Moment ist mir das alles noch zu schwierig. Ich habe zwar schon in Assembler programmiert, allerdings waren das diverse Mikroprozessoren wie z80, 8080 oder 6809. Mit risc-Prozessoren hatte vor dem asuro noch gar keinen Kontakt. Aber ich vermute, dass wird sich bald ändern.
Gruß
mic
Ich habe auch vergessen VIELEN VIELEN DANK zu sagen ^^
noch ein mal:
VIELEN VIELEN DANK an HENK und PETER ^^
vielen Dank für die Veröffentlichung der Bootloader-source!
Leider kann ich das .rar-file nicht entpacken.
Es scheint nur die Datei readme.txt von 1154 Bytes zu enthalten, die sich nicht öffnen lässt.
Woran kann das denn liegen? Was mache ich falsch???
Gruss Heiner
Bei mir funktioniert es wunderbar. In der rar-Datei ist ein Ordner und die readme.txt. Mit welchem Programm hast du es entpackt? Ich verwende WinRAR.
damaltor
15.02.2007, 10:53
probiers mal mit der konsolenversion (geht glaub auch unter windows: unrar datei.rar)
danke Pascal und danke damaltor!
Hat mit WinRAR problemlos geklappt. Mein Power-Archiever und WinZip wollten mir nicht helfen....
Nun heisst es nur noch, die Sache zu verstehen
Gruss Heiner
Hallo Heiner, wenn du Fragen hast, werde ich versuchen sie zu beantworten. Das gilt natürlich für alle an diesem Thema Interessierten!
Peter (Ronny10)
Hallo Peter,
darauf kopmme ich gerne zurück, wenn ich mal so richtig angefangen habe und es klemmt!
Gruss Heiner
das kannst du machen. es gibt einen alternativen bootloader. hier:
http://home.planet.nl/~winko001/Asuro/Bootloader/AsuBtlPagFrm.htm
auf der homepage von Henk
habe ich das richtig verstanden: atmega168 + dieser boatloader und ich kann den atmega168 als ersatz für den atmega8 samt IR flaschen und aller sonstigen software nutzen?
damaltor
29.10.2007, 12:20
ja, das müsste es theoretisch gewesen sein. evtl musst du die fusebits noch setzen, ich würde folgendes vorschlagen:
Low Fuse: 0xD6
-Takt Wird NICHT durch 8 geteilt
-Takt wird NICHT am Pin PB0 ausgegeben, der Pin kann normal genutzt werden
-Externer Quarz, Volle SChwingung (Motoren stören sonst), Längstmögliche Start-Up-Zeit (ca 100ms) falls die batterien etwas leerer werden)
High FUse: 0xD5
-Reset Pin ich KEIN I/O pin (sonst wäre flashen per isp nicht mehr möglich)
-Debugwire ist abgeschaltet
-ISP bleibt eingeschaltet, falls du es nochmal brauchst
-Watchdog ist nicht dauerhaft per hardware aktiviert, sondern wird bei bedarf softwaremäßig gestartet
-Der EEPROM bleibt bei einem "Chip Erase" erhalten
-Brown Out Detection ist Eingeschaltet. WEnn die BAtteriespannung unter 2,7V fäält wird der PRozessor in reset gehalten (evtl wäre hier die nächsthöhere Stufe, 4,3V, angebracht. wenn dir das lieber ist melde dich mal)
Extended Fuse: 0xF8
Bootloader-Bereich ist 1024 Words groß (ist ne schätzung, es sollten auch 512 words reichen. probiers mal.)
NAch reset wird der Bootloader gestartet
ACHTUNG: das bereits kompilierte hex-file ist für einen mega8, du musst also auf jeden fall neu kompilieren!!
flashen kannst du dann mit dem auf der page verfügbaren software "OConsole", hyperterminal/minicom werden weiter funktionieren wie gewohnt. das flash tool wird nicht mehr gehen.
hi damaltor,
danke für die info,
jetzt ist es die frage: was gewinne ich ausser dem größeren speicher? So richtig bin ich aus der doku bei atmel nicht schlau geworden. Die anzahl eder aus/eingänge ändert sich wohl nicht, oder?
damaltor
29.10.2007, 12:37
die beiden chips sind pinkompatibel. sie haben die gleiche bauform, und die gleiche pinbelegung. eigentlich gewinnst du (sichtbar) nur den doppelten speicher, intern ist der prozessor etwas moderner (er hat zB drei Fuse bytes anstelle der zwei des mega8), das dürfte dir aber nicht auffallen beim arbeiten. evtl ist der eeprom auch doppelt so groß, das weiss ich aber nicht aus dem kopf. der mega168 hat 16kb speicher (minus 1 für den bootloader), und ist ansonsten mehr oder wneiger identisch.
ok,
da ich einen weg suche um bei der verwendung der erweiterungsplatine nicht auf die linienerkennung verzichten zu müssen werde ich wohl nach anderen möglichkeitenn ( https://www.roboternetz.de/phpBB2/viewtopic.php?t=9635 ) ausschau halten...
damaltor
29.10.2007, 12:54
die einfachste (naja...) lösung wäre, eine extra platine aufzusetzen, auf die du einen meg16 oder 32 steckst, und dessen richtige pins durch lange stifte in den original-sockel des mega8 verbindest, ungefähr wie beim asuro eval board (asurowiki!)
somit könnte ich dann - nur theoretisch, oder auch praktisch? - die zusätzlichen ressourcen eines atmega16, bzw. 32 auf diesem steckboard nutzen, ohne die normalen funktionen des asuro zu beeinträchtigen? Könnte also z.b. die ansteuerung und auswertung der liniendioden nach oben zu den zusätzlich ein/ausgängen verlegen?
Wenn das so einfach ist - wieso gibt es nicht schon eine reihe solcher lösungen?
damaltor
29.10.2007, 16:53
naja ganz einfach ist es eben leider nicht...
du müsstest...
-eine platine aufbauen, auf der ein meg32 o.ä. sitzt
-die richtigen pins des mega32 finden, welche beim meg8 des asuro benutzt werden (z.B. PD6 für die frontled...)
-diese pins mit litzen oder anderer verdrahtung (wenn du lust hast, kannste auch ätzen) so anordnen, dass sie dem meg8 des asuro entsprechen, und auf zwei reihen mit je 14 langen pins legen, welche nach unten aus der neuen platine ragen
-dann kannst du diese langen pins in die fassung des asuro-meg8 stecken. jetzt werden die programme die du schreibst (für den meg32) ausgeführt, und die bereits belegten pins (wie zB die frontled) über die langen stifte und über die alte fassung des meg8 zur asuro-hauptplatine "durchgeschleift", und alle noch unbenutzten pins des meg32 ständen dir frei zur verfügung.
nachteil: flashen per IR fällt erstmal weg, bis du einen bootloader im meg32 hast (das alte henne-ei-problem: du brauchst IR zum flashen, aber ohne einen bootloader geflasht zu haben hast du kein IR)
könnte recht wackelig werden, wenn die platine nur mit den pins in der fassung befestigt ist, man sollte drüber nachdenken das bohloch der asuro platine zur besseren befestigung zu nutzen
ausserdem ist es absolut nicht empfehlenswert, den quarz so weit vom prozessor zu haben, die pins für den quarzanschluss des meg32 würde ich deshalb mit einem neuen quarz auf der neuen platine verbinden und den alten quarz des asuro einfach unbenutzt lassen.
der originale meg8 fällt dann natürlich weg!
fragen hierzu noch:
- braucht der meg32 noch eine zusätzliche beschaltung auf seinem board, oder reichen die von unten hochgelegten pins des atmega8 - um erstmal die funktion des meg8 zu übernehmen?
- wäre es denkbar, dass evtl. arexx bei dem flaschen des bootloaders hilft?
damaltor
30.10.2007, 00:00
die grunschaltung sollte wohl reichen, sofern die pins vcc, gnd, avcc und reset sowie rx und tx verbuden sind. beim flashen hilft arexx wohl nicht, aber man kann mit ein paar wenigen klienteilen eine kabelgebundene möglichkeit zusammenbasteln (kleine anerkung: wenn du einen stecker auf die platine mit dem meg32 baust, der die pins reset, miso, mosi,sck,vcc,gnd hat, kannst du den asuro ab sofort kabelgebunden flashen (den meg32).... dann sparst du dir das ganze infrarot ding.) schau mal im roboternetz-wissen nach dem avr tutorial.
Hallo Inka,
der Bootloader ist von mir in ASSEMBLER geschrieben. Wenn du dazu Unterstützung benötigst, kann du mir schreiben. So einfach, wie Damaltor sich das vorstellt, ist eine Adaption auf einen anderen ATmega nun doch nicht! Ich hätte da für dich eine ATmega32-Platine, die du als Ersatz für den ATmega8 des ASURO einsetzen könntest. Diese Platine ist ein Prototyp der ersten Serie eines von mir entwickelten Mikrocontroller-Experimentiersystems, das bald über AREXX auf dem Markt erscheinen wird. Dazu gehört auch ein Programmieradapter für den Parallelport, mit dem du, unter Verwendung von PonyProg2000, dass fertige Programm, über die auf der Platine vorhandene ISP, zum ATmega32 übertragen kannst. Wenn du also ersthaftes Interesse hast und dir die Umbauarbeit machen willst, schreibe mir. Ich würde dich gerne, unter der Voraussetzung das du mir zeitweise Informationen über den Fortgang deiner Arbeit zukommen lässt, bei diesem Projekt unterstützen.
Gruß
Peter (Ronny10)
damaltor
30.10.2007, 19:20
schade, ich dachte es wäre einfacher... aber der mega32 hat ja auch einen etwas anderen befehlssatz und ist nicht 100%ig kompatibel zum meg8.
aber na gut... ;)
hallo Peter,
natürlich würde ich mich über deine unterstützung sehr freuen...
@damaltor
ist der befehlssatz des 32 um bestimmte befehle dem 8 gegenüber erweitert, oder grundverschieden?
Hallo Inka, hallo Malte (Damaltor)
eure Nachrichten habe ich gelesen. Das System nennt sich MDES = Mikrocontroller-Digitaltechnik-Experimentier-System und besteht z.Z. aus 12 Modulen. Es ist von mir so entwickelt worden, dass man damit wirklich experimentieren kann d.h. Mikrocontroller-Schaltungen für die verschiedensten Anwendungen lassen sich damit sehr einfach aufbauen (ohne Lötarbeiten) und genau so schnell auch wieder demontieren, so dass man die Module zu anderen Aufgabenstellungen wieder verwenden kann. Die Basis dazu bildet die erwähnte Platine mit dem ATmega32, der mit 16MHz getaktet wird (Quarz) um das Maximum an Leistung herauszuholen. Bitte schickt mir eure E-Mail-Adressen, damit ich euch die MDES-Dokumentationen, Teil1 und Teil2, zuschicken kann. Die Dokumentation ist so weit fertig, dass man alle Module aufbauen kann und z.B. mit einem LED-Modul eine Ampelsimulation programmieren kann. Teil3 der Dokumentation, der sich über entsprechende Beispielprogramme mit den anderen Modulen auseinandersetzt, ist in Bearbeitung. Im Moment habe ich hier nur Leerplatine d.h. ihr müsstet diese selber bestücken. Das endgültige System wird es auch fertig aufgebaut geben, damit z.B. Schulen und Interessenten die Probleme beim Aufbau eines solchen Systems hätten, damit etwas anfangen können!
P.S. Im Moment habe ich durch andere Projekte etwas Stress. Kann also einige Tage dauern, bis ich euch die Doku zuschicke!
Gruß
Peter (Ronny10)
damaltor
31.10.2007, 14:01
super, danke! meine mailadresse ist damaltor@gmail.com , ich freu mich drauf. ich habe einen großen grundstock an teilen zuhause, gibt es irgend was besonderes was man im allgemeinen nicht rumliegen hat, und was man noch bestellen sollte? ich will eh noch mal bei reichelt bestellen, dann ware das nicht schlecht zu wissen.
Sternthaler
03.11.2007, 01:55
Hallo Ronny10,
ich bin auch total interessiert an einem modularen Experimentiersystem und würde mich gerne in die Liste der Doku-Empfänger einreihen.
Wie auch damaltor, würden mich natürlich Bauteile und auch Preise interessieren.
Gruß Sternthaler
P.S.: E-Mail-Adresse kommt per PN, wenn du so nett bist und mich auch beglückst.
Hallo Peter kannst du mir die Doku auch mal schicken: ggerrit1@web.de
mfg liggi
damaltor
09.11.2007, 14:59
Da der User Ronny10 mich seit kurzer Zeit per email angreift, und dabei meiner meinung nach recht persönlich wird, möchte ich hier noch einmal für alle sichtbar eine mündliche Verwarnung aussprechen. damit ihr das nachvollziehen könnt, hier ein abriss aus der email-korrespondenz, BEgonnen hat das ganze in der Diskussion um das MDES, was er uns zugeschickt hat; im Beispiel werden an einem Mega32 8 leds auf einmal angeschlossen:
-ist es gut, dem prozessor gleich innerhalb der ertsen paar versuche 160 mA auf einem port zuzumuten? ich gehen davon aus, dass die leds je 20mA bekommen, und hundert sollte doch der prozessor nur bekommen... wenn ich mich recht erinnere, 100mA für port a, und 100mA für die restlichen ports zusammen, oder? kann aber sein dass ich mich irre.
sag mal, die Formel U = R * I ist dir doch bekannt, oder?
Eine LED mit 20mA betreiben? Bischen zu viel des Guten
oder? 20mA ist die maximale Stromlast für einen Portpin
bei den ATmega's. Ein zehntel, also 2mA für eine LED,
kommt der Sache schon näher, wir wollen doch keinen
Raum damit ausleuchten, sondern nur ein Signallicht
erzeugen, oder?
Da ich keine LowCurrent-LEDs nutze, und 20mA meines erachtens kein Problem darstellen, war ich etwas verwundert. trotzdem verunsichert, nochmal nachgelesen. normale leds sollten etwa 20mA bekommen. Das habe ich ihm geschrieben. Seine Antwort:
Dann werden sich deine ATmel's aber freuen!
Hier brach der mailkontakt kurze zeit ab, ich habe mich erneut bei ihm gemeldet. Wir einigten uns darauf, dass der Strom je nach verwendeten LEds ohnehin angepasst werden müsste. Soweit so gut.
Heute bekam ich zuerst eine Email:
Hallo Malte:
--ZITAT MEINES BEITRAGES--
Das Problem ist, dass dein char nicht "unsigned" ist. ein unsigned char kann werte von 0-255 aufnehmen, ein normaler char kann nur werte von -218 bis 217 annehmen. die endlosschleife wird also nie beendet, da 200 nie erreicht werden. ändere das mal in "unsigned char k".
--ZITATENDE--
Wenn du dich in der Materie nicht auskennst, schreibe besser nicht's
und halte dich zurück, du machst dich nur lächerlich mit deinem
Pseudowissen!
Es ist -128 bis +127!
Peter
Welche ich erfolgreich ignorierte. Ganz kurze zeit später kam noch eine:
Malte, lasse es beser:
--ZITAT MEINES BEITRAGES--
i2c hat keinen interrupt, da hat henk schon recht. i2c hat NUR data (SDA) und takt (SCL). du meinst vermutlich den baustein PCF8574(A), die 8bit-Porterweiterung. diese generiert einen interrupt, welcher aber vom i2c vollkommen unabhängig ist.
--ZITATENDE--
Sebstverständlich hat auch das II2C-Interface einen eigenen Intrruptvektor:
Vector Nr. 20 = Adresse $026 = TWI-Interrupt beim ATmega32
Vector Nr. 18 = Adresse $011 = TWI-Interrupt beim ATmega8
Zwei Beiträge von dir und nur Müll! Du solltest mehr lesen, bevor du
mit deinem Unwissen die Leute verunsicherst!
Peter
mir fällt grad auf: es heisst I2C und nicht II2c. die alternative wäre IIC, was aber recht ungebräuchlich ist.
Daraufhin meine Antwort:
Ich denke, du solltest dich wirkich beherrschen. Wenn du meinst, meine
Beiträge kritisieren zu wollen, dann tu das bitte im Forum, oder sag
einfach deine Meinung, ohne diese sinnlosen Angriffe zu starten. Wenn
dir meine Beiträge nicht passen, lies sie nicht. Wenn du meinst, dass
sie falsch sind, schreibe deine Meinung dazu.
Ich spreche dir hiermit eine mündliche Verwarnung wegen persönlichen
Angriffen auf forum-user aus. Halt dich zurück.
Das i2c-protokoll hat keine Interrupt-LEITUNG. was der controller mit
empfangenen daten macht, und ob er daraus einen interrupt generiert,
hat mit dem i2c-protokoll nichts zu tun.
Malte
Da dieses Problem mich betrifft, und ich die verwarnung ausspreche, möchte ich euch das gern plausibel machen um nicht den eindruck der willkür zu erwecken.
-> Hiermit spreche ich Ronny10 eine mündliche Verwarnung aus. <-
Sollte jemand was dazu sagen wollen, dafür oder dagegen, nur zu ;)
Sternthaler
10.11.2007, 01:22
Nun ja,
ich denke auch, dass Einwände bzw. Korrekturen zu fehlerhaften Beiträgen wohl im Forum am besten zu machen sind. Zum einen bekommt man einen Dämpfer, und zum anderen sind die Hinweise dann für alle zu lesen und jeder hat etwas davon. (Außerdem sollte es wohl jedem gestattet sein auch mal Fehler zu machen.)
Der, hier als Zitat aufgeführte Beitrag mit dem falsch angegeben Wertebereich, wurde in dem entsprechenden Thread immerhin nach nur 2 Stunden und 50 Minuten korrigiert. Manche User reagieren ja noch nicht einmal, wenn sie direkt angesprochen werden.
Ausserdem erscheint auch mir die per E-Mail gestellt Frage, ob ein ATmega tatsächlich 8 LED's treiben kann, als notwendig. Wenn keine Angaben in irgendwelchen vorher ausgetauschten Mails zur Stromaufnahme vorhanden sind/wären, dann würde auch ich erst einmal von den Standard-LED's ausgehen. Die werden nun mal mit ca. 20 mA angegeben. Auch Herr Ohm kann da nichts dran ändern.
Dann gibt mir die Antwort auf diese Frage ein merkwürdiges Rätzel auf: Wenn ich nur ein 'Signallicht erzeugen' möchte, warum muss ich dann 8 LED's anschließen?
Gruß an alle, die Spaß am Roboternetz haben, vom
Sternthaler
damaltor
10.11.2007, 12:25
Danke.
:)
Habe eben eine standard-led mit 2mA angeschlossen. da kommt wenig bis gar nichts...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.