Bootloader funktioniert nicht

dominiksoller

Neues Mitglied
03. Mai 2010
5
0
0
Sprachen
Hallo,

ich kriege den Bootloader auf dem XMega Board leider nicht zum laufen.

Ich flashe mit AVRisp II und AVR Studio, habe bereits die Bootloader Versionen 2020 und 2010 getestet, BOOTRST Fuse ist auf Bootloader Reset (habe aber auch schon Application Reset getestet).
Wenn ich Flash und Fuses auslesen lasse steht auch das drin, was davor reingeschrieben wurde.
Habe auch schon den AVR vor dem programmieren komplett loeschen lassen um Konflikte mit noch vorhandenen Code auszuschließen.

In den EEPROM kann ich den Bootloader nicht programmieren weil AVR Studio eine Fehlermeldung zurueckgibt, dass der HEX File nicht fuer den AVR geeignet ist, also ist das auch keine Option.

Irgendwas muss von dem Bootloader auch laufen, denn nach Reset blinkt kurz die zweite LED, geht aber dann aus, egal ob PQ2 gedrueckt wird oder nicht.
Ich konnte auch nirgends eine Info finden ob diese LED dauerhaft an sein muesste oder blinken wenn der Bootloader aktiv ist.

Am Board funktioniert soweit alles, habe ueber den AVRisp schon verschiedene Applikationen programmiert und dabei auch den PQ2 Taster, die LEDs und die USART Schnittstelle getestet.

Der Programmer meldet immer einen Timeout und die Nachricht, dass man ueber PQ2 den Bootloader erzwingen soll. Das Board ist auch auf USBXpress gestellt und wird im Programmer auch als verbunden angezeigt, im Seriell Modus wird es als nicht verbunden angezeigt, das scheint also alles wie es sein soll.

Vermutlich uebersehe ich irgendeine dumme Kleinigkeit aber ich hab jetzt alles mehrmals durchgecheckt und hab keine Ahnung woran es noch liegen koennte.
 
Hallo,

der Bootloader muss in jedem Fall in den Flashspeicher und nicht in das EEPROM. Nach der ApplikationSection im Flash kommt ein extra Bereich für den Bootloader. Wenn du das BootloaderHexfile in den Flashspeicher programmierst, wird der Bootloader richtig in der BootloaderSection abgelegt (Bereich ab 128k).

Wichtig ist noch, dass du das Fusebit BOOTRST programmierst, das hast du ja bereits gemacht. Was noch wichtig ist, dass der Flashbereich UserSignature gelöscht wurde. Hier speichert der Bootloader nämlich unterschiedliche Infos ab, unter anderem, ob eine gültige Applikation in der ApplicationSection ist, die er starten darf.

Wenn die Status-LED kurz blinkt (ich glaube 5 mal), ist der Bootloader aktiv, hat also die Applikation nicht gestartet, entweder weil keine gültige Applikation vorhanden ist, oder weil man während RESET die PQ2 Taste gedrückt gehalten hat. Da sie bei dir kurz blinkt, sollte die Programmersoftware eigentlich mit dem Bootloader kommunizieren können.

Bitte die aktuellen Softwareversionen nutzen, die findest du hier:
http://www.avr-praxis.de/forum/showthread.php?t=883
Also beim Bootloader 2.020 und bei der Programmersoftware 1.3 bleiben.

Hardwareseitig sollte alles in Ordnung sein, da du ja bereits Daten über den USART übertragen hast. Hmmm, lösche wirklich auch mal die UserSignature (geht im AVRISPmkII Programmierer-Dialog) und programmiere den Bootloader in den Flashspeicher, Fusebit BOOTRST programmieren, danach Betriebsspannung anlegen. bzw RESET und an USB anschließen und bei der Programmersoftware ReadModuleInfo drücken.

Gruß,
Dirk
 
Vielen Dank schon mal fuer die Hilfe.

Habe die User Signature mal noch extra geloescht und alles nochmal neu geflasht und angeschlossen aber der Programmer bekommt einfach keine Verbindung zum Bootloader.

Wenn das blinken der LED bedeutet, dass der BL ausgefuehrt wird kann es ja fast nur am Interface zum PC liegen. Ich habe fuer das Modul folgende Treiber installiert:
CP210x USB to UART Bridge
CP210x VCP
USBXpress Development Kit (eigentlich kein Treiber)
USBXpress Device

Wenn das Board auf USBXpress Modus gesetzt ist wird es nur unter USB Controller als USBXpress Device angezeigt, also keine Com Ports oder aehnliches, aber das sollte ja so passen, oder?

Das ist sicher wieder irgendeine Kleinigkeit, die ich uebersehe, ich weiß nur nicht welche :stupido3:
 
Hallo Dominik,
Wenn das blinken der LED bedeutet, dass der BL ausgefuehrt wird kann es ja fast nur am Interface zum PC liegen.

das denke ich auch.

Ich habe fuer das Modul folgende Treiber installiert:
CP210x USB to UART Bridge
CP210x VCP
USBXpress Development Kit (eigentlich kein Treiber)
USBXpress Device

Den VCP-Treiber benötigst du, wenn du den virtuellen COM-Port nutzen möchtest, den USBXpress-Treiber ist der direkte USB-Treiber, über diesen greift der Programmer auf das USB-Device zu.

In der Statuszeile unten links der Programmersoftware siehst du, wenn das Mikrocontrollermodul richtig erkannt wurde, dann wird auch zum Beispiel mindestens der Button ReadModuleInfo enabled. Das sollte eigenlich funktionieren, wenn der Bootloader aktiviert ist.


Wenn das Board auf USBXpress Modus gesetzt ist wird es nur unter USB Controller als USBXpress Device angezeigt, also keine Com Ports oder aehnliches, aber das sollte ja so passen, oder?
Ja genau, das ist richtig so. Entweder VCP oder USBXpress. Zwischen den Modi kannst du ganz einfach mit unserem Tool umschalten, aber ich denke das hast du so bereits gemacht.

Hast du im VCP-Modus tatsächlich schon einmal eine Testübertragung über USARTF0 an ein Terminalprogramm (zum Beispiel mit HTerm) gemacht? Mal sehen, ob wir den Fehler eingrenzen können.

Dirk
 
Hallo und sorry, dass ich erst jetzt antworte, kam erst jetzt wieder an das Board ran.

Also USART im VCP Mode funtioniert auf jeden Fall ohne Probleme, verwende ich die ganze Zeit als debugging Ausgabe.

Erkannt wird das Modul im USB XPress Mode auch von dem Programmier Tool, nur Zugriff ist nicht moeglich.
 
Hallo Dominik,

hmmm jetzt habe ich aber bald auch keine Ideen mehr :(

Die Hardware scheint ja in Ordnung zu sein.

Hast du im VCP Modus auch mal empfangen, also beide Richtungen getestet? Vielleicht hast Du PORTF mal als OUTPUT geschaltet so dass TXD vom CP2102 gegen den RXD vom Xmega gearbeitet hat, beide wären ja OUTPUT.

Wenn du das Modul an USB anschließt, wird es im USBXpress Mode von der Programmersoftware erkannt. Du musst nun Betriebsspannung anlegen, damit der Xmega läuft. Ist der Bootloader aktiv (LED blinkt einige male), müsste die Programmersoftware eigentlich mit dem Bootloader kommunizieren können.

Um zu testen, ob der Mikrocontroller im USBXpress Modus überhaupt ein Kommando empfängt kannst du mal folgendes machen: Du stellst in deiner Applikation USARTF0 auf 250kbps 8N1 ein. Wenn du den Button "Read Module Info" drückst, wird zuerst 0xC1 (StartBootloader) gesendet. Darauf könntest du reagieren und den Status mit der LED anzeigen.

Der Bootloader nutzt den externen 16MHz Quarz und stellt den Systemtakt auf 32MHz ein, die Betriebsspannung sollte also für diese Version >= 2,7V sein.

Am besten du prüfst mal die Richtung PC->Modul, falls du das noch nicht gemacht hast.

Gruß,
Dirk
 
Das mit der Uebertragung in die andere Richtung koennte wirklich das Problem sein, ich habe gerade mal schnell versucht irgendwas mit dem xmega zu empfangen und es weder im VCP noch im USB XPress Mode hingekriegt.

Ich muss aber erst mal noch genauer schauen, ob ich nicht nur irgendwas vergessen hab, ich meine naemlich eigentlich mich zu erinnern, dass ich schon mal Chars von der Konsole als Echo zurueckliefern hab lassen am Anfang und das funktioniert hat.

Vielen Dank soweit, wenn ich was Neues weiß meld ich mich wieder.
 
Hallo Dirk,

ich glaub ich hab das Problem gefunden, so wie ich das sehen muesste am Pin F2 (RX von USARTF0) ein externer PullUp Widerstand sein, der ist anscheinend defekt. Auf jeden Fall liegt an F2 die ganze Zeit GND wenn ich nicht den internen PullUp des XMEGA aktiviere, was aber der Bootloader wohl nicht macht, weil ja eigentlich ein externer da sein sollte.

Da ich gerade keinen passenden Widerstand zur Hand habe, konnte ich den Bootloader noch nicht testen aber ich kann mit internen PullUp im VCP Mode problemlos an das Board senden und nicht mehr nur empfangen also wird das wohl die Loesung sein.

Danke nochmal.
 
Hallo Dominik,

na das wäre ja schön, wenn es der Fehler ist, andererseits blöd, das dürfte normal nicht vorkommen :(

Der Pullup-Widerstand hat 1kOhm. Schau dir auch mal die Lötstelle des Pullup-Widerstands an.

Grüße,
Dirk
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)