IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres systèmes Discussion :

Programmation UEFI EDK2 (language C)


Sujet :

Autres systèmes

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Points : 28
    Points
    28
    Par défaut Programmation UEFI EDK2 (language C)
    Bonjour ceci est un projet de tutoriel pour programmer son propre firmware,
    Les exemples seront donné sur embarqué intel x86 (car je travaille actuellement sur l'une de leur plateforme propriétaire).

    Le but de son initialisation sur le forum est de pouvoir recevoir une aide de tous intéressé.
    N'ayant trouver aucune documentation francaise sur le sujet je me suis donc trouver un bon moyen de contribution a la communauté francaise.
    Le but ne sera pas de vous épargné les nombreuses spécification (nononon !!!)
    mais de fournir une base de référence avec des exemples concrets !

    ce sujet sera éditer toutes les semaines, je vous remercie des corrections/soutiens/insulte venant de la part d'éventuelles contributeur.

    EDK2 :
    https://github.com/tianocore/edk2

    Documentation de référence :
    http://www.tianocore.org/docs/
    http://www.uefi.org/sites/default/fi...I_Spec_2_7.pdf
    https://www.gitbook.com/@edk2-docs


    Instruction d'installation :
    https://github.com/tianocore/tianoco...n-instructions

    Une introduction avec la réalisation d'un pong :
    http://www.linuxembedded.fr/2017/06/...tion-dun-pong/

    introduction avec le pong
    Si vous n'avez pas encore lu l'introduction au Pong je vous laisse y faire un tour ^^

    Tout ca c'est bien mais comment l'intégrer ?
    Allez dans MdeModulePkg/Application et créez votre dossier Pong-UEFI
    Insérez y vos fichier .c .h et .inf

    Ouvrez le fichier MdeModulePkg/MdeModulePkg.dsc :
    cherchez la ligne :
    MdeModulePkg/Application/HelloWorld/HelloWorld.inf

    et ajoutez en dessous :
    MdeModulePkg/Application/Pong-UEFI/Pong.inf

    compilons tout ca !
    build -p MdeModulePkg/MdeModulePkg.dsc -a X64 -m MdeModulePkg/Application/Pong-UEFI/Pong.inf

    Comment l'executer ?
    Ici nous allons decouvrir OVMF (Open Virtual Machine Firmware)
    pour ceci il vas falloir builder l'environement : (conseil !! compilez avec TOOL_CHAIN_TAG = gcc46)
    https://github.com/tianocore/tianoco...-to-build-OVMF

    et voici pour lancer le tout :
    https://github.com/tianocore/tianoco...ow-to-run-OVMF

    vous n'avez plus qu'a renomer et deplacer votre Pong.efi de cette maniere :
    run-ovmf/hda-contents/EFI/BOOT/BOOTX64.EFI

    enfin lancez la commande :
    qemu-system-x86_64 -pflash bios.bin -hda fat:hda-contents -net none

    Voici pour le premier jet de ce futur tutoriel.
    Vous aurez comprit que je compte m'appuyer fortement sur la documentation existante.
    Mon travail sera donc simplement de la structurer et d'y apporter des clarifications.

    Je tiens a préciser que je ne suis pas expert ! simplement curieux et bon lecteur.
    Sur ce j'attend impatiemment vos commentaires.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Points : 28
    Points
    28
    Par défaut rappel sur le bios
    Le Basic Input Output System est un ensemble de microcode fourni par le constructeur de votre carte mêre qui lui même recois ses micrologiciels des constructeurs sous traitants de périphérique.

    c'est lui qui fournit des services et des interruptionss matérielle pour dialoguer avec les composants.

    C'est l'abstraction matériel pur et dur la base de la programmation "soft" ou l'on décrit des taches et non plus des configurations électroniques.

    Ce système est naturellement écrit en assembleur étant donné que son code est fait pour être directement traité par les composants électronique.
    je tiens a préciser que l'assembleur n'est qu'une forme de notation directe du binaire sous forme de mnémotechnique (push = 6 = 00000110)
    que ce binaire soi executable sur un circuit ou sur une machine virtuel.

    Mais seulement voila... des assembleurs il y en a des milliers !!
    un nombre incalculable, processeur, controlleur, pour chaque périphérique chaque bus de données chaque élément a son driver ne serais-ce que pour communiquer avec votre système (usb, pcie).

    Donc bon personne ne parle le même language du coup les intégrations sont lentes et onéreuse.

    il se fait tard je vais donc m'arrêter ici pour ce soir et développer plus la chose demain (notament avec des liens) en une édition de ce post.

Discussions similaires

  1. passage d'une programmation basic en language c
    Par gogi000 dans le forum Débuter
    Réponses: 5
    Dernier message: 16/08/2012, 10h09
  2. programmation graphique en language c
    Par walid chehboun dans le forum Débuter
    Réponses: 3
    Dernier message: 06/03/2011, 23h44
  3. Vive la programmation ! Mais quel language ?
    Par izandril dans le forum Débuter
    Réponses: 15
    Dernier message: 04/12/2004, 21h19
  4. je veux apprendre la programmation quel language choisir??
    Par existance dans le forum Débuter
    Réponses: 26
    Dernier message: 06/08/2002, 05h32

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