Was ist der offizielle Weg einen Atmega32u4 zu programmieren? Gibt es da ein SDK oder wie läuft das? Ich habe bisher immer nur zur Arduino IDE und den zugehörigen Libraries gegriffen, aber ich komme so nicht weiter, weil diese sehr schlecht bis gar nicht dokumentiert sind. Zumindest nicht die low-level USB-Libraries die ich brauche. Z.B. https://github.com/arduino/ArduinoCore-avr/blob/6ec80154cd2ca52bce443afbbed8a1ad44d049cb/cores/arduino/USBCore.cpp Vom Hersteller des Chips muss es doch eigentlich einen offiziellen, gut dokumentierten Weg geben für den den Mikrocontroller zu programmieren. Oder ist das so ein Ding wo man sich das offizielle SDK und die Doku für 10000€ kaufen muss?
Hallo, entweder mit einem ISP-Adapter oder über den USB-Bootloader. Wenn du einen jungfräulichen Chip von Microchip kaufst, ist ein DFU-Bootloader drauf. Flashen lässt sich dann direkt mit Atmel/Microchip Studio (ob es die Treiber mitbringt weiß ich nicht, es gibt noch ein Java-Tool von MCP, das die Treiber auf jeden Fall mitbringt) oder mit https://dfu-programmer.github.io/. Edit: auch beim DFU Programmer sind Treiber dabei. Bei dem Arduino-Gedöns weiß ich nicht was passiert. Wenn du einen Arduino gekauft hast und DFU willst, bastelst du dir mit LUFA aus dem Beispiel am besten selber etwas.
:
Bearbeitet durch User
Chris R. schrieb: > entweder mit einem ISP-Adapter oder über den USB-Bootloader. Entweder hast du die Frage nicht verstanden, oder ich. Nach meiner Auffassung fragte der TO nach Programmiertechniken, also irgendwelche Vorlagen um eine eigene Applikation zu entwickeln.
Nop I. schrieb: > Oder ist das so ein Ding wo man sich das offizielle SDK und die Doku für > 10000€ kaufen muss? Dokumentation: https://www.microchip.com/wwwproducts/en/ATmega32U4 Als IDE ist wohl Microchip Studio for AVR vorgesehen, ansonsten sollte aber auch ein beliebiger passender Editor/eine Entwicklungsumgebung und avr-gcc samt Libs den Job tun.
jo mei schrieb: > Entweder hast du die Frage nicht verstanden, oder ich. Ja, das war dann wohl ich, sorry. Atmel/Microchip Studio ist vermutlich noch immer der beste Einstieg, wenn man sich nicht um das Außenrum kümmern will. Wenn du dich mit Lowlevel-USB nicht herumschlagen willst, lohnt sich ein Blick auf LUFA, auch wenn manche schimpfen, dass es Bloatware ist.
Chris R. schrieb: > Wenn du dich mit Lowlevel-USB nicht herumschlagen willst, lohnt sich auch ein Blick auf Arduino. Der Arduino Leonardo besteht aus diesem Mikrocontroller.
Oder nimm etwas, was fertig ist und erprobt ist. Irgend einen UsbAsp : https://www.ramser-elektro.at/shop/programmer-und-zubehoer/usb-avr-isp-programmer-basierend-auf-usbasp-stick-format/
DurstBoy schrieb: > Oder nimm etwas, was fertig ist und erprobt ist. Ja, nee! Ich hole mir erstmal eine Tüte Popcorn und nen Bierchen.....
In der verlinkten Dokumentation konnte ich zwar riesige Dokumente über das Assembler Instruction Set finden und auch ein paar generelle Beispiele mit C-Code. Aber keine generelle Dokumentation zu den C-Libraries. Also zumindest nicht mehr als ein Halbsatz pro Funktion, was mir reichlich wenig hilft. Es muss doch auch ein Dokument geben in dem beschreiben ist wie man mit diesen Libraries arbeitet. Das kann ich nur leider nicht finden... :/ Mich mit low-level USB rumzuschlagen war schon meine Absicht. Ich brauche nur Libraries die vernünftig dokumentiert sind, damit ich auch weiß wie ich sie verwenden muss, ohne wochenlang rumzuraten, wie ich es mit dem Arduino Code bis jetzt getan habe. Ob ich dann am Ende einen Arduino als Hardware nehmen werde weiß ich noch nicht. Ich denke der wird sich nur noch über JTAG oder so flashen lassen, wenn ich mit meinem USB kram fertig bin. Keine Ahnung ob Arduino Boards diese Pins überhaupt exposen. Und um es nochmal klarzustellen: Es geht mir um das Programmieren im Sinne von Code schreiben, nicht um das Programmieren im Sinne des Flashens. Flashen muss ich meinen gebauten Code am Ende natürlich auch, aber das hat dann nciths mehr mit meiner Frage zu tun.
:
Bearbeitet durch User
Nop I. schrieb: > Keine Ahnung ob Arduino > Boards diese Pins überhaupt exposen. Tun sie, und die Arduino IDE unterstützt auch die Programmierung über ISP. Weder das Datenblatt noch die Doku der Bibliotheken werden dir erklären wie die USB Schnittstelle funktioniert. Die ist bei anderen µC ebenso. Also nimmst du entweder eine fertige High-Level Implementierung (wie z.B. bei Arduino) oder lernst wie USB funktioniert. Wenn du damit durch bist wirst du verstehen, warum die bekannten USB-UART Chips immer noch beliebt sind. Siehe https://www.mikrocontroller.net/articles/USB-Tutorial_mit_STM32 Was ist denn für dich eine "low level" Bibliothek? Was soll sie bieten, außer auf Register zuzugreifen? Vielleicht gibt es das gar nicht für USB weil der ganze Low-Level Kram IMHO bereits in der Hardware steckt.
Nop I. schrieb: > Es muss doch auch ein Dokument geben in dem beschreiben ist wie man mit > diesen Libraries arbeitet. Das kann ich nur leider nicht finden... :/ So etwas hat Microchip schon gemacht, aber eben nicht mehr für die zugekauften AVRs (sie wollten eigentlich die Atmel ARMs, die AVRs gab es halt dazu), sondern nur für ihre eigenen PICs. Das ganze heißt dann MLA und hat brauchbare Doku und Beispiele: https://www.microchip.com/en-us/development-tools-tools-and-software/libraries-code-examples-and-more/microchip-libraries-for-applications Als Prozessor kannst Du z.B. etwas am unteren Ende (etwa doppelte Rechenleistung eines klassischen AVR) https://www.microchip.com/wwwproducts/en/PIC24FJ128GB202 oder etwas am oberen Ende wie das hier nehmen, was gegenüber einem klassischen AVR etwa Faktur 5 ist. https://www.microchip.com/wwwproducts/en/dsPIC33EP512MU814 Für die 32 Bit PICs gibts dann wieder was anderes. fchk PS: Atmel hat früher eher wenig in der Richtung gemacht und sich auf Drittanbieter verlassen, vermutlich mangels Kapazitäten. Microchip hat sein eigenes Zeugs eigentlich immer ganz passabel supported.
:
Bearbeitet durch User
Nop I. schrieb: > Aber keine generelle Dokumentation zu den > C-Libraries. Also zumindest nicht mehr als ein Halbsatz pro Funktion, > was mir reichlich wenig hilft. > Es muss doch auch ein Dokument geben in dem beschreiben ist wie man mit > diesen Libraries arbeitet. Das kann ich nur leider nicht finden... Warum sollten sie diese Dokumentieren? Das ist Bestandteil des C/C++ Standards und nichts spezielles für einzelnen µC. Diese gelten quasi überall. https://en.cppreference.com/w/ Darin wirst du aber nichts dazu finden wie z.B. die Register in einem Atmega32u4 heisen oder für was die einzelnen Bits gut sind. Das must du dann in der Beschreibung für deinen konkreten µC nachschlagen.
NOP denkt dass der AVR gcc etwas mit dem AVR µC zu tun hat und von Atmel/ Microchip programmiert wurde, nö ist so nicht. Aber Du könnest Dich über das jeweilige Datenblatt: * https://www.microchip.com/wwwproducts/en/ATmega32U4 und diesem Link: * http://savannah.nongnu.org/projects/avr-libc/ weiterbilden. Zum Thema USB, schau mal hier: * https://www.lufa-lib.org/files/LUFA/Doc/130901/html/index.html Das ist die Referenzimplementierung. Viel Erfolg.
Nop I. schrieb: > Vom Hersteller des Chips muss es doch eigentlich einen offiziellen, gut > dokumentierten Weg geben für den den Mikrocontroller zu programmieren. Wenn du das unbedingt machen möchtest ... unter 'Dokumente' https://www.microchip.com/wwwproducts/en/ATmega32U4 Dort findet man ein USB DFU Bootloader Datasheet.pdf und dazu ein megaAVR DFU USB Bootloaders.zip Softwarepaket. Zwischendrin gibts auch jede Menge USB Dokumente. Die Arduino Leonardo Alternative wäre ein Arduino Micro.
:
Bearbeitet durch User
@Stefan Es war auch nie meine Anforderung, dass mir irgendeine Doku vom Mikrocontroller das USB Protokol erklärt. Das findet man alles auf usb.org. Ich muss eben nur wissen wie ich die Bibliotheken zu verwenden habe. Eine High-Level Implementierung bringt mir nichts. Ich muss einige Deskriptoren auf diversen Ebenen zur Laufzeit dynamisch setzen können. Z.B. device-, configuration-, interface-, endpoint-, HID- und report-descriptor. Und will dann beliebige Datenpakete auf report Ebene schicken. Da arbeite ich mich jetzt schon seit Wochen mühseelig durch den Quellcode vom Arduino Core, aber das alles nachzuvollziehen, vor allem den Kram unter der report- und HID-Ebene, ist sehr schwer ohne Dokumentation. Mit den Registern vom Chip werde ich hoffentlich keinen direkten Kontakt haben, wenn die USB-Libraries vernünftig geschrieben sind. @Frank K. Okay in dieser Materie stecke ich nicht drin. Ich wusste bis heute nicht einmal, dass es die Firma Microchip gibt. Ich denke ich würde schon gerne bei meinem Atmega32u4 bleiben. Mein Plan B wäre ansonsten eher ARM+Linux gewesen. @Jonas B. @Karl M. LUFA klingt interessant. Die Doku sieht vielversprechend aus. @Irgend W. Ich habe auch nie gesagt, dass ich etwas direkt in Register schreiben will. Low-level USB-Library bedeutet, das eine Abstaktion bis zur untersten Schicht des USB Protokolls gegeben ist und nicht, dass ich auf irgendwelche Register zugreifen will. Die Libraries mit denen das USB-Protokoll abgebildet wird, sind Teil des "C/C++ Standards"? ... Das wage ich aber mal stark zu bezweifeln. Kann es sein, dass wir aneinander vorbeireden?
Du bist einfach zu doof. Nicht für alles gibt es ein youtube-Rezeptvideo. Manche Dinge sind etwas komplizierter. Ich zum Beispiel bin bei Schwarzwälder Kirschtorte überfordert. Ich schimpfe aber deswegen nicht über den Schwarzwald, sondern erkenne, dass ich das nicht kann. Bitte mal darüber nachdenken.
Zu deiner Torte kann ich nichts sagen, aber an deiner Fähigkeit Forenbeiträge richtig zu interpretieren könntest du noch arbeiten. Ich habe nie geschimpft. Entweder hast du meine Beiträge verwechselt oder du etwas hineininterpretiert was ich nie geschrieben habe. Und warum behauptest du einfach, dass ich zu doof bin? Schau dir den Quellcode doch selber an, ich habe ihn oben verlinkt. Wenn du ihn verstehst, kannst du ja mal damit anfangen mir zu erklären wie ich programmatisch einen device descriptor mit mehreren configuration descriptors anlege. Und was hat das ganze überhaupt mit youtube-Rezeptvideos zu tun? Es wäre doch ganz offenkundig Schwachsinn gewesen den Code aus dem Arduino Core weiter zu entschlüsseln, wenn es gut programmierte und dokumentierte Alternativen gibt. Es ist auch nicht so, dass ich den Code nicht hätte verstehen können, es ist nur so, dass der Code die reinste Zumutung ist. Das wird dir jeder Softwareentwickler betätigen. Warum sollte ich mir das wochenlang antun, ohne zumindest mal in einem Forum zu Fragen, ob es nicht eine vernünftige alternative gibt. Ach ja rate mal, ob ich in diesem Beitrag geschimpft habe. (Die Antwort ist nein. Ich habe nur Feststellungen gemacht und Fragen gestellt. Völlig neutral. Wie auch in allen Beiträgen zuvor.) Lies doch bitte meine Beiträge noch einmal mit dieser Information im Hinterkopf.
Hallo, > Es ist auch nicht so, dass ich den Code nicht hätte verstehen können, es > ist nur so, dass der Code die reinste Zumutung ist. Das wird dir jeder > Softwareentwickler betätigen. Naja, mach mal sachte. Jeder wird dir das nicht bestätigen. Soviel weiß ich ganz sicher. Die müssen auch auf gewisse Abhängigkeiten im Framework achten. Was du sicherlich nicht machen musst. Die Arduino Codevorlage ist dir scheinbar die derzeit Einzigste die du öffentlich einsehen kannst. Und die knapp 900 Zeilen sind, wenn das alles ist, nun auch nicht der Hit. Also nimm dir das Controller Manual, daneben das Controller Headerfile und kommentiere den Code. Dann weißte was gemacht wurde. Danach stellste das online so wie das Arduino.cc auch gemacht hat. Das ist Open Source.
:
Bearbeitet durch User
Nop I. schrieb: > Die Libraries mit denen das USB-Protokoll abgebildet wird, sind Teil des > "C/C++ Standards"? ... Das wage ich aber mal stark zu bezweifeln. > Kann es sein, dass wir aneinander vorbeireden? Kann gut sein. Weiter oben schreibst du allgemein von Funktionen die in dem Beispielen von Atmel vorkommen aber nicht beschrieben sind. Und da es keine standardisierten USB-Funktionen gibt bin ich davon ausgegangen das du eher die in C/C++ definierten Funktionen gemeint hast. Ansonsten nenne mal konktrete Beispiele. Nop I. schrieb: > Low-level USB-Library bedeutet, das eine Abstaktion bis zur untersten > Schicht des USB Protokolls gegeben ist und nicht, dass ich auf > irgendwelche Register zugreifen will. Also eher ein HAL (hardware abstraction layer) als ein API (application programming interface). Hier wird dir wohl nicht viel anderes überig bleiben als Selberschreiben oder eins der duzenden von Projekten nehmen die im Internet rumschwirren (einige interessante wurden dir weiter oben schon genannt) und nach deinen Vorstellungen anpassen. Oder zu einem Hersteller wechseln der sowas hat (von Hardware-Hersteller Seite ist die Unterstützung bei sowas meist aber eher etwas mau). ST versucht sowas mit seiner HAL Librarie schon seit längerem für ihre eigenen Controller. Über deren Qualität kann man vorzüglich streiten... Das wäre aber vermutlich sowas wie du suchst, nur halt für die "falschen" µC. https://www.st.com/en/embedded-software/stm32cubef4.html
Nop I. schrieb: > die Bibliotheken Wer sind denn "die"? Also das wäre zumindest ein Anfang. Von Microchip direkt kommt hauptsächlich ein Chip & eine PDF mit Register Beschreibungen. Daraus dann ein Programm zu machen ist dein Job, du musst dir überlegen was wann & wo geschrieben/gelesen werden muss um eine Aufgabe zu erfüllen. Welche Bibliothek möchtest du dafür jetzt verwenden? Wie kommst du darauf, dass es überhaupt eine gibt die deine Anforderungen erfüllt? Also gerade bei so kleinen 8 Bit Controllern ist es eigentlich eher unüblich dass man mit vielen Bibliotheken um sich wirft. Das (und die grottenschlechte Doku) hat sich erst mit Arduino in den Köpfen fest gesetzt.
Nop I. schrieb: > Was ist der offizielle Weg einen Atmega32u4 zu programmieren? Gibt es da > ein SDK oder wie läuft das? Also ich benutze einen normalen Texteditor (BBEdit) und lasse mittels AVR-GCC das Hexfile erstellen welches ich dann mit AVRDUDE in den Mikrocontroller lade. Nop I. schrieb: > Ich habe bisher immer nur zur Arduino IDE und den zugehörigen Libraries > gegriffen, aber ich komme so nicht weiter, weil diese sehr schlecht bis > gar nicht dokumentiert sind. Eigentlich ist bei Arduino alles sehr gut dokumentiert ;) Nop I. schrieb: > Zumindest nicht die low-level USB-Libraries > die ich brauche. USB ist auch nicht grade ein Anfänger-Level. Nop I. schrieb: > Vom Hersteller des Chips muss es doch eigentlich einen offiziellen, gut > dokumentierten Weg geben für den den Mikrocontroller zu programmieren. Nennt sich Datenblatt. Dein Post erscheint mir schwer nach Anfänger. Du hast offenbar auch schon andere Mikrocontroller-Projekte mit Hilfe von der Arduino-IDE umgesetzt. Mein Tipp: Schnapp dir eines dieser Projekte und setze es mal mit einer anderen IDE bzw. mit anderen Mitteln um, z.B. dem Atmel Studio um. ;)
Nop I. schrieb: > Eine High-Level Implementierung bringt mir nichts Dachte ich mir schon, sonst hättest du hier nicht gefragt. Nop I. schrieb: > Die Libraries mit denen das USB-Protokoll abgebildet wird Weche Bilbiliotehekn genau meist du denn mit > Arduino IDE und den zugehörigen Libraries gegriffen und > Die Libraries mit denen das USB-Protokoll abgebildet wird ? Die ASF sind es offenbar nicht, und die avr-libc auch nicht. Wenn du sie mal benennen würdest, kann dir vielleicht jemand mit einem Link zur Doku oder einem Buchtipp helfen.
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.