FlashLoader

  • 1
  • 2
  • 3
  • Page 1 of 3
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 766
Registered: 06 / 2013
Subject:

FlashLoader

 · 
Posted: 20.07.2015 - 12:36  ·  #1
Moin,
da ich mir eine kleine TestPlatine geätzt habe mit
1. AtMega32A-AU
2. FtDt232R
3. LCD Anzeige

versuche ich jetzt endlich, mich mal in einen FlashLoader einzuarbeiten.
ich blicke da einfach nicht durch. das ist schon was anderes als die daten
über miso mosi sck einzuclocken.

ich wollte erstmal mit dem FlashDownloader von AVRco mit der Platine Kontakt aufnehmen.
Später Programmiere ich mir mal selber was.

Der FlashDownloader sagt "Target not found", ich zeige euch mal meinen anfangs code.
vllt hat der eine oder andere mal lust mir was darüber zu schreiben.

PS. Wie sieht das mit der Reset-leitung aus ?



Gleich als erstes FlashWrite,
Code

//  $BOOTRST $03800         {Reset Jump to $03800}
{$NOSHADOW}
{$WG}                      {global Warnings on}

Device = mega32, VCC=5;

Import  FlashWrite, SysTick, SerPort, LCDport;






Bei "procedure BootTest" habe ich erstmal soweit alles rausgelssen und nur den FlashDownLoader; gelassen.

Code

{$PHASE BootBlock $03800}
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 19200Baud <<
 LDI _ACCA, 018h ; Rx and Tx enable, polling
 OUT ucr1, _ACCA ;
 LDI _ACCA, 019h  ; 19200 Baud
 OUT ubrr1, _ACCA ;
 SBI ucr1, 2 ; 2 stop bits
 SBI ucr1, 0 ; 2. stopbit = 0
 ENDASM;
end;

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

procedure FlashLoaderTransm;
begin
  ASM;
  FLASHLDRTX:
    SBIS      usr1, 5                        ; Transmitter ready?
    RJMP      FLASHLDRTX                     ; if not
    OUT       udr1, _ACCA
  ENDASM;
end;

procedure FlashLoaderExit;
begin
  ASM: JMP    SYSTEM.VectTab;
end;
{$DEPHASE BootBlock}




Code

{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
  InitPorts;
  EnableInts;
  BootTest;





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

Re: FlashLoader

 · 
Posted: 20.07.2015 - 14:02  ·  #2
Hallo Frank,

nimm doch das Demo Projekt "BootApp". Damit gibt es am wenigsten Probleme
bzw. Missverständnisse! Und wenn das nicht in die Mega32 Bootsection reinpasst,
den Merlin Opti benutzen.

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

Re: FlashLoader

 · 
Posted: 20.07.2015 - 14:39  ·  #3
Hallo Rolf, das werde ich auch testen.

Nur muss ich erstmal verstehen was da passiert. Das ist ja alles Neuland für mich.
Ich habe gerade mal den Simulator gestartet und hab auch mal paar Befehle gesendet.
Ich bekomme auch ganze Blöcke zurück gesendet. Sehe ich ja im Simu..

Nur frage ich mich warum dein Tool FlashDownloader sagt "Target not found",
man kann nur 19200 und ComPort einstellen, mehr nicht, wie prüft denn dein Tool nach der
Hardware ?

Ich habe schon den verdacht das hier was nicht stimmt,
Code

Procedure FlashLoaderInit;
begin
 ASM;
 ; >> SERPORT Init <<
 ; >> Baudrate 19200Baud <<
 LDI _ACCA, 018h ; Rx and Tx enable, polling
 OUT ucr1, _ACCA ;
 LDI _ACCA, 019h  ; 19200 Baud
 OUT ubrr1, _ACCA ;
 SBI ucr1, 2 ; 2 stop bits
 SBI ucr1, 0 ; 2. stopbit = 0
 ENDASM;
end;



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

Re: FlashLoader

 · 
Posted: 20.07.2015 - 15:05  ·  #4
Nun habe ich Kontakt mit meiner Hardware. Dein FlashDownloader Arbeitet.
Ich muss doch in den asm Code mein Quarz anpassen. 14.745.600 Mhz
Mit dem SBI ucr1, 7; und LDI _ACCA, 02Fh

Code

Procedure FlashLoaderInit;
begin
 ASM;
 ; >> SERPORT Init <<
 ; >> Baudrate 19200Baud <<
 LDI _ACCA, 018h ; Rx and Tx enable, polling
 OUT ucr1, _ACCA ;
 LDI _ACCA, 02Fh  ; 19200 Baud
 OUT ubrr1, _ACCA ;
 SBI       ucr1, 7;
 ENDASM;
end;


Tja um das ganze zu starten könnte man ein Jumper oder Taster am Proz anbringen, oder
in mein eigenem Tool ein Befehl senden zum FlashLoaderInit;

Weil im mom laufe ich ja gleich rein und werde auch nach Befehl X immer wieder rein laufen.
Begin
InitPorts;
EnableInts;
BootTest;

ok, weiter üben, so schwer kann das nicht sein.

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

Re: FlashLoader

 · 
Posted: 20.07.2015 - 16:27  ·  #5
Hallo Frank,

also meine Strategie, z.B. in uneren Programmern, ist bei einem Reset immer
in das Boot reinspringen. Das testet jetzt ob eine gültige App vorhanden ist.
Wenn ja dann Einsprung in die App. Wenn nein, dann warten bis der Down
Loader Kontakt aufnimmt. Etwas anderes kann das Boot dann ja eigentlich
nicht tun....

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

Re: FlashLoader

 · 
Posted: 21.07.2015 - 15:46  ·  #6
Hallo, mal kleinen Statusbericht geben wie es gerade aussieht.

Also ich habe mir ein kleines TestProgramm Prog.
Erstmal auslesen der Infos die man bekommt

> I Host fordert Loader Info an<
alles soweit ok, auch die erste Page kann ich auslesen.

Aber nun beim Prog. der ersten Page, da muss ich was falsch machen.
So sende ich das um die erste Page rein zu bekommen.
Code

//  A loAdr HiAdr  cr
//  E cr                  Host fordert löschen der aktuellen Page
//  D cc                 Host lädt eine Page Daten zum Loader herunter
//  P cr                  Host fordert Programmieren des Zwischenspeichers ins Flash


Nach A bekomme ich CR zurück, bei E auch CR, nur bei D bekomme ich eine 0 als CC
P Antwortet gar nicht mehr.

was mache ich falsch ?


Nachtrag.
Gehe ich mit meinen AVR Progrmmer dran, sehe ich das die erste Page gelöscht wurde.


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

Re: FlashLoader

 · 
Posted: 21.07.2015 - 18:58  ·  #7
:aerger:


man sollte schon 128 byte für eine Page senden, nicht 64
Write_USB_Device_Buffer( 129 );
dann klappt es auch mit dem nachbarn. :angry1:


Gruß Frank
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: FlashLoader

 · 
Posted: 21.07.2015 - 19:10  ·  #8
Quote by TheBeginner

man sollte schon 128 byte für eine Page senden, nicht 64


Wenn es ein Mega32. Siehe DSC File PageSize=128
  • 1
  • 2
  • 3
  • Page 1 of 3
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   140   154 · Page-Gen-Time: 0.052905s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI