Hallo ich wollte mir ein Arduino Mega 2560 Board kaufen und habe aber noch folgende Fragen dazu, die mir ein Arduino Nutzer bestimmt schnell und einfach beantworten kann. 1. Kann man mit WinAVR GCC im Atmel Studio diesen Controller (AT Mega 2560)Programmieren? Ich habe gelesen, dass wohl der Speicher nicht komplett genutzt werden kann. Was muss ich beim Compilieren beachten bzw. einstellen damit alles fehlerfrei funktioniert? Prinzipiell würde mir auch die Hälfte des Speichers reichen, die Frage ist nur ob der Compiler das fehlerfrei mitmacht. 2. Wenn ich das fertige HEX File habe, kann ich es über die Arduino Software über USB an das Board schicken oder welche alternative Software würde funktionieren um die Bootloaderprogrammierung zu nutzen. Das Board besitzt ja USB über einen zusätzlich programmierten AT Mega8 der wohl ein standardisiertes Protokoll nutzt. Möchte unbedingt über USB programmieren und nicht die ISP Schnittstelle nutzen müssen. Ich hoffe das ich das Problem verständlich mitteilen konnte.
Fangen wir mal vorne an. Programmieren mit AVR Studio? - ja Kompletter Speicher kann nicht genutzt werden? - Blödsinn Einstellungen? - Die üblichen Projekteinstellungen, wie bei jedem anderen Controller auch Hexfile mit Arduino Bootloader laden? - Soll irgendwie gehen. Die Arduino Software ist irgendein propietärer Kram, vielleicht auch Java, keine Ahnung jedenfalls kein C. Wen das nicht stört, der kommt da sicher auch mit klar. Ist wahrscheinlich gar nicht so schlecht, zumal es da jede Menge Beispiele gibt. Für mich kam aber nur AVR Studio und richtiges C in Frage. Der Bootloader arbeitet mit dem STK500-Protokoll. D.h. man soll grundsätzlich vom AVR-Studio das Ding mit dem Bootloader uploaden können. Oder über Kommandozeile mit Avr-Dude. Der Bootloader startet nach dem Reset und springt nach einem Timeout, einigen ms oder so, in die Applikation, also auf Adresse 0x00000. Das Problem ist, daß zum downloaden der Chip resetted werden muß und zwar über die DTR-Leitung des USB-to-Serial Controllers.Das macht das AVR-Studio, bzw. der Avr-Dude, aber nicht. Manuelles Reset bringt nichts, da der Timeout zu kurz ist. Irgendeinen Hack habe ich irgendwo im Internet gefunden, womit das gehen soll. Habe ich kurz ausprobiert,funktionierte aber nicht. Hat mich dann allerdings aber auch nicht weiter interessiert, da ich das Board ohnehin über JTAG programmiere (und debugge). Google mal nach "Arduino STK500 Bootloader", ich glaube damit habe ich das auch gefunden. Keine Ahnung mehr, wo ich das war. Es gibt aber hier einen Bootloader mit Anleitung in C, den man ohne weiteres auch auf dem Arduino installieren kann. Damit funktioniert es wunderbar. Und man weiß wenigstens, warum es funktioniert. Warum willst du ISP nicht benutzen? Die Fuses kannst Du mit 'nem Boot-loader ohnehin nicht verändern.
Erstmal vielen dank für die Antwort. Bezüglich des Speichers steht zum Beispiel unter http://www.watterott.com/de/Arduino-Mega-2560 # 256KB Flash (im Moment nur 128kb nutzbar, da der GCC Compiler begrenzt ist) Das war der Grund warum ich frage. Das Problem gibt es also nicht mehr? Wie du selber schreibst möchte ich auch mit C und AVR Studio programmieren. Die Arduino-Software hätte ich halt maximal zum Programmieren genutzt. Hatte ja die Hoffnung, dass man da als Quelle ein Hexfile nehmen kann und somit sogar die von dir genannten Reset-Leitungs Probleme umgehen kann. Wäre halt schade wenn ich erst mal einen neuen Bootloader suchen muss das sollte ja wenn möglich out of the box funktionieren. Den ISP würde ich nur anfangs nutzen um die Fuses zu programmieren, danach soll das Gerät sozusagen von jeden beliebigen Notebook aus mit neuer Firmware bestückbar sein, ohne einen extra Programmierdongle nutzen zu müssen. Außerdem kommt das Board in ein Gehäuse wo ich keine extra ISP Anschluss raus führen möchte bzw. jedes mal das Gehäuse öffnen muss.
Also das mit den 128K könnte daher kommen, daß der 2560 tatsächlich nur 128K Speicher hat - und zwar 128K Words(= 256K Bytes). Da wird öfter mal was durcheinander gebracht. mfg.
Aber die würden es ja nicht auf der Internetseite schreiben wenn es nicht tatsächlich Probleme gäbe. Beitrag "Volle Adressierbarkeit (256k) im Programmspeicher bei Mega 2560 ?" Dort steht was zu eventuellen Problemen. Also nochmal an Arduino Erfahrene. Ist es möglich mit der Arduino GUI "fremde" Hex Files zu programmieren also zb. ein Arduino Projekt anlegen und kompillieren, dann Hex File austauschen und schließlich Programmieren über die Arduino Software?
Tipp: Frag zusätzlich in einem Arduino Forum nach bzw. suche dort vor der Frage nach entsprechendem. So viele Arduino-User, und speziell auch noch zu diesem rel. neuen fetten Board, gibt es hier nicht.
Jetzt fällt es mir wieder ein. Es gibt in der Tat ein Problem mit dem EICALL-, bzw. EIJMP-Befehl, der vom Compiler nicht richtig umgesetzt wird. Das I steht für Indirekt, das E für Enhanced Die Controller <= 128K kennen diesen Befehl gar nicht. Die kennen nur ICALL bzw. IJMP. Genau wie der Compiler auch. Dazu muß neben dem normalen Adressregister (16 Bit) noch das EIND-Register gesetzt werden, damit die oberen 128K adressiert werden. Jetzt sind wir auch wieder bei den Word-Adressen. Lässt sich lösen, indem man die Funktionen, die von ausserhalb dieser beiden Blöcke aufgerufen werden, mit einem Funktionspointer aufruft und vorher das EIND per Hand setzt. Wenn das Programm denn so lang wird. In jedem Falle braucht man das, um vom Bootloader in die Applikation zu springen (und umgekehrt). mfg.
Zum ATmega2560 kann ich nichts sagen. Aber Arduino nutzt WinAVR und avrdude. Wenn du also mit C entwickeln willst, kannst du gleich WinAVR und einen Editor deiner Wahl nutzen. Wenn du schon ein hex-File hast, kannst du es direkt mit avrdude flashen. Hex-Files mit der Arduino-GUI laden und flashen funktioniert meines Wissens nicht. Allerdings muss der Reset nicht zwingend mit der DTR-Leitung erfolgen. Ein manueller Reset funktioniert ebenfalls poblemlos.
Die Vorgängerversion des Boards Arduino Mega (AT Mega 1280) wäre unter Umständen also besser geeignet? Der Chip sollte mit GCC nicht diese Probleme besitzen?!?!? und auch der USB Chip ist ein ftdi, der wohl weniger speziell angepasst ist mit zusätzlichen Steuerleitungen. Ich habe bloß noch keine günstige Bezugsquelle dafür gefunden. Wenn ich das so höre, lohnt sich der Kauf des aktuellen 2560 Boards wohl nicht, wenn ich nicht die Arduino Software nutzen möchte. Schließlich möchte ich für den Preis nicht erst solch üppigen Probleme lösen müssen. Kennt noch jemand ein Board mit AT Mega 1280 und USB, optional noch mit SD-Slot?
Bis deine Programm so groß werden, dass du tatsächlich in dieses Problem läufst, ... fällt noch viel Schnee. Und zwar in der Wintersaison 2011/2012
Das mag gut sein aber schön ist es trotzdem nicht. Ich weiß ja nicht welche Probleme das noch weiter mit sich führt besonders im Bezug darauf, wenn ich eventl. einen alternativen Bootloader anpassen müsste. Hab ja oben schon erwähnt das mir ansonsten auch der halbe Speicher reichen würde, deswegen interessiert mich ja auch das Vorgängerboard, welches wohl aber sogar teurer ist als der "größere" Nachfolger.
Nur nicht gleich die Flinte ins Korn werfen. Bootloader.hex ist der Bootloader (kaum zu glauben) Burnit3.exe das dazugehörige PC-Programm (XP). mfg.
Danke für den Bootloader. Werd mir das aber erstmal gründlich überdenken ob ich nicht doch lieber das Vorgängerboard nehme. Ich frag nochmal in einem Arduino Forum bezüglich der Programmierung etc.
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.