Ich möchte gerne ein fertig kompiliertes HEX-File auf einen AVR-Chip laden (aus Windows od. Linux heraus).gehe ich richtig in der Annahme, dass ich da eine firmware auf dem chip brauche, damit er vom system erkannt wird? Was brauche ich da genau? Es sollte auch möglich sein, dass drittanwender das hex-file uploaden können, also mit einer kleinen (freeware?-)software, also quasi ei firmware-update- tool?
Jan schrieb: > gehe ich richtig in der Annahme, > dass ich da eine firmware auf dem chip brauche, damit er vom system > erkannt wird? Nicht zwingend, mit einem ISP Programmer geht es auch one Bootloader.
Du brauchst nur ein Programmer (z.B. AVR ISP mk2) und AtmelStudio oder eine anderes Tool zum flashen. Jan schrieb: > gehe ich richtig in der Annahme, > dass ich da eine firmware auf dem chip brauche, damit er vom system > erkannt wird? Nein, brauchste alles nicht
:
Bearbeitet durch User
Einen AVR mit Usb, oder eine Bastellösung mit V-Usb wäre am sinnvollsten wenn der Endnutzer die Möglichkeit haben soll den Code zu erneuern. Möglich wäre es auch über Uart oder mit einer SD - Karte. Dafür mußt du dir aber immer noch einen SPI - Programmiergerät zulegen. Wenn es nur um einen kleinen Attiny geht, könntest du auch einen "cheepit sparrow" verwenden der über die Audioleitung programmiert wird. Einfach wird das Vorhaben als Anfänger allerdings nicht.
ja genau, der endbenutzer sollte das ohne zusätzlich hardware können, es muss also der USB-anschluss irgendwie erkannt werden. was meinst du mit AVR mit Usb? gibt es da spezialmodelle? und was ist V-Usb? Meinst du damit so etwas wie einen bootloader beim Arduino? Gibt es etwas ähnliches auch in der nicht-arduino welt? > Einen AVR mit Usb, oder eine Bastellösung mit V-Usb wäre am sinnvollsten > wenn der Endnutzer die Möglichkeit haben soll den Code zu erneuern.
Jan schrieb: > ja genau, der endbenutzer sollte das ohne zusätzlich hardware > können, es > muss also der USB-anschluss irgendwie erkannt werden. > was meinst du mit AVR mit Usb? gibt es da spezialmodelle? ATMEGA32U4 zB ,ist auch in der Arduino Welt zu finden und was ist > V-Usb? Virtual USB , google kann helfen > Meinst du damit so etwas wie einen bootloader beim Arduino? Gibt es > etwas ähnliches auch in der nicht-arduino welt? Bootloader gibt es viele >> Einen AVR mit Usb, oder eine Bastellösung mit V-Usb wäre am sinnvollsten >> wenn der Endnutzer die Möglichkeit haben soll den Code zu erneuern.
Ok, ich habe mir das Projekt auf https://www.obdev.at/products/vusb/bootloadhid.html angesehen, aber ich weiß nicht genau, wo ich am besten ansetzen soll. Ich beschreibe mal kurz mein Problem: Ich möchte gerne aus der Arduino-Welt in die Standard C++ - Welt wechseln. Hardwaremäßig sollte das Programmieren eines Arduino UNO oder Mega auch mit Standard-Tools (WinAVR,...), ganz ohne Arduino IDE möglich sein. Ich habe einen Mega2560 und einen UNO. Kann ich einen der beiden als ISP verwenden, um den Bootloader des anderen zu programmieren? Oder soll ich mir einen zusätzlichen ISP zulegen. Welchen würdet ihr empfehlen? 2K schrieb: > Virtual USB , google kann helfen
Es verwirrt mich, dass Du von dem "Drittanwender" oder "Endanwender" schreibst. Meinst Du damit Dich selbst oder willst Du ein Hex-File an jemanden Anderen weiter geben? Möglicherweise auch verkaufen? Ich frage hauptsächlich wegen der technischen und Handhabungs-Folgerungen daraus. Bei den USB-HID Geschichten handelt es sich darum, dass man ein Programm auf den AVR laden kann, ohne das ein Treiber in Windows geladen werden muss. In dem AVR muss also schon ein Bootloader enthalten sein. Ich würde das aus eher nicht-technischen Gründen nicht so machen, aber es ist ein möglicher Weg. Technisch gesehen müsste man einen Arduino zum ISP umfunktionieren können. Vielleicht gibt es da sogar schon einen "Sketch" dazu. Ob es auch Lösungen gibt die mit dem AVR-Studio zusammen arbeiten weiss ich nicht. Man könnte sie schreiben, aber ob Du das kannst, weisst Du im Moment besser als ich. Langfristig gesehen ist ein ISP für die Entwicklung vorzuziehen, weil Du im Laden eher einen unprogrammierten AVR bekommst als einen der einen Bootloader enthält. Man muss auch wissen, dass jeder Bootloader sozusagen eine Insellösung darstellt. Protokoll und Verhalten sind nicht standardisiert und können eklatant voneinander abweichen. Wenn Du also tatsächlich Software an Kunden ausliefern willst, die sie dann selbst programmieren können sollen, musst Du ihnen entweder auch einen AVR mit Deinem Bootloader liefern oder auf einem so weit verbreiteten Bootloader aufsetzen, dass es den Kunden leicht fällt ihn zu bekommen. Ich denke allerdings auch, dass Du als jemand der bisher nur mit Arduino zu tun hatte, erst einmal noch einen weiten Weg vor Dir hast, bis Du gut C oder C++ programmieren kannst. Arduino hat Dich bis jetzt sehr von vielen Details isoliert, die Du nun erst einmal lernen musst. Das ist ja gerade der Zweck dieses Arduino-Paradigmas. Von daher ist für Dich alleine ISP das wichtigste. So in einem oder zwei Jahren, kannst Du dann mal anfangen zu überlegen, wie und was Du Kunden anbieten willst. Diese letzten beiden Absätze könnte man mit mehr Detailkenntnisse über Deine Vorhaben noch relativieren. Aber im Groben ist das so weit nicht falsch.
Wenn du einen Bootloader suchst, der ohne spezielle Treiber läuft, kuck dir mal SOUNDRX hier im Forum an. Du müsstet zwar die hex-Dateien vorher übersetzen, aber ein anderer Nutzer kann es über Soundkarte/MP3-Player oder Handy mit einem AUX-Kabel flashen. Und so was hat fast jeder irgendwo rumliegen.
Hallo Klaus, Ja, es geht darum, dass ich das Hex-File als Firmware-Update weitergeben möchte. Es geht also um einen AVR, der einen Bootloader drauf hat, damit ich und Endkunden ein FW- Update ohne externen Programmer machen können. Bis dato habe ich genau das in der Arduino-Welt realisiert. (Bootloader ist ja schon drauf, Hex-File flashen geht mit "XLoader"). Jetzt möchte ich gerne eine ähnliche Situation ohne Arduino-Software herstellen, am besten (vorerst) mit der Hardware, die mir zur Verfügung steht, nämlich Arsuino UNO und Mega2560. Wo fange ich d also am besten an? laus schrieb: > "Drittanwender" oder "Endanwender" schreibst. Meinst Du damit Dich > selbst oder willst Du ein Hex-File an jemanden Anderen weiter geben?
Nimm einen einfachen ISP wie z.B. USBTiny oder USBasp, die gibts für wenige € vom Chinamann. Dann AVRdude und Du stellst dem Endanwender ein Batch-Script dafür zur Verfügung. Das kriegt man mit relativ wenig Aufwand idiotensicher hin. Einen "allgemeinen" Bootloader gibt es eher nicht, ist alles proprietär. Und der Endanwender braucht dann auch immer eine Anwendung die vom PC aus den Bootloader anspricht. Nachteil: Der Endanwender braucht den (billigen) ISP. Alles Andere spricht aber dafür. Der wirkliche Vorteil eines Bootloaders ausser bei sowas wie Arduino hat sich mir sowieso nie erschlossen, wenn der µC nicht von Haus aus USB kann. Gruß, Norbert
Jan schrieb: > ... es geht darum, dass ich das Hex-File als Firmware-Update weitergeben > möchte. Es geht also um einen AVR, der einen Bootloader drauf hat, damit > ich und Endkunden ein FW- Update ohne externen Programmer machen können. > Bis dato habe ich genau das in der Arduino-Welt realisiert. (Bootloader > ist ja schon drauf, Hex-File flashen geht mit "XLoader"). Jetzt möchte > ich gerne eine ähnliche Situation ohne Arduino-Software herstellen Dann mach doch einfach. Du brauchst dazu keine "Arduino-Software". Dem µC und dem Bootlader ist völlig egal, ob das .hex File aus der Arduino-IDE gefallen ist oder aus dem gcc oder gar von vom Luna-Compiler erzeugt wurde. Es muß lediglich die richtige Ladeadresse haben (ich kenne mich mit dem Arduino-Krempel gar nicht aus, vielleicht kann da jemand anderes was dazu sagen). Also: einfach passende Arduino-Hardware mit dem Arduino-Bootloader verwenden und fertig.
das ist aber nur der halbe weg von dem, was ich erreichen möchte. Ich möchte die arduino-hardware verwenden, ohne dass sie als arduino-hardware erkannt wird - so, als ob ich mir die komponenten ganz ohne arduino selbst zusammengestellt hätte. Oder anders gesagt: wie müsste ich vorgehen, wenn ich ein pcb mit einem avr-chip ohne bootloader und einer USB->seriell-Schnittstelle vor mir hätte? Welchen bootloader sollte ich dan verwenden? Inwiefern muss der an die hardware anpassen? Gibt es keinen "allgemeinen" bootloader, der zu einem atmega2560 passt? wenn nicht, was genau macht den bootloader denn so anwendungs-spezifisch? Der atmega-chip ist ja in seinem pin-layout immer der gleiche, egal, ob er sich auf einer arduino-platine oder einem anderen pcb befindet, oder? Der chip kann ja nicht hardware-programmiert werden wie ein fpga z.b. Wenn er also hardwaremäßig immer gleich ist, inwiefern ist ein bootloader dann umgebungs-spezifisch?
Hi, weil der Bootloader ein Programm ist, das ganz am Ende vom Flash sitzt und beim Start oder aus der eigentlichen Firmware heraus angesprungen wird. Der BL nimmt dann über die Schnittstelle das Hexfile in Empfang und beschreibt damit den Flash. Das Protokol, das Datenformat der Firmware (Hex, Bin, könnte alles Mögliche sein), Checksumme, die Schnittstelle - da ist nichts festgelegt. Der Bootloader muß zu der Anwendung auf dem PC, Android oder sonswas passen und umgekehrt. Der Bootloader muß erstmal per ISP in den AVR, anders geht es nicht. Gruß, Norbert
Jan schrieb: > das ist aber nur der halbe weg von dem, was ich erreichen möchte. Ich > möchte die arduino-hardware verwenden, ohne dass sie als > arduino-hardware erkannt wird Warum? Und warum sagst du nicht einfach von Anfang an klipp und klar was genau du erreichen willst? > - so, als ob ich mir die komponenten ganz > ohne arduino selbst zusammengestellt hätte. Fertig gekaufte Arduino-Hardware sieht genauso aus wie selber zusammen- gebastelte - zumindest solange du den Arduino-Bootloader verwendest. Auch das ist Absicht. > Oder anders gesagt: wie > müsste ich vorgehen, wenn ich ein pcb mit einem avr-chip ohne bootloader > und einer USB->seriell-Schnittstelle vor mir hätte? Welchen bootloader > sollte ich dan verwenden? Inwiefern muss der an die hardware anpassen? > Gibt es keinen "allgemeinen" bootloader, der zu einem atmega2560 passt? Es gibt gefühlt 1000 Bootloader in der freien Wildbahn. Die unterscheiden sich darin, über welche Schnittstelle sie angesprochen werden, welche µC sie unterstützen, welche Tools (für welche Computer/Betriebssysteme) es zum Programmieren gibt, ob sie Verschlüsselung unterstützen etc. pp. Mach eine Liste der Anforderungen die du an den Bootloader hast und dann such dir einen passenden aus. > wenn nicht, was genau macht den bootloader denn so > anwendungs-spezifisch? Na gar nichts. Das ist doch gerade der Punkt an einem Bootloader. Er muß allerdings an die Hardware angepaßt sein. Das geht i.d.R. so, daß man ein paar Makros in einem Headerfile passend setzt und dann den Bootloader compiliert. > Wenn er also hardwaremäßig immer gleich ist, > inwiefern ist ein bootloader dann umgebungs-spezifisch? Der Bootloader ist ein Programm. Und als solches ist er so spezifisch wie jedes andere Programm auch. Allerdings hast du mit einem Bootloader ein Henne-Ei-Problem. Um den Bootloader (das Programm!) in den leeren µC zu bekommen, brauchst du eine Programmiermöglichkeit. Und offensichtlich kann das nicht der Bootloader sein. Arduino löst das dadurch, daß der Hersteller den Arduino-Bootloader für dich schon in den µC programmiert.
Ja, genau! Ich suche daher eine kombination aus bootloader (den uch per isp hochlade)und einer windows-software, mit der ich dann ein .hex-file (per USB) auf den avr-chip flashen kann. Gibt es da keine fertige lösung ausserhalb der arduino-welt, ähnlich einem bios auf dem pc, das ja auch immer gleich ist, egal welchee os-version ich dann aufspiele? Norbert S. schrieb: >Das Protokol, das Datenformat der Firmware > (Hex, Bin, könnte alles Mögliche sein), Checksumme, die Schnittstelle - > da ist nichts festgelegt. Der Bootloader muß zu der Anwendung auf dem > PC, Android oder sonswas passen und umgekehrt. > Der Bootloader muß erstmal per ISP in den AVR, anders geht es nicht.
Sorry Jan, ich greife mir schon mehrfach an den Kopf, von Kompetenz sehe ich hier nichts. Viele Tipps und Links wurden schon genannt. Nun musst Du auch mal lesen, verstehen und selbst entscheiden.
Jan schrieb: > ähnlich einem bios auf dem pc, das ja auch immer gleich ist, egal > welchee os-version ich dann aufspiele? Ein Bootloader ist ein Programm auf dem µC. Am anderen Ende der Verbindung muss aber auch das passende Programm sitzen, sonst klappt nichts. Du musst also immer das dazugehörige PC-Programm an den Endnutzer liefern. Das geht ja auch über Link zur Seite des Ersteller des Bootloaders. Wenn der Entwickler aber nicht mehr dran arbeitet, könntest du Probleme mit zukünftigen Betriebssystemen bekommen. Bezüglich Hardware des Endnutzers: Damit der nichts spezielles braucht, musst du entweder: USB nutzen, einen UART-Bootloader mit USB--> UART auf der Platine oder halt SOUNDRX. Braucht alles nur Standard-Kabel.
:
Bearbeitet durch User
Jan schrieb: > Ja, genau! Ich suche daher eine kombination aus bootloader (den uch per > isp hochlade)und einer windows-software, mit der ich dann ein .hex-file > (per USB) auf den avr-chip flashen kann. Gibt es da keine fertige lösung > ausserhalb der arduino-welt, ähnlich einem bios auf dem pc, das ja auch > immer gleich ist, egal welchee os-version ich dann aufspiele? Schau her: http://www.fourwalledcubicle.com/AVRISP.php Damit baust Du Dir selber einen AVR ISP mkii in Dein Projekt ein. Bootloader ist überflüssig, weil dieses Teil Deinen AtMega direkt per ISP programmiert. fchk
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.