Atxmega32A4U flashen bzw DFU Bootloader ansprechen

OP #4774024
Lesenswert?
• ▲
▼
Hallo zusammen,

Ich habe mir das Trimension XMega Breakout Board bestellt, um nach 
einigen Projekten mit der Atmega Familie auch mal die XMegas zu 
verwenden.

Das besagte Breakoutboard wird mit dem Atmel DFU Bootloader 
ausgeliefert. Über Flip 3.4.7 konnte ich gestern erfolgreich das erste 
Programm via USB auf den XMega32A4U übertragen. Direkt nach der 
Übertragung konnte ich den Windows-Sound hören, der signalisiert, dass 
ein USB-Gerät entfernt wurde. Wenn ich das Board nun über USB mit Strom 
versorge, startet das Programm (blinkende LED als ersten Test). Nun 
möchte ich aber eine neue hex-Datei übertragen und schaffe es nicht mehr 
den Bootloader anzusprechen. In der Anleitung des Boards steht, dass man 
PC03 auf GND legen muss um nach einem Reset in den Bootloader zu kommen. 
Dies deckt sich ja soweit auch mit der Werkseinstellung des Bootloaders 
für den Xmega32a4u. Leider waren an dieser Stelle alle Versuche 
vergebens. Habe ich den Bootloader eventuell aus Versehen überschrieben?

Ich habe hier auch noch einen AVR-Dragon zur Verfügung. Wenn ich mit 
diesem und Atmel Studio 7 das Board über PDI flashen möchte, kommt nur 
eine Fehlermeldung:
1
Got error setting up PDI mode: Device is not supported in this emulator mode. Debugger command setParameter failed.
2

3
Unable to enter programming mode. Verify device selection, interface settings, target power, security bit, and connections to the target device.

Ich hab schon mehrfach darüber gelesen, dass der Dragon nicht mit allen 
XMegas über PDI kommunizieren kann und daher steht die Überlegung an, 
den JTAG ICE PCBA zu beschaffen, sollte ich das Problem der 
PDI-Programmierung nicht anderweitig in den Griff bekommen.

Am Ende möchte ich alle XMegas (insbesondere 128A3) einmalig über PDI 
mit einem angepassten Bootloader beschreiben und danach die 
entsprechenden Programmversionen über USB übertragen.

Der Testcode :
1
#include <avr/io.h>
2
#include <util/delay.h>
3

4
#define BLINK_DELAY_MS 1000
5

6
int main( void )
7
{
8
  PORTE.DIRSET = 0b00000001 ;
9
  
10
  while(1){
11
    PORTE.OUTSET = 0b00000001 ;
12
    _delay_ms( BLINK_DELAY_MS ) ;
13
    PORTE.OUTCLR = 0b00000001 ;
14
    _delay_ms( BLINK_DELAY_MS ) ;
15
  }
16
}

Grüße Timo

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.