Projet FiXos (OS pour casio fx-9860/Prizm)
Posté le 07/11/2011 20:11
maj 14/11/2013 :
un peu d'actualités
maj 03/03/2013 :
mon (presque) dernier pavé
maj 06/03/2015 :
Dépôts GitLab du projet.
Vu que le sujet d'OS unix-like pour nos chères G85 (fx-9860) et dérivées, ainsi que pour la Prizm (fx-cg20) fait réagir pas mal de gens, j'ouvre un topic pour en parler plus en détail
(début du sujet
sur ce topic)
Déjà, quelques précisions, mes posts précédent étaient simplement des idées pour montrer l'utilité et ma vision d'un possible OS, je n'avais pas vraiment pour projet de le concrétiser dans l'immédiat. L'idéal serait de bosser là dessus conjointement avec des gars d'omnimaga, cemetech, et les autres communautés.
Ceci dit, j'ai déjà quelques idées dans la tête, donc autant les faire partager
(au passage, j'en profite pour répondre un peu aux posts de l'ancien topic)
DJ_Omnimaga : sur Casio on a jamais eu l'occasion de créer un OS tiers jusqu'à la fx-9860 (excepté la Graph100 mais c'était loin d'être le modèle le plus répandu), les processeurs étant non documentés. Depuis que tous les nouveaux modèles de Casio utilisent la même architecture plus ouverte, il est possible de créer un OS custom, mais si il n'y a toujours pas eu de projet d'OS c'est entre autre par ce que les addins permettaient déjà de faire des programmes sympa, et probablement aussi à cause du manque de "programmeurs systèmes" dans le monde Casio.
Vdragon.b: Oui, un OS est généralement codé en C (pas une obligation, mais Linux en est un bon exemple ouaip). Ceci dit, vaut mieux "bien coder", par ce que l'expérience permet de d'optimiser le code, d'utiliser des syntaxes très barbares -mais pratiques-, de comprendre la structure générale de l'OS. Après, si il s'agit de code hors-noyau (un petit utilitaire ou autre) bien entendu les performances sont moins critiques, donc si tu te sens tu pourras aider j'imagine.
Pour les grayscales et le multitâche c'est prévu dans mon idée perso effectivement.
(dans un premier temps, multitâche coopératif avant d'écrire un vrai ordonnanceur)
Pour le moment, les idées que j'ai pour le kernel :
- une fonction init pour initialiser le MMU, le cache, créer la pile kernel, initialiser les interruptions, charger le système de fichiers...
- un FS type FAT par exemple, serait potentiellement créé en tant que fichier du FS de Casio (pour permettre la cohabitation des deux systèmes, en évitant de se tapper le FS de Casio complètement en carton *siflotte*)
- système de virtual FS pour permettre une uniformité des API d'écriture de fichiers
- possibilité de lancer un programme binaire "pur" (binaire sans header G*A), un binaire G1A, ou un fichier ELF (ce dernier permettrait l'utilisation de techniques avancées)
- gestion des bibliothèques dynamiques (du .so si le format est pas trop lourd, custom sinon), dont Newlib (lib stdc) pour alléger les addins, profiter de fonctions spécifiques à chaque calculatrice...
- gestion du MMU en mode activé et pour environnement multiprocessus (basculement en monoprocessus si nécessaire pour assurer la retro-compatibilité G*A?)
- évidemment, les addins seraient lancés en mode 'user' pour assurer la sécurité du kernel
- syscalls utilisant l'instruction TRAPA de l'assembleur SH3 (interruption logicielle), pour basculer en mode protégé et accéder à l'espace noyau
- des drivers d'affichage dépendant du modèle de la calculatrice, permettant de gérer un mode "terminal" et un mode "graphique"
Si vous avez des questions, des choses à proposer, des contacts avec des gens intéressés ou quoi que ce soit n'hésitez pas.
Je ne sais toujours pas si je vais vraiment me lancer là dedans (c'est un gros projet encore une fois, peu de chances d'être fini un jour si y'a que moi dessus
), mais dans le pire des cas, les idées présentées serviront bien à quelqu'un, un de ces quatres
Citer : Posté le 22/10/2014 16:19 | #
Ok, merci
Citer : Posté le 22/01/2015 17:43 | #
Un petit UP
Il serait effectivement, comme on en avait discuté sur le chat la dernière fois (hier ?), sympa à toi, Eiyeron, de faire une liste des trucs qu'il reste à faire ça permettrait aux gens qui veulent participer (comme moi) de pouvoir le faire plus facilement (j'ai pas suivi la fin de la discussion sur le chat donc peut-être que la question a déjà été réglée)
Coïncidence ? Je ne pense pas.
Citer : Posté le 22/01/2015 18:06 | #
De ce que je sais :
- J'ai un problème avec fork&execve où je ne peux exécuter aucun programme
- L'USB est à corriger
- Il faut faire le driver port série (que Dark Storm est censé faire).
- Créer des terminaux séries et USB pour éviter de n'avoir que 15 lignes de debug visible à chaque fois.
- Organiser une compilation de données concernant l'accès en écriture/lecture de la mémoire Flash.
- Implémenter les variables d'environnement. Ce sera utile pour passer des valeurs telle que le PWD à au programme fils. C'est aussi un point à voir dans la lib standard de FiXOS
- Avancer dans la lib standard(https://gitorious.org/fixos/libc/source/c69896c8df063b049c7648c7068523a59032fa95:), c'est littéralement le projet frère de FiXOS où le développement en user n'aura qu'à utiliser cette lib pour ne plus se soucier des appels systèmes.
- Implémenter davantage de syscalls. Attention, je parle d'appels système POSIX, pas de ceux intégrés avec l'OS de Casio.
- TEST TEST TEST On n'a quasiment aucune donnée à part celles de ma calto et celle de Kris. Je vais le pinger pour qu'il se ramène et qu'il explique ce qu'il fait actuellement.
Tain, j'avais pas vu qu'il avait implémenté stat et fstats y'a deux jours! \o/
Citer : Posté le 22/01/2015 18:09 | #
- TEST TEST TEST On n'a quasiment aucune donnée à part celles de ma calto et celle de Kris. Je vais le pinger pour qu'il se ramène et qu'il explique ce qu'il fait actuellement.
Je ne me souviens pas avoir vu de demande explicite de test passer sur ce topic. S'il y a des choses en particulier à tester, faites-le savoir je le ferai avec plaisir (j'ai deux G35+, SH3/SH4)
Citer : Posté le 22/01/2015 18:10 | #
Il y a quelqu'un qui pourrait me passer une version de sh3eb-gcc compilée pour dodows, s'il vous plaît?
Ajouté le 22/01/2015 à 18:12 :
Dernière Indic : utilisez le repo de Kris comme base, pas le mien. Le mien ne me sert qu'à implémenter mes features et de ce fait peut (et l'est) être obsolète.
Citer : Posté le 22/01/2015 18:19 | #
Ah OK ben je vais cloner ça hein
- TEST TEST TEST On n'a quasiment aucune donnée à part celles de ma calto et celle de Kris. Je vais le pinger pour qu'il se ramène et qu'il explique ce qu'il fait actuellement.
Je ne me souviens pas avoir vu de demande explicite de test passer sur ce topic. S'il y a des choses en particulier à tester, faites-le savoir je le ferai avec plaisir (j'ai deux G35+, SH3/SH4)
Moi j'ai une G75 SH4
Coïncidence ? Je ne pense pas.
Citer : Posté le 30/01/2015 09:19 | #
Des nouvelles du front pour les volontairzq : Kris a répondu et a donné la liste des points à étudier aux "membres de la mailing list" ( DS, Leffe et compagnie).
Je tiens à noter qu'il y a mis son adresse Jabber, donc si vous voulez essayer de le stalker en temps réel, regardez vos mails ou envoyez moi un mail et je vous le refilerai. Il a aussi migré le réponse sur son serveur. Encore une fois je ne ferai tourner l'adresse que sur demande pour éviter les spambots. Par contre il a mis en place un serveur d'intégration Jenkins. A chaque mise à jour du repo, un build sera fait automatiquement. Pour les cobayes volontaires, je pourrais vous filer l'adresse du site où vous pourrez tester les versions du kernel.
Sinon, je pense que je mettrai en place un clone de son repo en public sur Gitorious. Comme ça on évite de surcharger le site du grand manitou. (On peut avoir un rang custom pour lui? Je pense qu'il le mérite).
Voilà voilà. Sinon, je vais lui parler rapport à la lib standard pour que l'on puisse commencer à programmer avec quelque chose qui ressemble à un stdlib/unistd (et ça, c'est la classe).
Citer : Posté le 10/02/2015 09:04 | # | Fichier joint
Petites nouvelles pour ne pas faire tomber le soufflé de l'excitation : Krisbtaba bosse sur la la libc, ça a l'air de marcher mais ya encore beaucoup de bugs relatifs à la libc que l'on implémente (elle est un peu cassé dans tous les sens au niveau de stdio). Donc je m'attelle aux tests divers pour vérifier qu'elle marche. Sinon, le dernier kernel disponible supporte un nouvel argument au démarrage : le loglevel. Si vous réglez cet argument sur une autre valeur, vous masquerez divers infos pendant l'exécution du kernek, ça évite par exemple de se frapper des pages de blabla technique quand vous y pigez rien ou filtrer un minimum les infos disponibles.
Je mets ci-joint le kernel, le bootloader et le fichier .elf qui sera lancé par le kernel (c'est plus ou moins comme l'exécutable init au PID 1 pour les connaisseurs). Je tiens à préciser que c'est toujours à vos risques et périls que vous testez le kernel et vous le faites en connaissance de cause. Bien entendu, c'est toujours que pour SH3 (je pense à une éventuelle structure de projet qui pourrait faciliter le pot sur d'autres archis).
Citer : Posté le 10/02/2015 09:07 | # | Fichier joint
Et je mets ci-joins la libc qui est *toujours* en heavy WIP. Normalement, vous arriverez à faire des trucs comme printf ou scanf mais attention aux effets de bord : le moindre crash fera planter non pas le programme mais le kernel directement comme Kris n'a pas encore mis de garde-fou.
Ca s'utilise avec sh3eb-elf-gcc (je crois que le tutoriel pour compiler gcc pour sh3 fonctionnera avec). Compilation avec
Ajouté le 10/02/2015 à 09:09 :
Petites infos : le dossier interface dans le build de fixos contient les accès au kernel. en appelant ces focntions vous devriez pouvoir interagir avec le kernel. C'est des syscalls, ouer des syscalls mais de FiXos. La classe, non?
Ajouté le 10/02/2015 à 09:11 :
Oh tiens en passant je relis la liste de ce qui est à faire par Kris et je vois "lancer des g1a", ça devrait être faisable, ça. (C'est juste un offset alakon, par contre, si ça utilise des syscalls faudra pas s'attendre à ce que ça marche le jour où vous remplacerez l'OS Casio par FiXos le jour où ça sera possible.)
Ajouté le 10/02/2015 à 09:15 :
Dernier truc (je vous le promets) pour l'instant : pour accéder à l'écran, uilisez /dev/display je crois (avec le bon vieux open ou fopen), ça devrait aller. Je sais pas exactement comment Kris s'en sert mais vous devriez pouvoir vous débrouiller avec ça.
Citer : Posté le 10/02/2015 12:09 | #
Ma liste de trucs à faire :
1) Configurer ma p***** de carte wifi sur mon Debian
2) Faire fonctionner Git
3) Récupérer la version actuelle de FiXos
4) Finir de mettre en place le port série
La première étape risque d'être la plus chiante...
Citer : Posté le 10/02/2015 13:17 | #
Bonne chance, je me souviens avoir énormément galéré avec Arch. Au pire, si tu peux, sers-toi de ton téléphone comme une carté réseau USB.
Citer : Posté le 10/02/2015 13:21 | #
Bonne chance, je me souviens avoir énormément galéré avec Arch. Au pire, si tu peux, sers-toi de ton téléphone comme une carté réseau USB.
C'est un peu une solution à l'arrache quand même
...Sinon, tu trouveras peut-être ton bonheur dans le archwiki (en changeant les trucs dépendants de la distro)
...si t'as le courage de lire ça : https://wiki.archlinux.org/index.php/Wireless_network_configuration
Coïncidence ? Je ne pense pas.
Citer : Posté le 10/02/2015 18:32 | #
Je vais compiler quelques builds de GCC SH3 pour Windows x86 et x64. Je vais voir si je peux faire faire un système d'automatisation de release de pesudo SDKs.
Citer : Posté le 10/02/2015 18:40 | #
Bon, le wifi est réglé, le git aussi
Mais j'ai pas encore de gcc sh3...
Je reprend bientôt le dev du port série
Citer : Posté le 10/02/2015 18:46 | #
le gcc sh3, sous linux ça prend 30 sec (et 10min ~ 1h de compilation )
Coïncidence ? Je ne pense pas.
Citer : Posté le 10/02/2015 18:50 | #
yay dark storm
Draco0300, je te présente l'option -j x de make qui permet de faire x opérations en même temps. Fais donc un -j8 sur un i7 et enjoy!
Citer : Posté le 10/02/2015 18:53 | #
C'est pour ça que je disais 10 min (avec quatre coeurs plus le temps de faire du café)
Coïncidence ? Je ne pense pas.
Citer : Posté le 10/02/2015 18:54 | #
Bah avec une Nespresso, si. Intel Core i7, What else?
Ajouté le 10/02/2015 à 21:04 :
Tiens, on a eu des spambots? je vois ce topic comme ayant des nouveaux posts mais nulle trace de ceux-ci.
Citer : Posté le 10/02/2015 21:10 | #
Nan, à tous les coup il y a eu un nouveau message qui a été viré parce qu'il était inutile ou trollesque et repéré par un admin...
Citer : Posté le 10/02/2015 21:24 | #
Dommage que l'on aie pas une sorte d'archive poubelle, ça me ferait bien marrer de voir ce genre de messages tiens.
Citer : Posté le 11/02/2015 00:01 | #
Le message en question, c'était Intelligide disant "Intel core" => on m'appelle ?
Bref, rien de bien intéressant...