Seite 1 von 9

PASM Bootloader

Verfasst: Fr 6. Sep 2013, 21:02
von PIC18F2550
Im Anhang die Schrittkette eines PASM-Loaders für Regnatix.
Die Grundstrucktur und Arbeitsweise sollte schon erkennbar sein.

Code: Alles auswählen

OBJ

CON
_CLKMODE     = XTAL1 + PLL4X
_XINFREQ     = 20_000_000

VAR

DAT
DATEN
            Byte  "LIB",0,0,0,0,0,0,0,0,0     ' Path Administra
            Long  0
            Byte  0,0,0,0,0,0,0,0,0,0,0,0     ' Administra
            Long  0
            Byte  "LIB",0,0,0,0,0,0,0,0,0     ' Path Bellatrix
            Long  0
            Byte  0,0,0,0,0,0,0,0,0,0,0,0     ' Bellatrix
            Long  0
            Byte  "BOOT" ,0,0,0,0,0,0,0,0     ' Path Regnatix
            Long  0
            Byte  "reg.bin"    ,0,0,0,0,0     ' Regnatix
            Long  0

DAT
                    org     0
'#####################################################################################
'# Warten auf Startfreigabe
'#####################################################################################
loader

'#####################################################################################
'# BUS-Init
'#####################################################################################

'#####################################################################################
'# Copy Dateinahmen
'#####################################################################################

'#####################################################################################
'# Alle anderen COG's Stoppen
'#####################################################################################

'#####################################################################################
'# sd-card: test ob volume gemounted ist
'#####################################################################################

'#####################################################################################
'# sd-card: volume unmounten
'#####################################################################################

'#####################################################################################
'# sd-card: volume mounten
'#####################################################################################

'#####################################################################################
'# sd-card: verzeichnis wechseln ADMINISTRA
'#####################################################################################

'#####################################################################################
'# 'chip-mgr: neuen ADMINISTRA-code booten
'#####################################################################################

'#####################################################################################
'# sd-card: volume mounten
'#####################################################################################

'#####################################################################################
'# sd-card: verzeichnis wechseln BELLATRIX
'#####################################################################################

'#####################################################################################
'# 'chip-mgr: neuen BELLATRIX-code booten
'#####################################################################################

'#####################################################################################
'# sd-card: verzeichnis wechseln REGNATIX
'#####################################################################################

'#####################################################################################
'# 'chip-mgr: neuen REGNATIX-code booten
'#####################################################################################

'#####################################################################################
'# Rücksprung auf Startfreigabe
'#####################################################################################

' ======================================================================================
' SUBROUTINEN : wait 1s / 2s / 3s / 4s
' ======================================================================================

' ======================================================================================
' SUBROUTINEN : sd-card: verzeichnis wechseln
' ======================================================================================

' ======================================================================================
' SUBROUTINEN : string senden
' ======================================================================================
' zeichenstring zu administra senden ende durch $00
' zeichenstring zu bellatrix senden ende durch $00

' ======================================================================================
' SUBROUTINEN : businterface
' ======================================================================================
' byte zu administra senden
' long zu administra senden
' byte zu bellatrix senden
' byte von administra empfangen
' byte von belatrix empfangen

' ======================================================================================
' SUBROUTINEN : Error
' ======================================================================================

' ======================================================================================
' KONSTANTEN & VARIABELN
' ======================================================================================

STATUSADR   long  $0000_7FFC

HOMEZ       long   @HOME
PATH1Z      long   @PATH1
DATEI1Z     long   @DATEI1
PATH2Z      long   @PATH2
DATEI2Z     long   @DATEI2
PATH3Z      long   @PATH3
DATEI3Z     long   @DATEI3

HOME        byte  "..",0,0
PATH1       long  0,0,0,0         ' Verzeichnis von wo geladen werden Soll
DATEI1      long  0,0,0,0
PATH2       long  0,0,0,0
DATEI2      long  0,0,0,0
PATH3       long  0,0,0,0
DATEI3      long  0,0,0,0

ERRLIST     long  @ERRT_01, @ERRT_02, @ERRT_03, @ERRT_04, @ERRT_05, @ERRT_06, @ERRT_07, @ERRT_08, @ERRT_09, @ERRT_10
            long  @ERRT_11, @ERRT_12, @ERRT_13, @ERRT_14, @ERRT_15, @ERRT_16, @ERRT_17, @ERRT_18, @ERRT_19, @ERRT_20
            long  @ERRT_21, @ERRT_22, @ERRT_23, @ERRT_24, @ERRT_25', @ERRT_26, @ERRT_27, @ERRT_28, @ERRT_29, @ERRT_30

ERRT_01     byte  "card not moundet",$A,0
ERRT_02     byte  "fsys unmounted",$A,0
ERRT_03     byte  "fsys corrupted",$A,0
ERRT_04     byte  "fsys unsupported",$A,0
ERRT_05     byte  "not found",$A,0
ERRT_06     byte  "file not found",$A,0
ERRT_07     byte  "dir not found",$A,0
ERRT_08     byte  "file read only",$A,0
ERRT_09     byte  "end of file",$A,0
ERRT_10     byte  "end of directory",$A,0
ERRT_11     byte  "end of root",$A,0
ERRT_12     byte  "dir is full",$A,0
ERRT_13     byte  "dir is not empty",$A,0
ERRT_14     byte  "checksum error",$A,0
ERRT_15     byte  "reboot error",$A,0
ERRT_16     byte  "bpb corrupt",$A,0
ERRT_17     byte  "fsi corrupt",$A,0
ERRT_18     byte  "dir already exist",$A,0
ERRT_19     byte  "file already exist",$A,0
ERRT_20     byte  "out of disk free space",$A,0
ERRT_21     byte  "disk io error",$A,0
ERRT_22     byte  "command not found",$A,0
ERRT_23     byte  "timeout",$A,0
ERRT_24     byte  "out of memory",$A,0
ERRT_25     byte  "undefined",$A,0

          fit     $1F0

PUB main
    waitcnt(clkfreq*2+cnt)                                'kurze pause für slaves
    long[$7FFC]:=0
    cognew(@loader,0)
    long[$7FFC]:=@DATEN

CON ' Administra =============================================================================

CON ' Bellatrix =============================================================================

Re: PASM Bootloader

Verfasst: Sa 7. Sep 2013, 15:46
von Micha
Spinn reicht vollkommen aus ;)

Re: PASM Bootloader

Verfasst: Sa 7. Sep 2013, 17:31
von BorgKönig
nen pasm bootloader ist schon was feines... wie flott ist dein bootloader im vergleich zum spin bootloader...?

Re: PASM Bootloader

Verfasst: Sa 7. Sep 2013, 18:24
von PIC18F2550
PASM /SPIN 1:80

Re: PASM Bootloader

Verfasst: Sa 7. Sep 2013, 19:19
von BorgKönig
PIC18F2550 hat geschrieben:PASM /SPIN 1:80
ok... und wieviel frisst der bootloader im eeprom...?

Re: PASM Bootloader

Verfasst: Sa 7. Sep 2013, 21:41
von PIC18F2550
1x COG und den kleinen SPINN bereich am anfang.

Aber du siehst das ein bisschen falsch in die EEprom's kommen nur die Loader und keine Programme der rest wird von Karte geladen.

Soviel belegt der loader in einem Programm zur Laufzeit.
Bildschirmfoto-Compiler Information-8.png
Wenn das Programm den Loader Nutzen will.

Ansonsten geht immer nur der letzte long im hRAM verloren.

Der reine Loader für regnatix wird etwas mehr als ein COG-Ram sein.
Bildschirmfoto-Compiler Information-9.png
Aber wenn der Loader COG gestartet ist steht dieser bereich der weiteren Verwendung nichts im wege.


Was die Loader können sollten
* REGNATIX
- wie oben beschrieben

* BELLATRIX
- einfache Textausgabe in VGA & TV dient nur der Darstellung der Boot informationen

* ADMINISTRA
- SD-Karte mit FAT16/32 unterstützung

Re: PASM Bootloader

Verfasst: So 15. Sep 2013, 22:07
von PIC18F2550
z.Z. stehen noch 118 longs zur verfügung. :D

offene Routinen:

- einen long an Administra senden
- Belatrix code laden
Bildschirmfoto-Compiler Information.png

Re: PASM Bootloader

Verfasst: Mo 16. Sep 2013, 12:16
von TuxFan
PIC18F2550 hat geschrieben:Im Anhang das Modell eines PASM-Loaders für Regnatix..........
Wäre hier nicht ein Flussdiagramm (Programmablaufplan) für eine strukturierte Programmierung besser als eine Liste unfertigen Codes? Nicht alle beherrschen das Prinzip : "Nur das Genie beherrscht das Chaos". ;)
PIC18F2550 hat geschrieben:..........Einige Dinge sind noch nicht übersetzt oder fehlen noch...........
Das ist meiner Meinung nach stark untertrieben. Aber ich bin ja nur programmiertechnischer Halbautodidakt und kann das wahrscheinlich nicht richtig beurteilen.
PIC18F2550 hat geschrieben:............Die Grundstrucktur und Arbeitsweise sollte schon erkennbar sein.
Nöööööööö, für mich nicht. Da bin ich als Masseflächenverfechter wahrscheinlich zu einfältig zu.
Da stellen sich nämlich für mich einige Fragen. Z.B. warum muß sich Regnatix um Verzeichniswechsel kümmern oder ob die SD-Karte eingebunden ist. Das sind Aufgaben von Administra.
Der Bootloader Regnatix (So etwas wie der Kammerherr beim Regenten ;) ) befiehlt Administra den Bootcode für Regnatix zu senden. Administra (der Haus und Hofmeister des Herrschers) schickt ihn dann oder meldet einen Fehler. Um die niederen Arbeiten kümmert sich nur Administra bzw. erstmal der Kammerdiener (bootloader) von Administra.
Mit Verlaub mir erscheint der gepostete Code :? noch lange nicht als würde er mal als bootloader fungieren können. Vielmehr hab ich die unheilvolle Vorahnung, daß es hier genauso endet wie beim H-Basic.....................
Sehr schade......
Gruß
TuxFan

Re: PASM Bootloader

Verfasst: Mo 16. Sep 2013, 13:40
von PIC18F2550
Hi TuxFan,

H-Basic wurde vom Trios-Basic überholt der Hive braucht deffinitiv keine 2 Basicsysteme.
Auserdem wahr das Projekt mehr zum PASM lernen gedacht.
TuxFan hat geschrieben:warum muß sich Regnatix um Verzeichniswechsel kümmern oder ob die SD-Karte eingebunden ist. Das sind Aufgaben von Administra.
Administra macht ohne Regnatix garnichts es wartet einfach auf Commandos. Wie Du schon richtig erkannt hast ist Regnatix der Boss und der sagt wo es lang geht.

Immer noch grummlig wegen der Masse? :roll:

Ob das hier fertig wird weis ich nicht da ja auch kaum interesse an einen PASM-Loader besteht.
Dieser währe auch erst einmal incompartiebel zu Trios da er für Zerberus-System vorgesehen ist.

Eine einbindung in Trios währe aber ohne große veränderung der Software möglich.
Da Zerberus aus Trios entsteht.

So ich hab mal die Umfrage auf 14 Tage verlängert mal sehen ob sich da noch was ändert.

Re: PASM Bootloader

Verfasst: Mo 16. Sep 2013, 16:16
von zille9
Ich mische mich nur ungern in eure offensichtliche Hassliebe aber ich muss mal Partei für Pic ergreifen.
Pic, lass Dich nicht beirren, dieses Forum ist zum Lernen und Gedanken austauschen gedacht und nichts anderes machst Du. Vielleicht könnte man manchen Tread etwas straffer gestalten, wenn nicht immer irgendwelche persönlichen Differenzen im Forum breitgelascht werden würden.
Die besten Ideen entstehen nunmal in der Gemeinschaft. Gerade die unterschiedlichen Denkansätze sind der Quell von neuen Ideen und sollte nicht durch ständiges nörgeln oder klein reden zum erliegen gebracht werden. Jeder hat nun mal das Recht auf eine eigene Meinung also sollten wir es auch anderen zugestehen. Tut mir leid Tux-Fan, ich möchte Dich wirklich nicht angreifen aber ich habe das Gefühl, Du wartest nur auf einen Tread von Pic um loszuschlagen. Das muss doch nicht sein, vetragt euch doch bitte, wir haben alle was davon! :EIEI