1. #1
    Provisoirement toléré
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : mars 2016
    Messages : 120
    Points : 0
    Points
    0

    Par défaut Beaglebone Black programmation OS assembleur from scratch

    Bonjour,

    je viens ici car j'ai une carte Beaglebone Black dont je dois programmer un OS complet, je ne sais absolument pas par où commencer. Pour info c'est une carte embarquée avec processeur ARM CORTEX A-8. Je fais appel à votre aide, des livres à me proposer peut-être ?

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués

    Informations forums :
    Inscription : juin 2009
    Messages : 3 499
    Points : 9 207
    Points
    9 207
    Billets dans le blog
    1

    Par défaut

    Tu dois créer ton propre OS ? Sur une carte ? C'est chaud comme projet...

    Il faut déjà que tu regardes comment sont faits des OS "simples" : tu peux regarder FreeRTOS dont le code est accessible http://www.freertos.org/

  3. #3
    Provisoirement toléré
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : mars 2016
    Messages : 120
    Points : 0
    Points
    0

    Par défaut

    Merci pour cette réponse rapide, en fait je cherche d'avantage à savoir comment écrire les différents driver des composants avec leur datasheet qu'à savoir comment un OS fonctionne. Et aussi savoir comment fonctionne le BIOS de ma carte.

  4. #4
    Provisoirement toléré
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : mars 2016
    Messages : 120
    Points : 0
    Points
    0

    Par défaut

    Si je ne me trompe pas, le BIOS est directement placé sur le processeur ARM ? Où pourrais-je trouver le fonctionnement de ce BIOS ?

  5. #5
    Modérateur
    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 696
    Points : 5 373
    Points
    5 373

    Par défaut

    Salut,
    Alors.... Le projet est tellement complexe que trouver le bon bout n'est pas évident.

    Tu vas avoir du boulot et il va falloir y aller par étape mais en ayant une vue globale de ce que tu souhaites faire et ça c'est loin d'être évident lorsqu'on découvre tout. De plus il va falloir que tu apprennes un peu (ou beaucoup) l'électronique car en l'absence de système d'exploitation dans le microcontroleur ARM, l'électronique qui l'entour ne fait rien, c'est ton programme à toi, donc ton OS, qui doit aussi piloter tout ça.

    Avant de vouloir coder un OS, il faut savoir comment ça fonctionne aussi je t'invite vivement à suivre le conseil de Bktero. Tu vas te rendre compte que dans un OS il y a beaucoup de chose comme ça :
    https://elinuxjourney.wordpress.com/...for-beginners/

    Exemple: le Timer management attribue et gère le temps pour les tâches/processus. Pour le mettre en oeuvre il faut savoir comment fonctionne le timer de micro ARM.

    C'est le genre du truc ou on tourne en rond vite fait.

    Pour commencer à coder en assembleur sur le micro il faut, je pense, tout de suite s'atteler à faire fonctionner l'écran et l'affichage pour "voir" quelque chose mais rien que ça c'est un gros morceaux.


    Ps: il n'y a pas de BIOS sur ce genre de carte (pas à ma connaissance)
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #6
    Provisoirement toléré
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : mars 2016
    Messages : 120
    Points : 0
    Points
    0

    Par défaut

    Existerait-il un bon livre pour apprendre à programmer l'OS d'une carte avec processeur ARM sans BIOS from scratch ?

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 313
    Points : 22 063
    Points
    22 063

    Par défaut

    La datasheet du processeur ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Provisoirement toléré
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : mars 2016
    Messages : 120
    Points : 0
    Points
    0

    Par défaut

    Savoir programmer en assembleur ARM, lire une datasheet, comment fonctionne l'électronique, ai-je besoin d'autre chose pour programmer cet OS ?

    Là est la question.

  9. #9
    Modérateur
    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 696
    Points : 5 373
    Points
    5 373

    Par défaut

    Citation Envoyé par Factorisable Voir le message
    Existerait-il un bon livre pour apprendre à programmer l'OS d'une carte avec processeur ARM sans BIOS from scratch ?
    Je n'en connais pas et je suis sur à 99% qu'il n'en existe pas, malheureusement pour une raison très simple, car le hard électronique autour du micro ARM est très différent selon les cartes. Un tel bouquin devrait cibler une carte précise, dans une version matérielle précise et pour un but précis (un OS) mais d'un point de vu rentabilité ce bouquin ne se vendrait qu'en trop peu d'exemplaire puisque le public serait trop limité. Par contre je suis quasi sur et certain qu'il y a des livres qui traitent du fonctionnement des systèmes d'exploitation ensuite lorsque tu maîtrises la cible, tu peux normalement tout adapter.

    Il y a des différences entre un OS sur PC et un OS sur un SoC ou un processeur comme le SITARA AM335x. Sur un PC il y a une gestion des périphériques via les bus PCI Express /USB/AGP alors que dans un SoC c'est un peu différent (déjà il n'y a pas de PCI) ce qui implique que la couche bas niveau entre un OS PC et SoC n'est pas du tout la même.

    Citation Envoyé par al1_24 Voir le message
    La datasheet du processeur ?
    Oui !
    Tout électronicien dira que c'est la bible ("le mode d'emploi du composant").

    Citation Envoyé par Factorisable Voir le message
    Savoir programmer en assembleur ARM, lire une datasheet, comment fonctionne l'électronique, ai-je besoin d'autre chose pour programmer cet OS ?

    Là est la question.

    - Programmer en assembleur ARM Oui, mais que si évidemment tu souhaites faire ton OS en assembleur pour microcontrôleur ARM. Si tu veux le faire en langage C ou C++ (par exemple) alors tu n'aura pas vraiment a t'occuper de l'assembleur et de la compréhension des mécanismes internes qu'il impose (les différents modes d'adressages, les registres de travail, le spécial fonction register a surveiller pour voir si une opération a générée une retenu, un overflow, un signe négatif etc...). Lorsque tu programmes en C, ce que je viens d'écrire juste avant est géré par le compilateur.

    - Lire une datasheet Oui c'est obligatoire car c'est le mode d'emploi, écrit par le fabricant, du composant de ce même fabricant !

    Je dois l'avouer... la première fois que l'on ouvre la datasheet du processeur SITARA AM335x qui fait 5000 pages, on a le cerveau qui se retrouve bloqué dans un état de "concentrement" : c'est la phase de ton cerveau qui se trouve entre la concentration et l'endormissement Tu t'en rends vite compte, bouche ouverte, langue qui pendouille, bave partout, yeux retournés et tétanisation de tous tes membres


    - Comment fonctionne l'électronique Tu es obligé de connaître le minimum sinon tu ne pourra pas piloter les composants. Rien que accéder au une carte SD ou microSD va nécessiter de mettre en oeuvre le bus SPI. Il faut comprendre ce bus, comment on le configure et comment on l'utilise dans le processeur grâce à la datasheet. Idem pour tout le reste




    Il va donc falloir apprendre un peu de tout là dedans mais aussi te procurer les outils de développement qui vont biens.
    T'es tu posé la question de comment envoyer un programme là dedans ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  10. #10
    Provisoirement toléré
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : mars 2016
    Messages : 120
    Points : 0
    Points
    0

    Par défaut

    Comment ?

  11. #11
    Modérateur
    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 696
    Points : 5 373
    Points
    5 373

    Par défaut

    Ça je ne sais pas, je ne m'y suis jamais penché et je n'ai jamais eu l'envie de créer un OS en assembleur sur une cible aussi complexe.

    En plus le SITARA AM335x est un processeur performant mais tellement performant que si tu regardes la doc tu vas t'apercevoir que en plus du micro ARM à l'intérieur, il y a un autre microcontrôleur, double coeur, caché dedans et qui accès aux mêmes ressources que le ARM. Regarde le chapitre PRU (programmable real time unit).

    En gros, ce SoC contrairement à celui du Raspberry permet de faire du temps réel grâce à ce PRU (sans gêner le ARM) sans compter que tu as des entrées de conversion analogique/numérique que Raspberry n'a pas non plus.

    En revanche le Soc du Raspberry est plus puissant car 4 coeurs ce qui est idéal pour un mini PC mais beaucoup moins pour un projet demandant du temps réel

    Je n'ai pas les réponses à tes questions pour une raison simple. Moi je connais un peu ce processeur mais je ne le maîtrise pas alors que toi pour faire un OS tu as besoin de le maîtriser parfaitement et dans les moindres détails.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  12. #12
    Provisoirement toléré
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : mars 2016
    Messages : 120
    Points : 0
    Points
    0

    Par défaut

    Merci, je vais donc m'y mettre.

  13. #13
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2011
    Messages : 253
    Points : 503
    Points
    503

    Par défaut

    Salut,

    Un livre que j'avais lu pour ce même type de projet : https://www.amazon.co.uk/ARM-System-...dp/1558608745/.
    Comme déjà conseillé également, la documentation du processeur t'en apprendra beaucoup.

    Je te conseille dans un premier temps de comprendre l’enchaînement des actions qui se déroulent de la mise en route de la carte (power on) jusqu'à l'accès en console sur un OS existant. Tu verras notamment la vector table etc...
    Il faut vraiment segmenter ton approche. Comprendre le fonctionnement d'un bootloader, où se trouve-t-il sur ta carte ?
    Ensuite, comment le bootloader accède à l'OS ? quelles sont les informations transmises à l'OS (je pense notamment au device tree).
    Puis, que doit faire mon OS ? Une "simple console", lancer deux tâche concurrentes dont mon propre scheduler gère l'ordonnancement ? Doit il pouvoir accéder à tous les périphériques de la carte ?

    Bref, un beau projet qui sera fort instructif.

    Dernier conseil, le from scratch c'est bien, mais parfois il faut accepter de réutiliser du code déjà fait pour gagner du temps. J'avais fait l'erreur de vouloir refaire mon propre bootloader ..
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

  14. #14
    Provisoirement toléré
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2016
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : mars 2016
    Messages : 120
    Points : 0
    Points
    0

    Par défaut

    Merci des conseils, très bon livre au passage.

Discussions similaires

  1. Les outils que vous utilisez pour programmer en assembleur
    Par Smortex dans le forum x86 32-bits / 64-bits
    Réponses: 35
    Dernier message: 14/07/2014, 19h31
  2. Copier un programme commercial from scratch, Autorisé?
    Par nowox dans le forum Langages de programmation
    Réponses: 20
    Dernier message: 07/03/2008, 04h29
  3. [VB.NET] Créer une textbox from scratch
    Par AP dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/04/2006, 10h09
  4. Exposé sur intel 8086 & programmation en assembleur
    Par BRAHIMI MOUSSA dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/02/2006, 21h23
  5. Un programme en assembleur qui indique le bit de parité
    Par bsamah dans le forum Assembleur
    Réponses: 3
    Dernier message: 21/02/2006, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo