SOMMAIRE

 

1) GENERALITES 
1.1) Principe du projet
1.2) Caractéristiques
1.3) Ma vision du projet

2) HARDWARE
2.1) Carte de développement
2.2) Verilog, schéma global
2.3) Verilog, coeur CPU
2.4) Verilog, Vidéo VGA
2.5) Verilog, périphériques

3) OUTILS DEVELOPPEMENT SOFTWARE
3.1) Généralités
3.2) Langage A2Z Basic
3.3) Compilateur
3.4) Assembleur
3.5) Autres outils
3.6) Emulateur sur PC

4) LES LOGICIELS A2Z
4.1) Le Boot
4.2) Système fichier & OS
4.3) Editeur texte
4.4) Image viewer & map viewer
4.5) Le jeu : Micromachines

Blog (hackaday.io)

4.2) Système de fichier, explorateur de fichiers, système d'eploitation

Système de fichiers :
Le système de fichiers est très simple. Il est basé sur une FAT (file allocation table).
Chaque entrée de la FAT contient les informations suivantes :


L’index d’une entrée FAT, c’est tout simplement sa position dans la table de FAT.
Par défaut, je me limite à 1024 entrées FAT, c’est largement suffisant pour les 16 petits Mo.

Le système gère évidemment la structure arborescente du système de fichiers grâce au champ "folder".
Remarque : La FAT est la portion de la Flash ré-écrite le plus souvent. Chaque modification dans le système de fichier (déplacement d’un fichier, renommage, suppression) engendre une écriture de la FAT. Pour éviter d’écrire tout le temps sur les mêmes secteurs de la Flash (chaque secteur est limité à 200 000 écritures), j’utilise un mécanisme d’emplacements de FAT tournants : 8 emplacements différents écrits à tour de rôle, avec un index permettant de déterminer l’entrée FAT la plus fraiche.
C’est un peu inutile vu la faible utilisation de cet ordinateur, mais ça m’amuse.
Vu la petite taille de la FAT (64ko), elle est constamment chargée en RAM.

Limitations :

  • Le système ne gère pas la fragmentation des fichiers. S’il n’y a pas suffisamment d’espace contigu pour créer un nouveau fichier, le fichier ne sera pas créé.
  • Un fichier a une taille fixe, déclarée une fois pour toute. La taille ne peut pas être modifiée à postériori

L’organisation de la flash 16Mo :


Interface homme machine – explorateur de fichiers :
Je n’ai pas voulu d’interface en « ligne de commande ». En fait, je déteste ce principe de ligne de commande depuis très longtemps. J’ai fait une allergie à ça dès mes premiers pas sous MS/DOS il y a 25 ans. J’en ai encore des séquelles.

Du coup, j’ai codé une interface graphique/texte simple où l’utilisateur sélectionne les dossiers ou fichiers qu’il veut manipuler, avec les flèches du clavier, un peu à la façon de « Norton Commander ». Je trouve ça beaucoup plus ergonomique. 

On peut réaliser toutes les fonctions basiques d’un explorateur de fichiers : couper, copier, coller, renommer, créer un dossier, un fichier, etc... 
On peut aussi « ouvrir » un fichier, ce qui va déclencher :

  • Pour un programme : chargement du programme en RAM et exécution du programme
  • Pour un fichier de type texte ou image : l’OS ouvre le « programme par défaut » de gestion des images ou du texte, qui à son tour va ouvrir le fichier en question.

Attention, pour trouver le programme de gestion du texte et des images, les fichiers exécutables des programmes utilisés doivent impérativement avoir l’index FAT suivant, car c’est ce qu’utilise A2Z_OS

  • Text Editor : index 2
  • Image viewer : index 3

Dans le menu, une commande particulière permet de « raffraichir  / télécharger » le contenu du fichier depuis le PC vers la flash, de 2 manières différentes  (choix proposé 1 ou 2):

  • Choix 1 Sur A2Z réel : depuis la liaison série, avec le même protocole que le bootloader. Attention, tous les fichiers téléchargés doivent se terminer par une commande bootloader « goto », qui sert juste à détecter la fin du transfert, et ne sera pas exécutée. Donc après le transfert via port série d’un fichier bina, il faut rajouter le fichier « goto.bine » qui fait le job.
  • Sur l’émulateur : depuis fichier windows bina, bine ou binc.

Le transfert du fichier se fait via la fonction F9 de l’émulateur.
Attention, le transfert doit impérativement être effectué avant de valider la sélection « choix 2 » dans l’OS.

OS ou pas OS?
Ce que j’appelle « OS » n’est donc pas un véritable système d’exploitation, car il n’y a aucune couche d’abstraction hardware. Chaque application embarque ses drivers pour accéder directement au hardware (drivers mémoire SPI par exemple), et est donc relativement indépendante d’un OS.


F4HDK| Janvier 2017
f4hdk_arob_free.fr