AT90USB Bootloader schützen

OP #1357334
Lesenswert?

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
Gast #1357360
Lesenswert?

>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.
OP #1357402
Lesenswert?

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.
OP #1357450
Lesenswert?

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.
Gast #1357457
Lesenswert?

>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?
Gast #1357476
Lesenswert?

>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...
Gast #1357497
Lesenswert?

>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.
OP #1357540
Lesenswert?

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
OP #1357545
Lesenswert?

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 :(
Gast #1357557
Lesenswert?

>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.
Gast #1357573
Lesenswert?

>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...
Gast #1357591
Lesenswert?

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.
OP #1357730
Lesenswert?

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)();
  }
    }
Gast #1367696
Lesenswert?

>@ 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.)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren