Partage
  • Partager sur Facebook
  • Partager sur Twitter

Apprendre à écrire un OS de zéro sur ARM

    1 avril 2017 à 20:05:06

    Bonjour,

    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.

    -
    Edité par Computer Mail 1 avril 2017 à 20:09:14

    • Partager sur Facebook
    • Partager sur Twitter
      2 avril 2017 à 11:22:20

      Ce n'est pas facile de faire son OS, je te conseil de regarder yocto project.
      • Partager sur Facebook
      • Partager sur Twitter
        2 avril 2017 à 16:52:17

        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.
        • Partager sur Facebook
        • Partager sur Twitter
          3 avril 2017 à 9:04:14

          Bonjour,

          Je déplace dans le forum "Développements".

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            3 avril 2017 à 20:37:31

            La réponse que j'ai reçu ne m'a pas rassasié, quelqu'un aurait plus d'informations ?
            • Partager sur Facebook
            • Partager sur Twitter
              4 avril 2017 à 9:42:27

              Bonjour,

              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

              • Partager sur Facebook
              • Partager sur Twitter
                5 avril 2017 à 0:12:39

                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.

                -
                Edité par Computer Mail 5 avril 2017 à 0:41:29

                • Partager sur Facebook
                • Partager sur Twitter
                  5 avril 2017 à 8:39:23

                  Computer Mail a écrit:

                  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).

                  -
                  Edité par Ksass`Peuk 5 avril 2017 à 8:40:01

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                  Anonyme
                    5 avril 2017 à 8:53:06

                    J'appuie Ksass, Il faut absolument que tu te trouves un OS pour système embarqué. Ils ont été créé pour faire exactement ce dont tu as besoin.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 avril 2017 à 9:00:36

                      Je reste sur ma demande et le livre n'est pas à propos de l'architecture ARM spécifiquement, ce qui ne m'aidera pas.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        5 avril 2017 à 9:12:53

                        Computer Mail a écrit:

                        Mon niveau de connaissance actuel se résume à de petits programme en langage c.

                        Computer Mail a écrit:

                        Je reste sur ma demande et le livre n'est pas à propos de l'architecture ARM spécifiquement, ce qui ne m'aidera pas.

                        Je reste sur ma réponse tu n'arriveras à rien si tu persistes dans cette voie.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 avril 2017 à 9:28:37

                          Computer Mail a écrit:

                          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.

                          -
                          Edité par Ksass`Peuk 5 avril 2017 à 9:31:31

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                            5 avril 2017 à 9:38:01

                            Je ne peux qu'être d'accord avec Ksass et PafDag,

                            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

                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 avril 2017 à 12:50:28

                              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.

                              -
                              Edité par Computer Mail 5 avril 2017 à 13:02:26

                              • Partager sur Facebook
                              • Partager sur Twitter
                                5 avril 2017 à 13:15:12

                                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.

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                  5 avril 2017 à 13:24:44

                                  Où sont les gens compétents ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    5 avril 2017 à 13:31:45

                                    Où sont les gens compétents ?

                                    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.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                      5 avril 2017 à 13:31:55

                                      Computer Mail a écrit:

                                      Où sont les gens compétents ?

                                      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.

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                      Anonyme
                                        5 avril 2017 à 14:07:45

                                        Surtout qu'il n'y a aucune raison qu'un OS pour système embarqué ne marche pas. Même toi tu ne sais pas expliquer pourquoi tu n'en veux pas.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          5 avril 2017 à 14:15:00

                                          PafDag a écrit:

                                          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 ?

                                          http://www.contiki-os.org/

                                          -
                                          Edité par Ksass`Peuk 5 avril 2017 à 14:19:18

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                            5 avril 2017 à 14:50:35

                                            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.

                                            Sinon je comprend pas pourquoi le programme ne pourrait pas fonctionner sur linux, a moi que... Le programme serait du windows ?

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              5 avril 2017 à 14:58:43

                                              kileurf a écrit:

                                              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".

                                              -
                                              Edité par Ksass`Peuk 5 avril 2017 à 14:59:01

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                                6 avril 2017 à 1:23:12

                                                Laissons tomber la formation, auriez-vous des livres à me proposer traitant du "bare metal" sur architecture ARM ?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  6 avril 2017 à 1:36:33

                                                  Salut, je veux savoir quel type d'application voulez vous réaliser avec la carte Beaglebone.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    6 avril 2017 à 7:31:14

                                                    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.
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Anonyme
                                                      6 avril 2017 à 8:53:33

                                                      Computer Mail a écrit:

                                                      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 ?
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        6 avril 2017 à 9:34:05

                                                        Computer Mail a écrit:

                                                        (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.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                                                          6 avril 2017 à 10:30:01

                                                          Donc quel ouvrage me proposez-vous ?
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Anonyme
                                                            7 avril 2017 à 2:54:22

                                                            Computer Mail a écrit:

                                                            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.



                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              7 avril 2017 à 6:04:43

                                                              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 ?

                                                              -
                                                              Edité par Computer Mail 7 avril 2017 à 6:24:37

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Apprendre à écrire un OS de zéro sur ARM

                                                              × 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.
                                                              • Editeur
                                                              • Markdown