Hallo ich fange gerade erst an mich etwas näher mit dem AT90USB zu beschäfftigen, hab früher viel mit PIC's gearbeitet :) Jetzt blicke ich gerade nicht ganz durch wie ich es hin bekomme den USB Bootloader (Flip) von Atmel so zu schützen das ich Ihn nicht mit meinem in AVR Studio generierten Programm beim Flashen über USB überschreibe. Kann mir vieleicht einer sagen ob und welche Fuses ich dafür setzen muss oder ob es im AVR Studio eine Möglichkeit gibt beim Linken den Bereich es Bootloader frei zu lassen ? Danke schon mal für eure Hilfe
>in AVR Studio generierten Programm beim Flashen über USB überschreibe.
Wenn du keinen separaten Programmer benutzt, also dein Programm per
Flip, dfu-programmer oder ähnlichem überträgst, sollte der
USB-Bootloader erhalten bleiben. Die Leute, die Probleme hatten, haben
in der Regel mit einem Programmiergerät wie Atmels ISP-Programmer ein
kleines Testprogramm aufspielen wollen und dabei den Bootloader
überschrieben. Dann kann man Atmels Bootloader aber von deren Homepage
herunterladen und mit dem Programmiergerät zurückschreiben.
Ein Bootloader sollte schon so minimal clever geschrieben sein, daß er nicht seinen eigenen Code zerstört. Ein Schützen gegen externe Programmer ist nicht möglich, die können nur ein komplettes Erase des ganzen Flash. Peter
Hallo erstmal vielen Dank für die schnellen Antworten Ich habe es gerade noch einmal getestet habe mit AVR Studio ein Projekt mur mit der while(1) in der Main erstellt also ohne wirklichen Sinn ;) aber nachdem ich es per Flip eingespielt hatte kann ich den USB Bootloader nicht mehr Starten.
>Bootloader nicht mehr Starten.
Du weißt schon, dass Du den HWB gedrückt halten musst, um den Bootloader
(erneut) zu aktivieren?
>Ja das weiß ich ;) und das habe ich auch gemacht.
Das ist seltsam. Allerdings sind deine Beschreibungen ungenügend.
Hallo welche Information sind den notwendig um mehr Licht in's Dunkle zu bringen ?
Denk mal nach. (Wie sieht deine Hardware aus (selbstgebaut), wie gehst Du genau vor, was ist die Fehlermeldung...)
Ok also die Hardware ist zum Großteil nach deinem Beispiel :) (Experimentierplatine für den AT90USB (1287)) dabei mal ein Dickes Lob ist ein sehr schönes Projekt. Verwendet habe ich einen AT90USB1287. Also ich kann über meinen ISP anschluss ohne Probleme ein Programm aufspielen (benutze das STK500) habe natürlich vorzugsweiße den Bootloader wieder aufgespielt :) Danach wurde meine Platine auch im Gerätemanager angezeigt und ich konnte mich mit dem Flip Programm verbinden. Wenn ich aber wie erwähnt mein kleines Testprogramm aufspiele (über Flip) und starte ist er natürlich erstmal als Device weg. Aber leider kann ich Ihn auch dann nicht mehr mit gedrücktem HWB wieder dazu bewegen in den Bootloadermodus zu gehen, erst wenn ich den Botloader wieder per ISP einspiele gehts wieder. Oder muss ich wie erwähnt dem AVR Studio irgendwie sagen das der Bereich des Bootloaders nicht verwendet werden darf ? Danke.
>kann ich Ihn auch dann nicht mehr mit gedrücktem HWB
Wenn der Bootloader wieder aktiv werden soll, muss der Pin HWB WÄHREND
des Resets auf Masse gelegt werden. Hast Du vielleicht den Reset
vergessen?
Hab den Controller von der Versorgungsspannung getrennt und dann beim wiedereinschalten den HWB gedrückt.
Ich hab mal mein Test File angehängt vieleicht können Sie das Problem ja so nachvollziehen. Gruß Edit: Quelltext der Hex #include <avr/io.h> int main (void) { while (1) { } return 0; }
>Wenn ich aber wie erwähnt mein kleines Testprogramm aufspiele (über >Flip) und starte ist er natürlich erstmal als Device weg. Du bist sicher, dass Du es wirklich über Flip, also den USB-Port, übertragen hast? Oder war der ISP-Programmer angesteckt? Wie bereits gesagt, Programmierung per Flip über den USB-Port sollte den Bootloader nicht überschreiben. Das genaue Vorgehen wäre: Reset Pin auf Masse legen, HWB Pin auf Masse legen, Reset Pin freigeben, HWB freigeben. Dann sollte der Bootloader wieder aktiv werden. Wenn nicht hast Du evtl. ein Hardwareproblem. Wobei: Wenn ich diese Aktivierung unter Linux viele Dutzend mal gemacht hatte gab es auch irgendwann Probleme, bis ich den Rechner neu gestartet hatte. Ich habe das nicht näher untersucht, das war wohl ein bekanntes Linux-Problem vor langer Zeit...
>Hab den Controller von der Versorgungsspannung getrennt und dann beim >wiedereinschalten den HWB gedrückt. ??? Ich habe bisher nur meine Bus-Powered Platine benutzt, da kann man die Versorgungsspannung ja nicht abschalten. Natürlich USB-Stecker ziehen, aber das ist etwas anderes. Ich denke HWB auf Masse legen während man das Gerät ansteckt sollte auch funktionieren, aber probiere mal mit Reset. Was für ein Programm Du aufspielst sollte egal sein, er sollte stets wieder in den USB-Bootloader springen können.
So hab mir ebend ein Taster zum Reset-Taster umgelötet und das ganze noch mal getestet leider ohne erfolg. Wie sieht das eigendlich mit den Fuses HWBE und BOOTRST aus? die sind beim mir im AVR Studio zur Zeit ohne Haken, wobei ich mir beim AVR Studio nie ganz sicher bin ob das jetzt aktiviert oder nicht heisst daher hier die Fuses: Extended: 0xFB High: 0x99 Low: 0x5E
Hab gerade noch etwas mit den Fuses rum gespielet scheint daran gelegen zu haben das ich kein Haken bei BOOTRST gehabt habe. Zur Zeit geht es bei mir. Aber noch mal vielen Dank für deine Hilfe! schönen Abend wünsche ich dir noch. Gruß Edit: zu früh gefreut jetzt startet er nicht mehr mein Anwenderprogramm :(
>Hab gerade noch etwas mit den Fuses rum gespielet scheint daran gelegen >zu haben das ich kein Haken bei BOOTRST gehabt habe. >Zur Zeit geht es bei mir. Interessant -- die meisten Leute melden sich ja nicht wieder sobald es funktioniert. Fuses HWBE und BOOTRST sagt mir jetzt nichts, ich nutze ja Linux und daher auch nicht das AVR-Studio. Ich musste bei meinen Chips keine Fuses umstellen, aber die hatte ich vor gut 2 Jahren gekauft. Vielleicht hat sich da etwas geändert, oder Dein AVR-Studio hat sie umgestellt. Auf jeden Fall gut zu wissen, das werde ich mir mal merken und bei Gelegenheit nachlesen.
>Edit: >zu früh gefreut jetzt startet er nicht mehr mein Anwenderprogramm :( Schade... Das ist schon seltsam. Mit dem AT90USB1287 hatten mit selbst gebauten Platinen ja einige Leute seltsame Probleme, der Grund konnte meist nicht geklärt werden, weil die sich nicht wieder gemeldet haben. Mit gekauften Platinen, USBKEY, hatten die Leute keine Probleme. Irgendwie ist der AT90USB1287 wohl etwas empfindlicher. Das einzige Problem, das ich anfangs hatte, war mit einem 5 m langen USB-Kabel. Da gab es Übertragungsfehler. Ich habe dann einen 1uF Kondensator zur Stabilisierung von VBUS auf die Platinen gesetzt, dann war alles OK. Aber das hat mit deinem Problem wohl nichts zu tun. Mir fällt sonst momentan nichts mehr ein. Wir sollten vielleicht mal über die FUSES nachlesen, ich werde mir mal ein aktuelles Datenblatt herunterladen...
Vielleicht stimmt wirklich etwas mit den FUSES nicht -- es gibt ja auch noch BOOTSZ 0 und 1. Wäre möglich, dass der Bootloader überschrieben wird wenn die falsch eingestellt sind. Versuch mal alles auf die Default-Werte nach Datenblatt zu stellen.
Noch ein kleiner Hinweiß das Starten des Bootloaders mit dem HWB Pin scheint nicht so gut zu Funktionieren bei einem Power on Reset klappt wirklich besser in verbindung mit dem Reset Pin. aber ich habe hier noch eine schöne Möglichkeit gefunden den Bootloader aus der Applikation zu starten. #define Disable_timer_int() ( TIMSK0 = 0x00,\ TIMSK1 = 0x00,\ TIMSK2 = 0x00 ) void (*start_bootloader) (void)=(void (*)(void))0xf000; // Definition while (1) { if ( !(PINA & (1<<PINA6)) ) { cli(); Disable_timer_int(); _delay_ms(10); (*start_bootloader)(); } }
>noch eine schöne Möglichkeit gefunden den Bootloader >aus der Applikation zu starten. Dazu passt dann wohl dieser Thread: Beitrag "WinAVR, AT90USB1287, Bootloader aus App anspringen"
Und übrigens: Von dem LUFA-Mensch gibt es jetzt wohl auch einen Bootloader: http://www.fourwalledcubicle.com/LUFA.php Vielleicht besser.
Hätte ich mir Denken können das der Beitrag bekannt ist :) aber danke für den weiteren Hinweis.
Hi @ Stefan: hast du zufällig den LUFA DFU Bootloader ausprobiert ? hab ihn mal getestet aber bekomme leider beim flashen mit FLIP eine Fehlermeldung. Gruß
>@ Stefan: >hast du zufällig den LUFA DFU Bootloader ausprobiert ? hab ihn mal >getestet aber bekomme leider beim flashen mit FLIP eine Fehlermeldung. Nein, ich bin bisher nicht dazu gekommen mir die LUFA-Sachen anzusehen. Da fragst Du wohl am besten den LUFA-Autor direkt, er scheint recht nett zu sein. (Statt Flip kann man unter Linux auch den dfu-programmer benutzen.)
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.