Vireo-II kernel v0.1 en CP

m44rtn

PCS Lid
Lid geworden
16 jan 2018
Berichten
499
Waarderingsscore
73
Punten
113
Leeftijd
21
OS
Windows, Linux en Vireo
Hallo Piepers! Lang niet geschreven hier, en ik moet zeggen nu ik teruglees naar hoe ik vorige berichten geschreven heb ik niet zo trots ben op mezelf...

Maar! Daar zijn we hier niet voor. Een paar dagen terug heb ik namelijk v0.1 van de kernel afgerond, wat betekent dat de kernel zo goed als af is. Tenslotte kan het doen wat je ermee zou willen doen, namelijk het uitvoeren van programma's.

Dit is te zien in deze video (zie hieronder voor embedded versie). De kernel voert hier een heeeeeeeeeleee vroege versie van de command processor (CP) uit. Dit gebeurt als volgt:
  1. Wanneer de kernel opstart zal het het bestand 'config' lezen op de opstartschijf (voor inhoud config-bestand, zie hieronder).
  2. De kernel zoekt voor de eerste regel in het config-bestand waar het woord 'run' staat, en voert het programma in het pad na dit woord uit. Dit is CP.ELF, ofwel de binary van de command processor.
  3. De command processor start op en leest hetzelfde config bestand. Het zal zoeken voor elke regel waar het woord 'load' staat en zal de binaries in de paden registreren als drivers aan de kernel (in dit geval alleen de toetsenbord driver genaamd 'ps2keyb.drv').
  4. De command processor laadt de keymap die in het config bestand staat. De keymap wordt gebruikt om toetsen op het toetsenbord om te zetten naar de juiste karakters ('a' t/m 'z', '0' t/m '9' en speciale karakters zoals '/', '[', etc.).
  5. De command processor zal zich aankondigen aan de toetsenbord driver als een 'subscriber' (een programma dat graag geüpdatet wil worden wanneer een nieuwe toets wordt ingedrukt).
  6. De command processor wacht totdat de gebruiker de [ENTER] toets heeft ingedrukt en gaat vervolgens proberen het getypte commando uit te voeren.


Config file
Code:
# keywords and -symbols:
#   * `run` (load a binary)
#   * `load` (load a driver)
#   * `#` (comment)
#
# Not case sensitive.
# Anything else is ignored (i.e. the symbols/lines '[kernel]' and '[drivers]' have no real function).

[kernel]
run /bin/cp.elf test

[drivers]
load /sys/ps2keyb.drv

[settings for cp]
keymap /sys/usint.kl
keyb_drv_name PS2KEYB.DRV

Keymap
Een keymap (zoals 'usint.kl' in het config bestand) is gedefinieerd als een array van de volgende C-struct:
C:
typedef struct keymap_entry_t
{
    char lc; // lowercase karakter (bijv. 'a')
    char uc; // uppercase karakter (bijv. 'A')
    uint16_t scancode; // scancode van de driver (bijv. 0x0302 - de 'A'-toets op een
                       // QWERTY-toetsenbord).
} __attribute__((packed)) keymap_entry_t;

Opmerking
De echte uitgave van v0.1 van de kernel, kan het woord 'run' in een config bestand niet herkennen. De echte v0.1 zal de eerste regel dat geen comment is direct proberen uit te voeren als programma. In het config-bestand zou dan dus /bin/cp.elf test moeten staan in plaats van run /bin/cp.elf test om het programma CP.ELF uit te voeren.

Waar ik tot nu toe over gepraat heb is eigenlijk een tussenversie van de kernel die ergens tussen v0.1 en v0.2 ligt. De versie waarover gepraat wordt is hier te vinden.

Volgende keer
Zoals aangegeven gaat dit om een tussenversie gebaseerd op kernel v0.1 met een tussenversie van CP. Hierna zal echter nog kernel v0.2 komen, die met enkele verbeteringen komt (er zijn er al een aantal gedaan). Wanneer v0.2 en CP afgerond zijn, zal het gezamenlijk als Vireo/1 uitgegeven worden. Vireo/1 ('Vireo Release 1') is dan een bruikbare versie van het systeem. Daarna zullen er voorlopig geen nieuwe versies komen.
 

Abraham54

Administrator
Teamlid
Lid geworden
2 aug 2016
Berichten
31.442
Waarderingsscore
6.178
Punten
1.013
Leeftijd
69
OS
Windows 10 Professional
AV
AVG Internet Security + Malwarebyte Exploit
FW
AVG Internet Security Firewal
Het is bepaald niet de makkelijkste opdracht die jijzelf opgedragen hebt, om een kernel te schrijven.
En dat ook nog naast de studie, die jij doet.
 
Bovenaan Onderaan