Bootloader ATmega328P

Hans K.
 
Avatar
 
Subject:

Bootloader ATmega328P

 · 
Posted: 25.10.2011 - 11:05  ·  #1
Hallo

Ich versuche, den AVRco-Bootloader auf einem ATmega328P zum Laufen zu bringen. Auf der Hostseite verwende ich das Flashloader-Tool von AVRco. Das Vorgehen und der Treiber-Code für die Schnittstelle zum Bootloader sind bekannt und funktionieren mit anderen ATmegas problemlos.
In der Applikation mit ATmega328P klappt die Kommunikation zwischen Flashloader und Bootloader, der Ladevorgang läuft (aus Sicht des Flashloaders) ohne Fehler durch. Nur am Ende wurde der Flashinhalt des ATmega328P nicht verändert. Wo bin ich blind?

Code

Import SysTick, FlashWrite, SerPort;

// ...
const
   DownLoaderID:       word = 010213;
   BootCheck [$07BFE]: word =  $AA55; // last page below bootloader,

{$I boot.inc}

// Im weiteren Programmablauf, nach Benutzereingabe:
   FlashDownLoader;

// Datei boot.inc
{$PHASE BootBlock $03E00}

Procedure BootTest;
//--------------------------------------------------------------
// Check if last download successful. Try to download if not.
Begin
  ASM;
     LDI _ACCCLO, canly_conti.BOOTCHECK AND 0FFh
     LDI _ACCCHI, canly_conti.BOOTCHECK SHRB 8
     LPM _ACCA, Z+
     CPI _ACCA, 055h
     BRNE BootTestX
     LPM _ACCA, Z+
     CPI _ACCA, 0AAh
     BRNE BootTestX

     // valid signature found: normal program start
     JMP 0000h;
   BootTestX:
     // check failed, try to download
  ENDASM;
     FlashDownLoader;
end BootTest;

Procedure FlashloaderInit;
//-------------------------------------------------------------
// UBRR = (fosc / 16 * Baud) - 1
Begin
  ASM;
    LDI       _ACCA, 018h                   ; Rx and Tx enable
    STS       ucsrb, _ACCA
    // Init serial port, 033h for 19200 Baud @16MHz
    LDI       _ACCA, 033h
    STS       ubrrl, _ACCA
    LDI       _ACCA, 0
    STS       ubrrh, _ACCA
    LDI       _ACCA, 00Eh                    // 8 databits, no parity, 2 stopbits
    STS       ucsrc, _ACCA
  ENDASM;
End;

Procedure Flashloaderrecv;
//------------------------------------------------------------
Begin
  ASM;
    LDS       _ACCA, ucsra
    SBRS      _ACCA, 7                        ; Receiver ready?
    RJMP      canly_conti.FLASHLOADERRECV   ; if not
    LDS       _ACCA, UDR1
  ENDASM;
End;

Procedure FlashloaderTransm;
//-------------------------------------------------------------
begin
  ASM;
    PUSH      _ACCA
  L1:
    LDS       _ACCA, ucsra                    ; Transmitter ready?
    SBRS      _ACCA, 5
    RJMP      L1     ; if not
    POP       _ACCA
    STS       UDR1, _ACCA
  ENDASM;
end;

Procedure FlashloaderExit;
//------------------------------------------------------------------------------
Begin
  ASM: Jmp SYSTEM.VectTab;
end;
{$DEPHASE BootBlock}


Danke für einen Hinweis.

Hans
Hans K.
 
Avatar
 
Subject:

Re: Bootloader ATmega328P

 · 
Posted: 27.10.2011 - 08:22  ·  #2
Nachtrag:
Ich verwende AVRco Version 4.93.00 Pro. Das DSC-File des ATmega328p habe ich, auf frühere Empfehlung von E-Lab, aus der aktuellen Demoversion kopiert (Filedate: 12.09.2009). Gibt's da ein Problem?

Wäre sehr froh, wenn jemand weiterhelfen könnte. Danke.
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Bootloader ATmega328P

 · 
Posted: 27.10.2011 - 15:11  ·  #3
Hallo Hans,

ich würde gerne helfen aber auch ich habe keine Ahnung. Das sieht alles plausibel aus. Und wie Sie selbst schreiben lief das auch mit anderen Megas bisjetzt problemlos. Ich werde nochmal das DSC prüfen. Aber soweit ich mich erinnere waren da nur die Fuses etwas anderst und es gibt einen zusätzlichen UART, soweit ich weiss.

rolf
Hans K.
 
Avatar
 
Subject:

Re: Bootloader ATmega328P

 · 
Posted: 28.10.2011 - 08:05  ·  #4
Hallo Rolf

Nun, ich dachte vielleicht hat jemand schon mal den Bootloader auf einem 328er am Laufen gehabt, und könnte zeigen, wie dieser eingebunden ist. Ist der Bootloader-Code eigentlich generisch, d.h. der gleiche für alle ATmegas? Oder gab es da mal einen Update, den ich verpasst hätte?

Gruss
Hans
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Bootloader ATmega328P

 · 
Posted: 28.10.2011 - 14:15  ·  #5
Hallo Hans,

nein, am Bootloader wurde schon seit sehr langer Zeit nichts mehr geändert.

rolf
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   93   107 · Page-Gen-Time: 0.021387s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI