XMega_FATboot mit LCD für Flashstatus

  • 1
  • 2
  • 3
  • 4
  • Page 1 of 4
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

XMega_FATboot mit LCD für Flashstatus

 · 
Posted: 28.06.2018 - 20:13  ·  #1
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:
Code
Error: Code exceeds romsize: 62352h > 61FFFh

Heisst mein Code ist für den Bootloader zu groß :-D

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;


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


Ich dachte eigentlich, das mit dem BIT-Geschupse der Code klein und schnell ist, schnell wahrscheinlich :-D

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
PrjInfo
Filename: 28-06-_2018_20-10-31.jpg
Filesize: 327.76 KB
Title: PrjInfo
Information: PrjInfo
Download counter: 145
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: XMega_FATboot mit LCD für Flashstatus

 · 
Posted: 28.06.2018 - 21:15  ·  #2
Ich konnte noch etwas optimieren, leider schaffe ich es im Moment nicht mit dem verbleibenden 1 kByte einen Text auszugeben.

Beim ersten gDrawString sprenge ich den BootFlash.
Warum braucht das so viel Speicher?

Jetzt bin ich am überlegen, ob ich die 3-4 Texte als feste Grafik direkt auf das Display schreibe.

Die Funktion gDrawBitMap() schreibt doch die Grafik-Daten direkt an das GraphIOS oder?
Kann ich das laden des " DefCharSet = 'PVSGraphchars.pchr';" Irgendwie unterbinden um Flash zu sparen?

Oder sollte ich lieber ganz auf den AVRCO-Treiber verzichten und die Daten direkt schreiben? Hat das schon mal Jemand in den BOOT-Bereich gemacht?
Attachments
vor gDrawString
Filename: 28-06-_2018_20-41-40.jpg
Filesize: 130.35 KB
Title: vor gDrawString
Information: vor gDrawString
Download counter: 145
vor gDrawString2
Filename: 28-06-_2018_20-44-11.jpg
Filesize: 320.7 KB
Title: vor gDrawString2
Information: vor gDrawString2
Download counter: 142
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: XMega_FATboot mit LCD für Flashstatus

 · 
Posted: 29.06.2018 - 12:33  ·  #3
Tja, die ersten Versuche mit dem XMEGA_FATboot, waren leider sehr ernüchternd.
Flash-Vorgang von SD funktioniert nicht :-( Nach 2 Fehlversuchen hatte die SD-Card einen Fehler und konnte keinen Init mehr machen ???

Nochmal die Frage in die Runde, wer hat XMEGA_FATboot erfolgreich am laufen?

Gibt es hier eine Größenbeschränkung der SD-Card? Die Karte wurde mit FAT formatiert. Im normalen Zugriff läuft diese ohne Probleme. Und warum zerschiesst es die SD-Card beim lesen????

Jemand eine Idee?

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

Re: XMega_FATboot mit LCD für Flashstatus

 · 
Posted: 29.06.2018 - 14:49  ·  #4
Hallo Thorsten,

Stack/Frame Problem?
Das FAT ist schon ein Eumel und dazu noch evtl. USB oder Strings.......

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

Re: XMega_FATboot mit LCD für Flashstatus

 · 
Posted: 29.06.2018 - 15:50  ·  #5
Hi Thorsten,
auf der SD karte sollte nichts anderes drauf sein.
Das AVRco GraphIOS verbietet sich natürlich im Boot.
Ne eigene mini Text Routine kommt mit 500 bytes für das LCD aus.

miparo
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: XMega_FATboot mit LCD für Flashstatus

 · 
Posted: 29.06.2018 - 17:19  ·  #6
Quote by miparo

Hi Thorsten,
auf der SD karte sollte nichts anderes drauf sein.
Das AVRco GraphIOS verbietet sich natürlich im Boot.
Ne eigene mini Text Routine kommt mit 500 bytes für das LCD aus.

miparo

@rolf
ja, das werde ich mal testen.

@miparo,

warum sollte da nichts anderes auf der SD drauf sein?
Was ich aus dem Code lesen konnte, sucht er doch nach den Dateinamen und startet ab da die direkte Lese-Routinen oder? Nichts anderes auf der SC-Card ist keine Option. Da sind die ganzen Einstellungen und Logbucher drauf.

GraphIOS; Hier bin ich bereits dabei die eigenen Routinen für Textausgaben zu erstellen.
Kann ich irgendwie den "DefCharSet = 'PVSGraphchars.pchr';" für meine eigenen Routinen verwenden? Wie ist der Aufbau dieser Dateien? Ich habe in der Doku leider nichts gefunden.

Thorsten
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: XMega_FATboot mit LCD für Flashstatus

 · 
Posted: 29.06.2018 - 17:47  ·  #7
Ok, das sollte in etwa der Aufbau des Datei-Formates sein, aber kann ich diese direkt reinladen und verwenden, z.B. als Byte Array oder so? Wenn ja wie??

Thorsten
Attachments
So in etwa
Filename: 29-06-_2018_17-28-13.jpg
Filesize: 543.62 KB
Title: So in etwa
Information: So in etwa
Download counter: 136
miparo
Administrator
Avatar
Gender:
Location: Germany
Age: 58
Posts: 959
Registered: 09 / 2007
Subject:

Re: XMega_FATboot mit LCD für Flashstatus

 · 
Posted: 29.06.2018 - 17:55  ·  #8
In der Profi Doku steht extra:
3.23.1 Bootloader Programm
Allerdings muss das DLD File(s) sich in den ersten 2GB befinden.

Der FAT Treiber darin ist halt nur minimalistisch aus Platzgründen.

miparo
  • 1
  • 2
  • 3
  • 4
  • Page 1 of 4
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: 18 · Cache Hits: 15   145   160 · Page-Gen-Time: 0.026298s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI