FiXos pour fx-9860 (Graph 85 SD), un kernel inspiré d'*nix
Posté: 22 Jan 2014, 08:09
Kristaba, membre de Planète-Casio, a depuis longtemps (il y a un topic de fin 2011) dans l'idée de faire un kernel inspiré de *nix pour la fx-9860 (et d'autres modèles basés sur des SH3/SH4, mais il ne possède qu'une fx-9860), comme Punix sur TI-68k, ou bien sûr un vrai Linux sur Nspire.
Ses travaux deviennent maintenant utilisables, et il en parle un peu plus largement
Il est reparti de zéro pour créer ce FiXos, ciblant seulement la fx-9860 pour l'instant, comme je l'ai écrit. FiXos est inspiré des *nix, ce qui veut dire qu'il gèrera les aspects les plus importants des *nix (mémoire virtuelle, gestion des périphériques, Virtual File System, les principaux syscalls, etc.) pour assurer une bonne compatibilité, mais sans chercher à être 100% compatible avec les standards POSIX.
Une fois que le kernel a été chargé en RAM, il est totalement indépendant de l'OS de Casio. Pur l'instant, il n'est pas exécuté directement depuis l'EEPROM, et le code de reset de la calculatrice n'est pas modifié pour permettre de choisir dès le démarrage entre l'OS de Casio et FiXos, mais bien sûr, ce serait intéressant à faire pour réduire la consommation de RAM. Un simple reset revient à l'OS de Casio.
Le kernel (dans un binaire ELF, comme la quasi-totalité des *nix) est bien entendu chargé par un bootloader sous forme de fichier G1A; le bootloader est configurable avec un fichier de configuration, et utilise quelques syscalls de l'OS de Casio, par exemple pour afficher un menu.
Le bootloader, le kernel et les outils userspace sont compilables avec des GCC modernes ciblant l'ISA SH.
Actuellement, les principales fonctionnalités sont déjà sympathiques
Le projet est évidemment ouvert à la lecture et à la contribution (un vrai projet open source, quoi ), il est hébergé sur Gitorious (racine du projet: https://www.gitorious.org/fixos , repository principal https://www.gitorious.org/fixos/fixos ).
Dans le repository, le fichier user/first_test_elf.c est un exemple de programme utilisateur, à des fins de test.
Source de l'info: http://www.planet-casio.com/Fr/forums/topic10104-1-Projet-FiXos-(OS-pour-casio-fx-9860-Prizm).html via Omnimaga.
Ses travaux deviennent maintenant utilisables, et il en parle un peu plus largement
Il est reparti de zéro pour créer ce FiXos, ciblant seulement la fx-9860 pour l'instant, comme je l'ai écrit. FiXos est inspiré des *nix, ce qui veut dire qu'il gèrera les aspects les plus importants des *nix (mémoire virtuelle, gestion des périphériques, Virtual File System, les principaux syscalls, etc.) pour assurer une bonne compatibilité, mais sans chercher à être 100% compatible avec les standards POSIX.
Une fois que le kernel a été chargé en RAM, il est totalement indépendant de l'OS de Casio. Pur l'instant, il n'est pas exécuté directement depuis l'EEPROM, et le code de reset de la calculatrice n'est pas modifié pour permettre de choisir dès le démarrage entre l'OS de Casio et FiXos, mais bien sûr, ce serait intéressant à faire pour réduire la consommation de RAM. Un simple reset revient à l'OS de Casio.
Le kernel (dans un binaire ELF, comme la quasi-totalité des *nix) est bien entendu chargé par un bootloader sous forme de fichier G1A; le bootloader est configurable avec un fichier de configuration, et utilise quelques syscalls de l'OS de Casio, par exemple pour afficher un menu.
Le bootloader, le kernel et les outils userspace sont compilables avec des GCC modernes ciblant l'ISA SH.
Actuellement, les principales fonctionnalités sont déjà sympathiques
- Virtual File System (VFS) pour utiliser une interface unifiée et monter les filesystems à n'importe quel endroit;
- une réimplémentation du filesystem SMEM de Casio, en lecture seule, mais beaucoup plus rapide que ce que l'OS de Casio contient [NdT: comme souvent quand des tiers réimplémentent ce que le fabricant de calculatrices fait]
- un filesystem minimal (création de directories et device nodes) en RAM pour le root file system, nommé ProtoFS;
- la gestion de la mémoire virtuelle avec des espaces d'adressage séparés pour les processus, bien sûr;
- gestion dynamique des périphériques, avec des concepts type *nix: enregistrement dynamique de major/minor numbers, et l'espace utilisateur peut utiliser une paire major/minor pour accéder à un filesystem donné;
- petite fonction de debug à l'écran ciblant le contrôleur T6K11, pour afficher des infos au début du boot;
- après initialisation, gestion du terminal plus avancée, à travers /dev/console;
- gestion de l'USB avec driver pour le contrôleurs USB du 7705 et abstraction du protocole (pour les périphériques) suffisamment générique pour écrire une implémentation de drivers utilisable également sur d'autres plate-formes [NdT: si je comprends bien];
- comportement de device standard USB CDC/ACM linké sur /dev/serial, ce qui permet donc d'utiliser la calculatrice sur un ordinateur comme un port série bi-directionnel (COM* sur Windows, ttyS sur Linux), en général sans installer de drivers supplémentaires. screen et gtkterm fonctionnent bien pour communiquer avec la machine
- bien sûr, la capacité de tourner des processus utilisateurs isolés (chacun son espace d'adressage, pile kernel [NdT et probablement pile user]) à partir de fichiers ELF accessibles dans le VFS;
- le fonctionnement correct des syscalls open(), read(), write(), fork(), exit(), getpid(), getppid() et wait(), en attendant d'autres syscalls;
- qui dit syscall fork() dit une gestion de plusieurs processus, avec un tout jeune ordonnanceur [NdT: pour qu'on comprenne bien de quoi on parle: un scheduler] pour l'instant assez basique, mais qui va s'améliorer;
- du travail sur l'interface hôte SD pour contrôler directement la carte SD, mais c'est une partie totalement non documentée du CPU... donc comme sur Nspire, ce genre de travaux nécessite beaucoup de reverse-engineering dans l'OS de Casio, prend beaucoup de temps, et crée des difficultés pour faire fonctionner quelque chose. Il en est déjà dans un état où il peut envoyer et recevoir des commandes SD, initialiser une carte SD, obtenir des informations sur la carte SD (taille, tensions, fabricant, etc.), mais la lecture et l'écriture ne fonctionnent pas encore. Bien sûr, une interface abstraite block SD est prévue, et au-dessus, la gestion des filesystems les plus courants, en particulier ext3 et FAT32.
Le projet est évidemment ouvert à la lecture et à la contribution (un vrai projet open source, quoi ), il est hébergé sur Gitorious (racine du projet: https://www.gitorious.org/fixos , repository principal https://www.gitorious.org/fixos/fixos ).
Dans le repository, le fichier user/first_test_elf.c est un exemple de programme utilisateur, à des fins de test.
Source de l'info: http://www.planet-casio.com/Fr/forums/topic10104-1-Projet-FiXos-(OS-pour-casio-fx-9860-Prizm).html via Omnimaga.