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,
// $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.
{$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}
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
InitPorts;
EnableInts;
BootTest;
Gruß Frank
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