je suis actuellement bloqué dans la conception d'un robot qui me nécessite l'écriture d'un petit système d'exploitation de zéro. Il est censé tourner sur une architecture ARM, sur cette carte embarquée plus particulièrement https://beagleboard.org/black, la BeagleBone Black. Ceci est la datasheet de son processeur http://www.ti.com/lit/ug/spruh73o/spruh73o.pdf que je dois lire afin de savoir quoi faire, ce que j'ai fait sans bien tout comprendre et vu le nombre de pages pas tout comprendre d'entrée de jeu ça n'annonce rien de bon. Par tout hasard auriez-vous connaissance de formations pour être apte à faire ce genre de chose ou encore mieux des livres ?
Mon niveau de connaissance actuel se résume à de petits programme en langage c.
Merci je vais voir ça, en précisant que par système d'exploitation j'entends juste un petit programme qui se lance sans OS, plus précisément un programme capable de lire la RAM, une carte SD, un port USB et incluant des petits programmes, je ne me lancerai pas dans la création d'un système de fichier complexe, d'une interface graphique complexe ou toute sorte de fonction que les OS évolués abritent, cet OS servira seulement à contrôler un robot.
d'après ce que j'ai vu ( petit survol rapide ) des caractéristiques de la carte, celle ci embarque un petit linux, si cela peut te faciliter les choses, utilise ce petit linux et développe le programme que tu as besoin dessus et lance le au démarrage de ta carte
Bien au contraire en fait, Linux va me compliquer la tâche plus qu'autre chose. J'ai besoin très précisément de pouvoir contrôler la mémoire et les processus de la carte pour une pleine utilisation de sa puissance. Elle n'est déjà pas très performante si je dois encore en plus passer par un fonctionnement non adapté pour simuler celui dont j'ai besoin ça n'ira pas.
J'ai besoin très précisément de pouvoir contrôler la mémoire et les processus de la carte pour une pleine utilisation de sa puissance.
Ce qu'il faut pas lire comme trucs des fois ...Configure les modules chargés et ta compilation pour ta carte et tu auras très certainement de bien meilleures performances qu'avec un OS créé de ta main et surtout ce sera pas pourri de bugs. Et si malgré ça, tu ne trouves pas l'ensemble suffisamment optimisé, et ben tu te plonges dans le code des modules de Linux que tu utilises et tu optimises (je serai curieux de voir ce que tu vas réussir à accélérer dans un OS qui est développé par des types plutôt bons depuis pas mal d'années).
Je ne vois pas en quoi Linux va t'empêcher de "très précisément contrôler la mémoire et les processus", il est fait pour ça (comme tous les noyaux d'ailleurs ...).
Tu trouves que Linux c'est trop gros ? Allez un micro-noyau sécurisé et performant alors : https://sel4.systems/Info/Hardware/BeagleBoard/ . Bon par contre même si performant ce sera moins rapide qu'un Linux.
Allez quand même un peu de lecture sur la conception des OS : Modern Operating Systems de A.Tanenbaum. Par contre le bouquin est assez cher. Cela dit ça reste LA référence pour avoir les bases vitales dans la conception des systèmes d'exploitation (par contre il faut compter plusieurs mois d'étude du bouquin).
Je reste sur ma demande et le livre n'est pas à propos de l'architecture ARM spécifiquement, ce qui ne m'aidera pas.
Ce qui ne t'aide pas c'est être têtu et ne pas essayer de comprendre ce que les intervenants t'écrivent.
Avant de savoir concevoir un OS pour une archi spécifique, il faut comprendre comment fonctionne un OS tout court (et je le répète ce bouquin c'est juste les bases). Si t'es pas foutu de te coller ça dans la tête, c'est même pas la peine d'y penser. On n'apprend pas à coder un OS en lisant un tutoriel pendant quelques heures et en alignant bêtement des lignes de code.
Computer Mail a écrit:
Mon niveau de connaissance actuel se résume à de petits programme en langage c.
Et tu veux développer un OS from scratch ? T'es sérieux ? Descend de ton nuage, il y a un truc qui s'appelle la réalité et elle va très concrètement de rentrer dans la tronche. Quand une entreprise conçoit un code pour un robot, de deux choses l'une :
soit il n'y a pas fondamentalement besoin d'OS et on fait quasi from scratch,
soit on a besoin d'un OS et on part d'un truc existant,
soit on a besoin d'un OS, mais on a des contraintes de fous et des moyens colossaux et on code un OS.
On recode pas un OS depuis rien si on n'a pas une vraie raison pour nous y pousser. Est ce que toi tu as vraiment ds contraintes de fou et les moyens techniques pour concevoir un OS ? Cela m'étonnerait plus que fortement.
surtout que d'après ce que tu dis tu n'as pas de connaissance extrêmement poussé en développement, ce qui est obligatoire pour créer un OS, la seule solution que tu as c'est utiliser un OS déjà créer, que tu recompile avec les modules que tu as besoin et si tu veux certaines choses précisément.
Le langage C te permet de gérer la mémoire et les processus assez finement
Je sais comment Linux donne accès à la mémoire et le programme chargé de contrôler le robot en question ne pourra jamais convenablement fonctionner dessus je suis catégorique et reste sur ma demande, qu'auriez-vous à me proposer en accord avec ma demande ?
J'ai peut-être mal formulé ma question, ma définition du système d'exploitation est large, je considère comme tel tout programme pouvant se lancer sans système d'exploitation, ce qui est bien le réel objet d'un OS http://www.futura-sciences.com/tech/definitions/informatique-systeme-exploitation-11820/. Je ne recherche pas à créer un système d'exploitation tel que Linux, juste un programme qui boot tout seul, donc comment exploiter l'architecture ARM.
De prendre un putain de bouquin sur les OS et de commencer à l'étudier ! Parce que rien que :
Computer Mail a écrit:
... un programme capable de lire la RAM, une carte SD, un port USB et incluant des petits programmes, je ne me lancerai pas dans la création d'un système de fichier complexe
Cela demande bien plus de boulot que tu n'as l'air de l'imaginer. Tu veux ouvrir une carte SD sans avoir un système de fichier ? Et ben bon courage.
Un micro-noyau, à savoir :
module d'adressage,
module de création de processus,
communication inter-processus.
C'est minimum 10K lignes de code C, et pas du code de débutant. Et toi derrière faut que tu rajoutes de quoi dialoguer avec les ports USB (hop un module complet à coder), pareil pour le lecteur de carte SD, et puis le filesystem pour pouvoir manipuler ce que tu lis. Et selon ce que tu entends par "petits programmes", ça va nécessiter de faire tout l'attirail nécessaire à charger des bibliothèques et exécuter le code qu'elles contiennent.
Certains t’ont déjà répondu, mais je pense qu’ils vont arrêter si tu t’entêtes comme ça. Et ceux qui n’ont pas encore répondu risquent de ne pas répondre vu comment tu réagis aux conseils.
J'ai passé 6 mois de stage et 12 mois de ma thèse sur le sujet, j'ai un article de conférence qui cause de la vérification d'un fragment d'un tel système. Donc arrête de te prendre pour le roi du monde. Tu veux un autre exemple ? La thèse d'un de mes collègues : http://www.theses.fr/2009PA112183 . Encore une fois c'est le minimum vital : création de mémoire, création de processus et communication entre les processus, 3 ans de travail.
Tu sais tout juste coder en C et tu veux concevoir un bout de système d'exploitation minimal sans même regarder la référence du sujet (référence qui ne cause que du MINIMUM VITAL) ? Arrête de rêver et mets toi au boulot. Et arrête de prendre les gens pour des cons quand tu ne sais pas de quoi tu parles.
Même toi tu ne sais pas expliquer pourquoi tu n'en veux pas.
Mais si regarde c'est imparable :
Computer Mail a écrit:
Je sais comment Linux donne accès à la mémoire et le programme chargé de contrôler le robot en question ne pourra jamais convenablement fonctionner dessus je suis catégorique ...
Puisqu'il te dit qu'il est catégorique ! (Bon par contre, ça n'explique pas pourquoi dans le monde de l'embarqué critique tout le monde arrive à faire fonctionner convenablement des robots avec des OS embarqués existants avec des contraintes foutrement plus fortes qu'une beagleboard).
Allez parce que je suis en train de bosser sur la bibliographie qui l'entourne, ça tombe bien : Contiki, OS embarqué qui peut tourner sur des micro-contrôleurs avec quelques kilo-octets de mémoire, tu vas aussi nous dire que c'est trop overkill pour ton problème ?
tiens, je n'avais jamais entendu parler de contiki, mais ça à l'air assez puissant, faudrait que je regarde et que je me penche un peu plus la dessus.
Ce papier présente les idées générales de façon concise : http://www.dunkels.com/adam/dunkels04contiki.pdf . Le concept c'est d'avoir un truc qui tient dans rien, tout en permettant de changer le code exécuté dynamiquement (typiquement quand ça tourne sur un réseau de capteurs). Par contre, à l'image des micro-noyaux, ça fournit très peu de primitives. Le point le plus intéressant dans son fonctionnement c'est ce qui tourne autour de leur gestion du multi-threading qui est basé sur un système d'événements qui indique le code à exécuter. Le code ne peut être préempté que manuellement depuis le code exécuté, ce qui demande d'adapter le code en conséquence, mais en échange ça permet de se passer de toute l'usine à gaz du context-switching. Pour un truc ressemblant, tu peux regarder les "protothreads".
Comme dit plus haut, une application pouvant lire dans la RAM, initialement dans une carte SD, gérer un port USB et des bus I²C. Ce qui servira à une IA qui va massivement manipuler des paquets de 50 octets environ se trouvant à des adresses purement aléatoires dans la RAM. Ces paquets représentent 90% de la RAM.
Comme dit plus haut, une application pouvant lire dans la RAM, initialement dans une carte SD, gérer un port USB et des bus I²C. Ce qui servira à une IA qui va massivement manipuler des paquets de 50 octets environ se trouvant à des adresses purement aléatoires dans la RAM. Ces paquets représentent 90% de la RAM.
Gérer la mémoire et les périphériques matériels... fuck mais on appelle ça un soft banal sur un OS. Peux-tu vraiment expliquer pourquoi tu ne "peux pas" utiliser d'OS ?
(1) une application pouvant lire dans la RAM, (2) initialement dans une carte SD, gérer un port USB et des bus I²C. Ce qui servira à une IA qui va massivement manipuler des paquets de 50 octets environ se trouvant à des adresses (3) purement aléatoires dans la RAM. Ces paquets représentent 90% de la RAM.
Donc :
(1) module d'adressage virtuel (qui ne peut pas être basique car (3)).
(2) gestion des interruptions + système de fichier pour la carte SD + éventuel module pour les périphériques USB
Bref, un OS, comme Contiki OS par exemple, mais il va encore manquer les modules capables d'exploiter un FS et les périphériques.
Comme dit plus haut, une application pouvant lire dans la RAM, initialement dans une carte SD, gérer un port USB et des bus I²C. Ce qui servira à une IA qui va massivement manipuler des paquets de 50 octets environ se trouvant à des adresses purement aléatoires dans la RAM. Ces paquets représentent 90% de la RAM.
Après calcul de toute manière la BeagleBone ne sera pas à la hauteur n'incluant pas assez de RAM. J'en ai besoin de 32go, pour ce robot je vais donc devoir utiliser ma carte ATX dans un premier temps comme je l'avais d'abord entrepris. Seulement je n'ai toujours pas compris comment fonctionnait le paging en long mode, quelqu'un pourrait me l'expliquer ? J'entre une adresse dans le registre CR3, vers où iront les octets se trouvant à l'adresse en question pour me permettre de les manipuler ensuite ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C