Bootloader

TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Bootloader

 · 
Posted: 24.11.2014 - 11:12  ·  #1
Morgen,
ich arbeite mich gerade in den bootloader ein, dies mache ich mit einen AtMega8 PU
Nichts besonderes, aber zum lernen sollte er reichen.

ich erstelle mit ein neues Projekt und bekomme gleich einen
internal assembler error 964 ?

was könnte es sein ?

Code

Device = mega8, VCC=5;

Import SysTick, FlashWrite, SerPort;

From System Import ;


Define
  ProcClock      = 14745600;       {Hertz}
  SysTick        = 10;             {msec}
  StackSize      = $0032, iData;
  FrameSize      = $0032, iData;
  SerPort        = 2400, Stop1;    {Baud, StopBits|Parity}
  RxBuffer       = 8, iData;
  TxBuffer       = 8, iData;

Implementation




                        STS       UBRR0L, _ACCA                 ;<-gelb fehler
                        .LINE     78
                        LDI       _ACCA, 001h
                        .LINE     79
                        STS       UBRR0H, _ACCA                  ;<-gelb fehler


wer könnte mir einen Tipp geben ?
Danke
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Bootloader

 · 
Posted: 24.11.2014 - 14:07  ·  #2
Hallo,

Mega8 + Bootloader? Sehr gewagt.
Das Problem hier scheint zu sein, dass der Loader Treiber hier die falschen
Baudrate Register benutzt. Muss ich mal nachprüfen.

Im übrigen, Hilfe kann ich nur geben wenn dies beachtet wird,
siehe Anhang

rolf
Attachments
Bugreports
Filename: Bugreport.jpg
Filesize: 36.13 KB
Title: Bugreports
Download counter: 135
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: Bootloader

 · 
Posted: 24.11.2014 - 15:24  ·  #3
Hallo Rolf, ich habe zwar noch eine ältere AVRco Version mit Programmer. Aber ich habe mir
gerade mal die AVRco8Mega free gsaugt und da gibts das gleiche Problem.

Ich erstelle nur das Projekt, eigenen Code habe ich noch nicht geschrieben, bekomme aber den Fehler. Und den habe ich als Quarz 14745600Mhz also sollte Baud einstellen kein Problem sein.


Hier mal den Code den AVRco mir vorbereitet.

Code

program BootloaderM8;

{ $BOOTRST $00C00}         {Reset Jump to $00C00}
{$NOSHADOW}
{ $WG}                     {global Warnings off}

Device = mega8, VCC=5;

Import SysTick, FlashWrite, SerPort;

From System Import ;


Define
  ProcClock      = 14745600;       {Hertz}
  SysTick        = 10;             {msec}
  StackSize      = $0032, iData;
  FrameSize      = $0032, iData;
  SerPort        = 2400, Stop1;    {Baud, StopBits|Parity}
  RxBuffer       = 8, iData;
  TxBuffer       = 8, iData;

Implementation

{$IDATA}

{--------------------------------------------------------------}
{ Type Declarations }

type


{--------------------------------------------------------------}
{ Const Declarations }
const
  _BootCheckF[@$17FE]  : word    = $AA55;

{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}


{--------------------------------------------------------------}
{ functions }

{$PHASE BootBlock $00C00}
procedure BootTest;               // this is the first code building
begin                             // part of the boot block
                                  // this is the absolute reset entry
  ASM;
   ; check Flash validity         // replace "%" by real name
    LDI       _ACCCLO, %._BOOTCHECKF AND 0FFh
    LDI       _ACCCHI, %._BOOTCHECKF SHRB 8
    LPM       _ACCA, Z+
    CPI       _ACCA, 055h
    BRNE      BootTestX
    LPM       _ACCA, Z+
    CPI       _ACCA, 0AAh
    BRNE      BootTestX
   ;  // normal program start
    JMP       0000h;
    BootTestX:
   ; // check failed, try to download
  ENDASM;

  FlashDownLoader;
end;

procedure FlashLoaderInit;
begin
  ASM;
   ; > > SERPORT Init < <
   ; > > Baudrate 2400Baud < <
    LDI       _ACCA, 01Dh                   ; Rx and Tx enanable, polling
    STS       ucr1, _ACCA                   ;
    LDI       _ACCA, 0A0h                   ; Baud
    STS       UBRR0L, _ACCA                 ;
    LDI       _ACCA, 001h
    STS       UBRR0H, _ACCA                  ;
  ENDASM;
end;

procedure FlashLoaderRecv;
begin
  ASM;
FLASHLDRRX:
    LDS       _ACCA, usr1                    ; Receiver ready?
    SBRS      _ACCA, 7                       ; Receiver ready?
    RJMP      FLASHLDRRX                     ; if not
    LDS       _ACCA, udr1
  ENDASM;
end;

procedure FlashLoaderTransm;
begin
  ASM;
FLASHLDRTX:
    LDS       _ACCB, usr1                   ; Transmitter ready?
    SBRS      _ACCB, 5                      ; Transmitter ready?
    RJMP      FLASHLDRTX                    ; if not
    STS       udr1, _ACCA
  ENDASM;
end;

{ optional
procedure FlashLoaderExit;
begin
  ASM: JMP    0000h;
end;
}
{$DEPHASE BootBlock}



{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin


  EnableInts;
  loop


  endloop;
end BootloaderM8.
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: Bootloader

 · 
Posted: 24.11.2014 - 16:45  ·  #4
Nachtrag...

Wenn ich aus Device = mega8, Device = mega64, mache, ist alles ok !
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Bootloader

 · 
Posted: 24.11.2014 - 18:58  ·  #5
Hallo,

ein UBRR0L und UBRR0H gibt es beim Mega8 nicht !!
Und so tuts:
Code
    LDI       _ACCA, 01Dh                   ; Rx and Tx enanable, polling
    STS       ucr1, _ACCA                   ;
    LDI       _ACCA, 0A0h                   ; Baud
    STS       UBRRL, _ACCA                 ;
    LDI       _ACCA, 001h
    STS       UBRRH, _ACCA                  ;

rolf
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

Re: Bootloader

 · 
Posted: 24.11.2014 - 19:32  ·  #6
Jo es geht.... Danke :angel3:
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: 16 · Cache Hits: 15   112   127 · Page-Gen-Time: 0.037952s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI