Hallo,
hat Jemand das DEMO XMEGA_Fatboot zuverlässig am laufen?
Da der Weg über den USB-Flashloader seit einiger Zeit nicht mehr funktioniert (bei großen Code bricht er immer ab), wollte ich es mal mit dem XMEGA_FATboot probieren.
Gehe ich recht in der Annahme, das die Meldung:
Heisst mein Code ist für den Bootloader zu groß
Ich versuche das LCD-Display mit ein paar einfachen Text-Statusmeldungen beim FLASH zu aktivieren, ich hoffe ich bekomme es zusammen hin.
Der 4bit Datenmode wird scheinbar nicht unterstützt oder? Leider habe ich keine DOKU über die FAT_BootPort-Funktionen gefunden.
Mir ist aufgefallen, das der Code:
Doch recht lange in ASM ist:
Ich dachte eigentlich, das mit dem BIT-Geschupse der Code klein und schnell ist, schnell wahrscheinlich
Kann ich hier noch irgendwo Speicher sparen? Ich weiss 8kb sind nicht viel, aber 1-2 Texte würde ich schon gerne auf dem Display anzeigen beim Flash-Vorgang.
Thorsten
hat Jemand das DEMO XMEGA_Fatboot zuverlässig am laufen?
Da der Weg über den USB-Flashloader seit einiger Zeit nicht mehr funktioniert (bei großen Code bricht er immer ab), wollte ich es mal mit dem XMEGA_FATboot probieren.
Gehe ich recht in der Annahme, das die Meldung:
Code
Error: Code exceeds romsize: 62352h > 61FFFh
Heisst mein Code ist für den Bootloader zu groß
Ich versuche das LCD-Display mit ein paar einfachen Text-Statusmeldungen beim FLASH zu aktivieren, ich hoffe ich bekomme es zusammen hin.
Der 4bit Datenmode wird scheinbar nicht unterstützt oder? Leider habe ich keine DOKU über die FAT_BootPort-Funktionen gefunden.
Mir ist aufgefallen, das der Code:
Code
// Wandle Daten in Display-Format um
procedure DispBW2RGB( temp : byte); //turns 1byte B/W data to 4k-color data(RRRR-GGGG-BBBB)
var
temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8 : byte;
h11,h12,h13,h14,h15,h16,h17,h18,d1,d2,d3,d4 : byte;
begin
temp1:=temp AND $80;
temp2:=( temp AND $40) SHR 3; // >>3;
temp3:=( temp AND $20) SHL 2; // <<2;
temp4:=( temp AND $10) SHR 1; // >>1;
temp5:=( temp AND $08) SHL 4; // <<4;
temp6:=( temp AND $04) SHL 1; // <<1;
temp7:=( temp AND $02) SHL 6; // <<6;
temp8:=( temp AND $01) SHL 3; // <<3;
h11:=temp1 OR (temp1 SHR 1) OR (temp1 SHR 2) OR (temp1 SHR 3);
h12:=temp2 OR (temp2 SHR 1) OR (temp2 SHR 2) OR (temp2 SHR 3);
h13:=temp3 OR (temp3 SHR 1) OR (temp3 SHR 2) OR (temp3 SHR 3);
h14:=temp4 OR (temp4 SHR 1) OR (temp4 SHR 2) OR (temp4 SHR 3);
h15:=temp5 OR (temp5 SHR 1) OR (temp5 SHR 2) OR (temp5 SHR 3);
h16:=temp6 OR (temp6 SHR 1) OR (temp6 SHR 2) OR (temp6 SHR 3);
h17:=temp7 OR (temp7 SHR 1) OR (temp7 SHR 2) OR (temp7 SHR 3);
h18:=temp8 OR (temp8 SHR 1) OR (temp8 SHR 2) OR (temp8 SHR 3);
d1:= h11 OR h12;
d2:= h13 OR h14;
d3:= h15 OR h16;
d4:= h17 OR h18;
WriteLCD(d1,true);
WriteLCD(d2,true);
WriteLCD(d3,true);
WriteLCD(d4,true);
end DispBW2RGB;
procedure DispBW2RGB( temp : byte); //turns 1byte B/W data to 4k-color data(RRRR-GGGG-BBBB)
var
temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8 : byte;
h11,h12,h13,h14,h15,h16,h17,h18,d1,d2,d3,d4 : byte;
begin
temp1:=temp AND $80;
temp2:=( temp AND $40) SHR 3; // >>3;
temp3:=( temp AND $20) SHL 2; // <<2;
temp4:=( temp AND $10) SHR 1; // >>1;
temp5:=( temp AND $08) SHL 4; // <<4;
temp6:=( temp AND $04) SHL 1; // <<1;
temp7:=( temp AND $02) SHL 6; // <<6;
temp8:=( temp AND $01) SHL 3; // <<3;
h11:=temp1 OR (temp1 SHR 1) OR (temp1 SHR 2) OR (temp1 SHR 3);
h12:=temp2 OR (temp2 SHR 1) OR (temp2 SHR 2) OR (temp2 SHR 3);
h13:=temp3 OR (temp3 SHR 1) OR (temp3 SHR 2) OR (temp3 SHR 3);
h14:=temp4 OR (temp4 SHR 1) OR (temp4 SHR 2) OR (temp4 SHR 3);
h15:=temp5 OR (temp5 SHR 1) OR (temp5 SHR 2) OR (temp5 SHR 3);
h16:=temp6 OR (temp6 SHR 1) OR (temp6 SHR 2) OR (temp6 SHR 3);
h17:=temp7 OR (temp7 SHR 1) OR (temp7 SHR 2) OR (temp7 SHR 3);
h18:=temp8 OR (temp8 SHR 1) OR (temp8 SHR 2) OR (temp8 SHR 3);
d1:= h11 OR h12;
d2:= h13 OR h14;
d3:= h15 OR h16;
d4:= h17 OR h18;
WriteLCD(d1,true);
WriteLCD(d2,true);
WriteLCD(d3,true);
WriteLCD(d4,true);
end DispBW2RGB;
Doch recht lange in ASM ist:
Code
PVS2018_BOOTSD.DispBW2RGB:
.RETURNS 0
SBIW _FRAMEPTR, 20
.BLOCK 159
.LINE 160
LDD _ACCA, Y+014h
ANDI _ACCA, 080h
STD Y+013h, _ACCA
.LINE 162
LDD _ACCA, Y+014h
ANDI _ACCA, 040h
LSR _ACCA
LSR _ACCA
LSR _ACCA
STD Y+012h, _ACCA
.LINE 163
LDD _ACCA, Y+014h
ANDI _ACCA, 020h
LSL _ACCA
LSL _ACCA
STD Y+011h, _ACCA
.LINE 164
LDD _ACCA, Y+014h
ANDI _ACCA, 010h
LSR _ACCA
STD Y+010h, _ACCA
.LINE 165
LDD _ACCA, Y+014h
ANDI _ACCA, 008h
LSL _ACCA
LSL _ACCA
LSL _ACCA
LSL _ACCA
STD Y+00Fh, _ACCA
.LINE 166
LDD _ACCA, Y+014h
ANDI _ACCA, 004h
LSL _ACCA
STD Y+00Eh, _ACCA
.LINE 167
LDD _ACCA, Y+014h
ANDI _ACCA, 002h
LDI _ACCALO, 006h
RCALL SYSTEM.SHL8_R
STD Y+00Dh, _ACCA
.LINE 168
LDD _ACCA, Y+014h
ANDI _ACCA, 001h
LSL _ACCA
LSL _ACCA
LSL _ACCA
STD Y+00Ch, _ACCA
.LINE 169
LDD _ACCB, Y+013h
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+013h
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+013h
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+00Bh, _ACCA
.LINE 171
LDD _ACCB, Y+012h
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+012h
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+012h
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+00Ah, _ACCA
.LINE 172
LDD _ACCB, Y+011h
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+011h
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+011h
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+009h, _ACCA
.LINE 173
LDD _ACCB, Y+010h
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+010h
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+010h
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+008h, _ACCA
.LINE 174
LDD _ACCB, Y+00Fh
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+00Fh
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+00Fh
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+007h, _ACCA
.LINE 175
LDD _ACCB, Y+00Eh
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+00Eh
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+00Eh
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+006h, _ACCA
.LINE 176
LDD _ACCB, Y+00Dh
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+00Dh
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+00Dh
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+005h, _ACCA
.LINE 177
LDD _ACCB, Y+00Ch
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+00Ch
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+00Ch
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+004h, _ACCA
.LINE 178
LDD _ACCB, Y+00Bh
LDD _ACCA, Y+00Ah
OR _ACCA, _ACCB
STD Y+003h, _ACCA
.LINE 180
LDD _ACCB, Y+009h
LDD _ACCA, Y+008h
OR _ACCA, _ACCB
STD Y+002h, _ACCA
.LINE 181
LDD _ACCB, Y+007h
LDD _ACCA, Y+006h
OR _ACCA, _ACCB
STD Y+001h, _ACCA
.LINE 182
LDD _ACCB, Y+005h
LDD _ACCA, Y+004h
OR _ACCA, _ACCB
STD Y+000h, _ACCA
.LINE 183
LDD _ACCA, Y+003h
ST -Y, _ACCA
.FRAME 1
LDI _ACCA, true
ST -Y, _ACCA
.FRAME 2
.FRAME 0
.BRANCH 17,PVS2018_BOOTSD.WRITELCD
RCALL PVS2018_BOOTSD.WRITELCD
ADIW _FRAMEPTR, 2
.LINE 184
LDD _ACCA, Y+002h
ST -Y, _ACCA
.FRAME 1
LDI _ACCA, true
ST -Y, _ACCA
.FRAME 2
.FRAME 0
.BRANCH 17,PVS2018_BOOTSD.WRITELCD
RCALL PVS2018_BOOTSD.WRITELCD
ADIW _FRAMEPTR, 2
.LINE 185
LDD _ACCA, Y+001h
ST -Y, _ACCA
.FRAME 1
LDI _ACCA, true
ST -Y, _ACCA
.FRAME 2
.FRAME 0
.BRANCH 17,PVS2018_BOOTSD.WRITELCD
RCALL PVS2018_BOOTSD.WRITELCD
ADIW _FRAMEPTR, 2
.LINE 186
LDD _ACCA, Y+000h
ST -Y, _ACCA
.FRAME 1
LDI _ACCA, true
ST -Y, _ACCA
.FRAME 2
.FRAME 0
.BRANCH 17,PVS2018_BOOTSD.WRITELCD
RCALL PVS2018_BOOTSD.WRITELCD
ADIW _FRAMEPTR, 2
.ENDBLOCK 187
.LINE 187
.BRANCH 19
RET
.ENDFUNC 187
.DEB LCDGRAPHIC
.FUNC GRAPHIOS, 000BEh, 00020h
.RETURNS 0
SBIW _FRAMEPTR, 20
.BLOCK 159
.LINE 160
LDD _ACCA, Y+014h
ANDI _ACCA, 080h
STD Y+013h, _ACCA
.LINE 162
LDD _ACCA, Y+014h
ANDI _ACCA, 040h
LSR _ACCA
LSR _ACCA
LSR _ACCA
STD Y+012h, _ACCA
.LINE 163
LDD _ACCA, Y+014h
ANDI _ACCA, 020h
LSL _ACCA
LSL _ACCA
STD Y+011h, _ACCA
.LINE 164
LDD _ACCA, Y+014h
ANDI _ACCA, 010h
LSR _ACCA
STD Y+010h, _ACCA
.LINE 165
LDD _ACCA, Y+014h
ANDI _ACCA, 008h
LSL _ACCA
LSL _ACCA
LSL _ACCA
LSL _ACCA
STD Y+00Fh, _ACCA
.LINE 166
LDD _ACCA, Y+014h
ANDI _ACCA, 004h
LSL _ACCA
STD Y+00Eh, _ACCA
.LINE 167
LDD _ACCA, Y+014h
ANDI _ACCA, 002h
LDI _ACCALO, 006h
RCALL SYSTEM.SHL8_R
STD Y+00Dh, _ACCA
.LINE 168
LDD _ACCA, Y+014h
ANDI _ACCA, 001h
LSL _ACCA
LSL _ACCA
LSL _ACCA
STD Y+00Ch, _ACCA
.LINE 169
LDD _ACCB, Y+013h
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+013h
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+013h
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+00Bh, _ACCA
.LINE 171
LDD _ACCB, Y+012h
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+012h
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+012h
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+00Ah, _ACCA
.LINE 172
LDD _ACCB, Y+011h
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+011h
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+011h
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+009h, _ACCA
.LINE 173
LDD _ACCB, Y+010h
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+010h
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+010h
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+008h, _ACCA
.LINE 174
LDD _ACCB, Y+00Fh
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+00Fh
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+00Fh
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+007h, _ACCA
.LINE 175
LDD _ACCB, Y+00Eh
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+00Eh
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+00Eh
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+006h, _ACCA
.LINE 176
LDD _ACCB, Y+00Dh
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+00Dh
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+00Dh
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+005h, _ACCA
.LINE 177
LDD _ACCB, Y+00Ch
MOV _ACCA, _ACCB
LSR _ACCB
OR _ACCB, _ACCA
LDD _ACCA, Y+00Ch
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
MOV _ACCB, _ACCA
LDD _ACCA, Y+00Ch
LSR _ACCA
LSR _ACCA
LSR _ACCA
OR _ACCA, _ACCB
STD Y+004h, _ACCA
.LINE 178
LDD _ACCB, Y+00Bh
LDD _ACCA, Y+00Ah
OR _ACCA, _ACCB
STD Y+003h, _ACCA
.LINE 180
LDD _ACCB, Y+009h
LDD _ACCA, Y+008h
OR _ACCA, _ACCB
STD Y+002h, _ACCA
.LINE 181
LDD _ACCB, Y+007h
LDD _ACCA, Y+006h
OR _ACCA, _ACCB
STD Y+001h, _ACCA
.LINE 182
LDD _ACCB, Y+005h
LDD _ACCA, Y+004h
OR _ACCA, _ACCB
STD Y+000h, _ACCA
.LINE 183
LDD _ACCA, Y+003h
ST -Y, _ACCA
.FRAME 1
LDI _ACCA, true
ST -Y, _ACCA
.FRAME 2
.FRAME 0
.BRANCH 17,PVS2018_BOOTSD.WRITELCD
RCALL PVS2018_BOOTSD.WRITELCD
ADIW _FRAMEPTR, 2
.LINE 184
LDD _ACCA, Y+002h
ST -Y, _ACCA
.FRAME 1
LDI _ACCA, true
ST -Y, _ACCA
.FRAME 2
.FRAME 0
.BRANCH 17,PVS2018_BOOTSD.WRITELCD
RCALL PVS2018_BOOTSD.WRITELCD
ADIW _FRAMEPTR, 2
.LINE 185
LDD _ACCA, Y+001h
ST -Y, _ACCA
.FRAME 1
LDI _ACCA, true
ST -Y, _ACCA
.FRAME 2
.FRAME 0
.BRANCH 17,PVS2018_BOOTSD.WRITELCD
RCALL PVS2018_BOOTSD.WRITELCD
ADIW _FRAMEPTR, 2
.LINE 186
LDD _ACCA, Y+000h
ST -Y, _ACCA
.FRAME 1
LDI _ACCA, true
ST -Y, _ACCA
.FRAME 2
.FRAME 0
.BRANCH 17,PVS2018_BOOTSD.WRITELCD
RCALL PVS2018_BOOTSD.WRITELCD
ADIW _FRAMEPTR, 2
.ENDBLOCK 187
.LINE 187
.BRANCH 19
RET
.ENDFUNC 187
.DEB LCDGRAPHIC
.FUNC GRAPHIOS, 000BEh, 00020h
Ich dachte eigentlich, das mit dem BIT-Geschupse der Code klein und schnell ist, schnell wahrscheinlich
Kann ich hier noch irgendwo Speicher sparen? Ich weiss 8kb sind nicht viel, aber 1-2 Texte würde ich schon gerne auf dem Display anzeigen beim Flash-Vorgang.
Thorsten
Attachments
Filename: | 28-06-_2018_20-10-31.jpg |
Filesize: | 327.76 KB |
Title: | PrjInfo |
Information: | PrjInfo |
Download counter: | 145 |