Hallo Ich versuche gerade den MegaLoad Bootloader auf meinem ATMEga128 zum laufen zu bringen. Jedoch gibt es Probleme. Ich versuche schon den ganzen Tag das Bootloader File in ICCAVR zu übersetzen. Jedoch erhalte ich immer Fehlermeldungen, dass Bibliotheken nicht geöffnet werden können. Ich habe lediglich das File an meinen AVR angepasst. Hat jemand einen Tipp für mich woran es liegen könnte? Ansonsten würde ich mich auch über ein übersetztes hex File freuen. Würde es aber am liebsten selber machen. danke euch!
Ich habe den loader für den WinAVR portiert. Kannst Du unter Codesammlung finden. Einfach nach "Megaload" suchen. Bei angabe des gewünschten USART kann ich Dir ein .hex file bauen.
erstmal danke aber es geht leider immernoch nicht! habe mir auch gleich mal ein hex file für meine atmega128 erstellt. habe im make file alles auf meinen MC eingestellt. die fuses stehen eigentlich auch richtig. nur will das megaload programm nicht mit meinen mc kommunizieren. auch mit einem terminal programm empfange ich kein zeichen von mc? habe aber mit eine anderen geschriebenen programm schon mit meinen mc per uart0 gesprochen. naja weiss auch nicht so richtig woran es liegt.
Ja auf meinen ATMega128 läuft nun der Bootloader. Doch leider will er noch nicht auf meinen AT90Can128. Ist doch eigentlich das gleiche wie beim Mega128? müsste doch mit den selben File funktionieren.
Nicht ganz, der AT90CAN hat meines Wissens nach einige IO- SFR-Adresse verschoben, möglicherweise ist davon auch die UART betroffen, was dann den Bootloader nicht funktionieren lassen würde. Sie sind also nicht "binärkompatibel". Aber wenn Du statt der "iom128.h" eine passende Header-Datei fü den AT90CAN128 einbindest und neu übersetzt, sollte es gehen. Jörg
hallo plitzi du hattest natürlich recht! hätte icha uach selber drauf kommen könne, dass die adressen nicht 100% stimmen. naja jetzt wird der mc erstmal von megaload gefunden. jedoch bleibt er beim flashen einfach stehen.
Dann wird möglicherweise der bootloader selbst überschrieben, ist mir auch schon passiert :(
Datz hätte ich auch noch Fragen. Ich muss auch irgendwie sofort auf den Bootloader umsteigen, da das mit dem ATMEGA128 und den MOSI/MISO-Durcheinander jetzt so aussieht, dass die jetzt genau auf meinem UART sitzen. Das heißt, wenn ich mittels Serial Downloading arbeite, dann muss der MAX232 raus. Aber das ist nmen anderes Thema. Vom Verständnis her muss ich also die Fusebits setzen, den Bootloader raufladen, kann dann den Programmierstecker entfernen, MAX232 stecken und mit Megaload arbeiten? Was muss ich beim kompilieren meines Codes im Makefile beachten? Der darf ja dann nicht mehr den kompletten Flash-Speicher benutzen. Der reduziert sich wegen des schon vorhandenen Bootloaders.
Wenn Du den code aus http://www.mikrocontroller.net/forum/read-4-183976.html#new verwendst, musst Du im makefile nur - die richtige MCU eintragen (hier MCU=atmega128) - die richtige quarzfrequenz eintragen (z.B. F_CPU=16000000) - den beginn des bootloaders eintragen (für mega128 BOOTSTRT=0x1FC00) ist meiner meinung nach recht gut kommentiert. im main.c den richtigen USART ausählen - #define UART 0 // für den USART der sich mit dem ISP die pins teilt, bzw - #define UART 1 // für den zweiten USART Zudem empfehle ich eine feste baudrate vorzugeben. Bei 16MHz hat sich 38400 bestens bewährt. MAKE und einfach das .hex-file programmierten. Mit den fuses kann ich Dir hier aus dem stehgreif nicht helfen, aber bootsz muss für 512 worte programmiert sein und bootrst muss programmiert sein. Viel Erfolg Werner
Vielen Dank für die gute Einstiegsinfo. Die Punkte hatte ich sogar schon erledigt (bis auf die feste Baudrate). Meine Frage geht eher dahin, wie das Hauptprogramm aussehen muss, also was ich mittels Megaload da reinlade? Es kann doch nicht die gleiche Größe wie vorher haben, weil die Flashgröße sich ja auf Grund des Bootloaders verringert.
Das mit der "Restgröße" ... Das ist eben so, wenn ich ein auto habe, hat dieses einen tank. Der braucht platz wiegt auch etwas - braucht also selbst wieder sprit. Die normalen kompromisse die ich im leben immer wieder eingehen muss ;) Als hilfe zeigen ja die "standard" makefiles mit avr-size die größe des erzeugten codes an. Wobei ich dazu übergegengen bin der avr-size aufruf im makefile mit einem "-x" switch zu versehen, da man bei ausgabe von HEX zahlen einen direkteren bezug zur startadressen des bootloaders hat.
Okay, also einfach schauen, dass der Code nicht zu lang wird. Dennoch verwirrt mich das alles ein wenig. Ich schaue gerade mal im Makefile für den Bootloader. # BootLoader mega64 1k = 0xFC00 = (0x8000words<<1)-0x400bytes #BOOTSTRT = 0xFC00 # BootLoader mega128 1k = 0x1FC00 = (0x10000words<<1)-0x400bytes BOOTSTRT = 0x1FC00 Im Datasheet des Atmega 128 steht als Startadresse FC00, wenn man die 1024 words nehmen will. Im Makefile steht aber 1FC00 und beim mega 64 steht, dass was beim 128er im Handbuch steht. Das verwirrt mich. Außerdem machen mich die Adressen schwach. Laut Startadresse und Endadresse hat der Atmega128 nur 64k Flash (0000-ffff). Aber ich gehe mal davon aus, dass das alles in words gesehen wird und damit sich verdoppelt. Aber wie ist das mit den Startadressen richtig? Meine Fuses sind lt. Bild eingestellt (Quarz mit 16 Mhz).
Flash-Größe AtMega128 == 64k WORTE == 128k Bytes == 0x10000 Worte = 0x20000 Bytes Größe Bootloader MegaLoad <= 512 Worte == 1024 bytes == 0x400 bytes Weil der Linker die Startadresse/den Offset in bytes erwartet: Offset des Bootloader im Flash ist also 0x20000 bytes - 0x400 bytes = 0x1FC00 bytes (oder 0xFE00 Worte) Das Datenblatt der AVRs spricht immer von "Worten". Hex rechnen ist gar nicht so schwierig (und hilft beim umrechnen von US-Meilen in Kilometer ;-))
I am using ATMEL's ATmega128. But I don't get sucess to load the Bootloder mode. If you have any solution please send to me.
@Werner: Danke für die Erklärung. Ich benutze im Moment doch erstmal den Bootloader nicht. Also habe dementsprechend meine Elektronik umgebaut (Leiterbahnen durchtrennt und Drähte gezogen). Da ich den später aber wieder brauchen werde, wird das Thema mit Sicherheit noch interessant werden.
Da eigene Funktionen im Moment nicht laufen (siehe anderer Thread) und ich endgültig den Bootloader mal hinbekommen muss, probiere ich es mit dem MegaLoad GCC von Werner von dem Thread: http://www.mikrocontroller.net/forum/read-4-183976.htm Gerade weil dieser schon mit dem ATmega128 getestet wurde. Folgende Konfigurationen wurden im Makefile vorgenommen: MEGALOAD_NET = -DMEGALOAD_NET EEPROM = LOCKBIT = UART = -DUART=1 BAUDRATE = -DBAUDRATE=19200 F_CPU = 16000000 BOOTSTRT = 0x1FC00 MCU = atmega128 Nach obigen Konfiguration wurden dann auch die FUSE-Bits gesetzt. Dann wurde alles kompiliert und mit PonyProg geflasht. Danach habe ich MegaLoad.NET V4.0b1 gestartet, konfiguriert und meinen Controller neu gestartet. Unter Megaload habe ich dann den Monitor geöffnet und "Send Reset" gedrückt. Allerdings gibt es keine Rückmeldung. Die Frage ist, wo jetzt was passieren sollte?`
Flash-File ausgewählen CommPort + Speed eingestellen Haken beim Flash programming unter Messages steht jetzt: Open Flsh Hex File Flash Hex File OK xxxxx Bytes AtMega resetten (nicht mit dem buttin, der tut nichts, sondern reset taster/stecker ziehen und wieder stecken etc.)
Und schon wieder nichts passiert: "Ready, Waiting for target" .... Kann doch nicht sein.
Also .. war doch wieder ein Fehler von mir. Der Bootloader geht. Hatte diesmal den falschen COM-Port gewählt. Also mit MEGALOAD gehts perfekt.
Hallo bekomme beim windowsprogramm einen fehler beim auswählen der hex error in flash hex file:1042 was bedeutet das???? danke
Das File ist in Ordnung. Eine Erklärung wäre, dass es nicht in den AVR passt. Sprich, das es für einen anderen AVR erzeugt wurde, als du verwendest. Übertrage das File doch einfach mal mit ISP, dann siehst du ja ob der AVR rennt wie Sau. Ferner kannst du natürlich dem Autor von Megaload eine Mail schreiben. Der Mann ist sehr freundlich und hilft sicher wenn möglich.
Hallo also über ISP funktioniert es ja und der mega hat ja 128KB das Programm ist aber nur <40kb. eine mail habe ich versucht aber diese kamnm immer wieder zurück spamblocked.
@Peter bzw. @all: Ich kriege den Bootloader nicht mit meinem AT90CAN128 und MegaLoad 6.3 zum laufen. Funktioniert das Ganze nur mit ner niedrigeren MegaLoad-Version? Hat jemand den BL mit dem CAN128 in Betrieb und kann bitte sein Hex-File (oder seine Sourcen) mal hochladen? Ich hab schon alles mögliche probiert - manchmal geht gar nichts, manchmal jammert er, dass er Page0 nicht schreiben konnte oder so ähnlich...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.