Hallo Leute, ich versuche seit Tagen einen 32U4 dazu zu kriegen, dass er unter Windows ausschließlich als HID-Tastatur erkannt wird und man keinen zusätzlichen Treiber benötigt. Ich habe bisher nur mit der Arduino IDE gearbeitet und hatte relativ wenig mit Bootloadern zu tun. Ich habe Atmel Studio 7 mit Arduino und LUFA Extension installiert. Es ist mir auch gelungen damit das entsprechende Example (LUFA_HID_32kb_4kb) zu laden und als Device Atmega32U4 einzustellen. Ich gehe mal davon aus, der nächste Schritt wäre auf build zu klicken aber hier bekomme ich immer die Fehlermeldung, dass der Bootloader in der Größe optimiert werden muss. Im Example habe ich aber nicht verändert und wenn ich im ASF-Wizard bei selected modules alles raus nehme bleibt bei build die Fehlermeldung. Hat jemand eine Idee, was das sein könnte?
Hallo, Ja steht doch da du musst eine Compiler Option anpassen, so dass der GCC auf size optimiert.
Sorry, verstehe nur Bahnhof. Ich dachte das Problem ist, dass der Bootloader größer als 4kb werden würde. Wie passe ich die Compiler Option denn an und was ist der GCC?
Tim B. schrieb: > Sorry, verstehe nur Bahnhof. Ich dachte das Problem ist, dass der > Bootloader größer als 4kb werden würde. Wie passe ich die Compiler > Option denn an und was ist der GCC? Sorry, das musst du den Hersteller Fragen. Der GCC ist dein Compiler, zudem gibt's im Netz tausende, bzw. Millionen Artikel Punkt man muss sie nur finden.
Mal davon abgesehen, kannst du das auch mit einem Arduino machen. Ganz ohne Atmel Studio … https://forum.arduino.cc/index.php?topic=489185.0
Thomas W. schrieb: > Mal davon abgesehen, kannst du das auch mit einem Arduino machen. > Ganz ohne Atmel Studio … > > https://forum.arduino.cc/index.php?topic=489185.0 Wenn ich den Arduino Bootloader verwende und die Keyboard Lib, dann taucht der 32u4 aber im Gerätemanager trotzdem als Arduino auf und zusätzlich als HID Keyboard. Ich möchte aber, dass er nur als HID-Keyboard gefunden wird. Das ist nur mit einem eigenen Bootloader möglich, oder? Karl M. schrieb: > Tim B. schrieb: >> Sorry, verstehe nur Bahnhof. Ich dachte das Problem ist, dass der >> Bootloader größer als 4kb werden würde. Wie passe ich die Compiler >> Option denn an und was ist der GCC? > > Sorry, das musst du den Hersteller Fragen. > Der GCC ist dein Compiler, zudem gibt's im Netz tausende, bzw. Millionen > Artikel Punkt man muss sie nur finden. Das heißt ich brauche einen anderen Compiler, richtig?
Tim B. schrieb: > Wenn ich den Arduino Bootloader verwende und die Keyboard Lib, dann > taucht der 32u4 aber im Gerätemanager trotzdem als Arduino auf und > zusätzlich als HID Keyboard. Gut, das ist dann wohl vermutlich eine Arduino Einschränkung. Tim B. schrieb: > Ich möchte aber, dass er nur als > HID-Keyboard gefunden wird. Das ist nur mit einem eigenen Bootloader > möglich, oder? Nein! Ein LUFA Programm muss keinen Bootloader haben. Das LUFA Programm bildet einen beliebigen USB Stack ab, mit einer beliebigen Kombination an Geräte, die dein Windows PC dann "sieht".
Nee der Compiler ist schon okay. Hier sind LUFA Beispiele die funktionieren als USB-Keyboard: https://github.com/abcminiuser/lufa/tree/master/Demos/Device/ClassDriver/Keyboard https://www.avrfreaks.net/forum/lufa-usb-keyboard
:
Bearbeitet durch User
Tim B. schrieb: > Wenn ich den Arduino Bootloader verwende und die Keyboard Lib, dann > taucht der 32u4 aber im Gerätemanager trotzdem als Arduino auf und > zusätzlich als HID Keyboard. Ich möchte aber, dass er nur als > HID-Keyboard gefunden wird. Das ist nur mit einem eigenen Bootloader > möglich, oder? Ich muss mich wundern, dass du einen Bootloader kompilieren willst, obwohl du doch gar keinen Bootloader willst. Da leuchtet ein Widerspruch! Oder? Den Arduino Bootloader kann man per ISP entfernen. Dann taucht DER auch nicht mehr im Dateimanager auf. Dann musst du allerdings auch deine Programme per ISP aufspielen. Alternativ: Evtl den Zugriff über Atmel Flip und HW-Bootloader erlauben. Aber der taucht dann wieder im Gerätemanager auf.
Okay, ich verstehe. Ich widerspreche mir mit meinem Vorhaben selbst. Ich möchte, dass der 32u4 (ausschließlich) als HID Tastatur erkannt wird. Ich möchte den 32U4 aber später auch wieder per USB über die Arduino IDE flashen können. Der 32U4 müsste also so programmiert werden, dass er sich nur als HID Gerät ausgibt, auf ein bestimmtes Komando aber in der "Programmiermodus" wechselt und dann als serielles Gerät programmiert werden kann. Mööö...das wird schwierig... Dass ich den Bootloader mit ISP flashen muss ist klar. Wenn ich aber mit der Arduino IDE z.B. das Keyboard logout Example flashe wird der 32U4 dennoch als Arduino im Gerätemanager angezeigt.
Vielleicht sollte der nächste Schritt sein, den 32U4, wie auch immer per ISP so zu flashen, dass er nur als HID-Tastatur erkannt wird und ich zusätzlich per Arduino IDE per ISP einen Sketch flashen kann. Weiß einer dafür ein Tutorial? Ich habe jetzt versucht das LUFA Class1 Keyboard example zu laden. Wenn ich auf Build klicke läuft die Routine jetzt auch durch. Aber wo kommt da jetzt die .hex-file raus, die ich dann auf den 32u4 flashen kann?
Tim B. schrieb: > Dass ich den Bootloader mit ISP flashen muss ist klar. Wenn ich aber mit > der Arduino IDE z.B. das Keyboard logout Example flashe wird der 32U4 > dennoch als Arduino im Gerätemanager angezeigt. Das ist aber nicht der Bootloader, den du da siehst! Sondern die übliche CDC Serial Klasse. Der Bootloader blitzt nur ganz kurz mit einem anderen Com Port auf. --- Es ist nicht vorgesehen, die Serielle des Leonardo/Micro/Beatle zu deaktivieren. Es ist ein tieferer Eingriff von Nöten In der Datei USBCore.cpp müssen einige Zeilen mit Kommentaren versehen werden, damit Serial nicht mehr erscheint. in der Funktion "bool ClassInterfaceRequest(USBSetup& setup)" ca Zeile 374
1 | // if (CDC_ACM_INTERFACE == i)
|
2 | // return CDC_Setup(setup);
|
Statt
1 | if (CDC_ACM_INTERFACE == i) |
2 | return CDC_Setup(setup); |
In der Funktion "static u8 SendInterfaces()" ca Zeile 465
1 | //CDC_GetInterface(&interfaces);
|
statt
1 | CDC_GetInterface(&interfaces); |
Alles ohne jede Gewähr. Das macht natürlich den Upload schwieriger... Der muss im richtigen Augenblick beim Upload angesteckt werden.
Arduino Fanboy D. schrieb: > Es ist ein tieferer Eingriff von Nöten > > In der Datei USBCore.cpp müssen einige Zeilen mit Kommentaren versehen > werden, damit Serial nicht mehr erscheint. > > in der Funktion "bool ClassInterfaceRequest(USBSetup& setup)" ca Zeile > 374// if (CDC_ACM_INTERFACE == i) > // return CDC_Setup(setup); > Statt if (CDC_ACM_INTERFACE == i) > return CDC_Setup(setup); > > In der Funktion "static u8 SendInterfaces()" ca Zeile > 465//CDC_GetInterface(&interfaces); > stattCDC_GetInterface(&interfaces); Vielen Dank. Ich habe das ausprobiert. Leider wird noch immer der Arduino Micro im Gerätemanager angezeigt.
Dann hast du die falsche Datei verändert! Vielleicht gibt es mehrere unter gleichen Namen auf deinem System.
Hallo, ich nutze den atmega32u4 schon lange mit dem LUFA Bootlader und wundere mich, dass keiner auf den HWB (PE2) Pin eingeht. "Atmel-7766J-USB-ATmega16U4/32U4-Datasheet_04/201610.3.4 # HWB – Port E, Bit 2 HWB allows to execute the bootloader section after reset when tied to ground during external reset pulse. The HWB mode of this pin is active only when the HWBE fuse is enable. During normal operation (excluded Reset), this pin acts as a general purpose I/O."
Karl M. schrieb: > und wundere > mich, dass keiner auf den HWB (PE2) Pin eingeht. Weil der nichts mit dem Problem hier zu tun hat. Merke: Der 32U4 soll als HID (Tastatur) am PC erscheinen Aber keinen virtuelle COM Port etablieren. Da kannst du an deinem HWB Pin wackeln, wie du willst.... Außerdem ist HWB fest gegen (über 10k) GND gelegt. Da ist nix mit dran wackeln. Siehe https://www.arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
Arduino Fanboy D. schrieb: > Außerdem ist HWB fest gegen (über 10k) GND gelegt. > Da ist nix mit dran wackeln. > Siehe https://www.arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf Leider nein - Arduino, wo steht das im ersten Beitrag? Bei meinen Boards liegt das HWB Pin nicht auf Low, sondern auf High (PullUp). Ich will ja nicht immer den Bootloader nach einem Restet starten ...
Karl M. schrieb: > Arduino, wo steht das im ersten Beitrag? Im ersten Beitrag steht 2 mal "Arduino". Und später dann auch mal "Micro" Ich brauchte auch ein bisschen, um zu erkennen, wie weit unser Tim B. in die Irre gelaufen wahr. Karl M. schrieb: > Ich will ja nicht immer den Bootloader nach einem Restet starten ... Habe ich volles Verständnis für. In Sachen 32U4 Arduinos kann man das erreichen, in dem man den Catarina/Arduino Bootloader per Fuses abschaltet. Und danach die Uploads per ISP vornimmt. Der HWB Pin ist bei den Arduinos per Fuse abgeschaltet
Kannst Du nicht den Bootloader geringfügig modifizieren so daß er bereits ganz am Anfang einen Pin abfragt und normalerweise sofort in die Anwendung springt, noch bevor er sein USB konfiguriert, sollte der Pin nicht low sein (Einschalten mit gedrückter Taste)? Dann tritt der Bootloader nur in Erscheinung wenn Du es explizit willst und sonst überhaupt nicht.
Arduino Fanboy D. schrieb: > ann hast du die falsche Datei verändert! Stimmt. Jetzt scheint es zu klappen. Im Gerätemanager taucht nur noch das HID Keyboard auf. Vielen lieben Dank. Das hilft mir sehr weiter. Um das Rätsel um den Arduino Micro aufzulösen: Ich verwende einen nackten 32U4, der allerdings fast gleich wie der Arduino Micro beschaltet ist und auch einen Arduino Micro Bootloader bekommen hat.
Bernd K. schrieb: > Kannst Du nicht den Bootloader geringfügig modifizieren so daß er > bereits ganz am Anfang einen Pin abfragt und normalerweise sofort in die > Anwendung springt, noch bevor er sein USB konfiguriert, sollte der Pin > nicht low sein (Einschalten mit gedrückter Taste)? Dann tritt der > Bootloader nur in Erscheinung wenn Du es explizit willst und sonst > überhaupt nicht. Hört sich gut an. nur wie... Ich glaube ähnliches kann man tatsächlich mit dem HWB Pin erreichen, sofern die Fuses dafür richtig gesetzt sind (Ich glaube das würde ich hinbekommen.) Ich denke ich lasse es erst mal so (ohne Bootloader) und flashe eben via ISP.
Tim B. schrieb: > Vielen lieben Dank. Gerne doch. Nur fürs Tagebuch: Tim B. schrieb: > aber hier bekomme ich immer die Fehlermeldung, > dass der Bootloader in der > Größe optimiert werden muss. Hier sind die Kompileroptionen gemeint. Es wünscht sich da wohl den Parameter: -Os
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.