1. #1
    Débutant
    Homme Profil pro
    Ubuntu
    Inscrit en
    janvier 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ubuntu

    Informations forums :
    Inscription : janvier 2017
    Messages : 69
    Points : 0
    Points
    0

    Par défaut Lire et écrire sur disque dur SATA

    Bonjour,

    je dois ajouter un code pour contrôler un disque dur depuis un système d'exploitation maison que je souhaite 100% assembleur. Sur internet je trouve ceci https://www.quora.com/How-do-I-read-...using-Syscalls, je n'ai personnellement pas besoin de système de fichier élaboré et d'outil de gestion des données du disque dur. Je cherche uniquement à écrire et lire sur le disque dur en assembleur. Le matériel est un processeur x86-64 Intel avec une interface disque dur SATA. Comment pourrais-je lire et écrire dans un disque dur avec ce matériel et uniquement en assembleur ? Aussi j'ai entendu parler de ça https://fr.wikipedia.org/wiki/Self-M...ing_Technology, est-ce quelque chose que j'aurais à gérer d'une quelconque manière pour garantir le bon fonctionnement de tout ?

  2. #2
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    janvier 2005
    Messages
    684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2005
    Messages : 684
    Points : 1 924
    Points
    1 924

    Par défaut

    C'est encore une chose qui paraît bien plus simple qu'elle ne l'est en réalité.

    Le plus simple est d'utiliser les fonctions du BIOS (UEFI) pour lire/écrire sur un disque.

    Si tu est motivé (très), tu peux aller voir de SATA-IO et lire les documents techniques : http://www.sata-io.org/technical-library

  3. #3
    Débutant
    Homme Profil pro
    Ubuntu
    Inscrit en
    janvier 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ubuntu

    Informations forums :
    Inscription : janvier 2017
    Messages : 69
    Points : 0
    Points
    0

    Par défaut

    Le lien propose des pdf promotionnels pour le SATA et je ne peux pas utiliser le BIOS étant en long mode.

  4. #4
    Membre averti Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    mars 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : mars 2008
    Messages : 256
    Points : 420
    Points
    420

    Par défaut

    Pour pour écrire sur un disque SATA il faut connaître le contrôleur AHCI. personnellement pour mon OS maison, je n'utilise que le contrôleur IDE et c'est déjà pas facile à coder. À ma connaissance il y a déjà un os en assembleur qui pilote les disque SATA, c'est un égyptien qui fait ça mais je ne me souviens plus le nom ni si ça fonctionne vraiment

  5. #5
    Débutant
    Homme Profil pro
    Ubuntu
    Inscrit en
    janvier 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ubuntu

    Informations forums :
    Inscription : janvier 2017
    Messages : 69
    Points : 0
    Points
    0

    Par défaut

    J'ai trouvé cette page http://wiki.osdev.org/AHCI, il y a un point de type programmatique que je n'ai pas su soustraire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    typedef volatile struct tagHBA_MEM
        {
        // 0x00 - 0x2B, Generic Host Control
        DWORD cap;  // 0x00, Host capability
        DWORD ghc;  // 0x04, Global host control
        DWORD is;  // 0x08, Interrupt status
        DWORD pi;  // 0x0C, Port implemented
        DWORD vs;  // 0x10, Version
        DWORD ccc_ctl; // 0x14, Command completion coalescing control
        DWORD ccc_pts; // 0x18, Command completion coalescing ports
        DWORD em_loc;  // 0x1C, Enclosure management location
        DWORD em_ctl;  // 0x20, Enclosure management control
        DWORD cap2;  // 0x24, Host capabilities extended
        DWORD bohc;  // 0x28, BIOS/OS handoff control and status
        // 0x2C - 0x9F, Reserved
        BYTE rsv[0xA0-0x2C];
        // 0xA0 - 0xFF, Vendor specific registers
        BYTE vendor[0x100-0xA0];
        // 0x100 - 0x10FF, Port control registers
        HBA_PORT ports[1]; // 1 ~ 32
        } HBA_MEM;
    C'est tout petit, que signifie 0xXX ici un exemple "// 0x28, BIOS/OS handoff control and status" ?

  6. #6
    Membre averti Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    mars 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : mars 2008
    Messages : 256
    Points : 420
    Points
    420

    Par défaut

    0x avant un nombre signifie que c'est un nombre hexadécimal. On peut aussi mettre un h a la fin (ça dépend du compilateur)
    0x5A = 5Ah par exemple

  7. #7
    Débutant
    Homme Profil pro
    Ubuntu
    Inscrit en
    janvier 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ubuntu

    Informations forums :
    Inscription : janvier 2017
    Messages : 69
    Points : 0
    Points
    0

    Par défaut

    Pardon je précise, que représente ces nombres hexadécimaux ?

  8. #8
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    1 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 1 931
    Points : 5 384
    Points
    5 384

    Par défaut

    Si ta question est pourquoi " 0x28, BIOS/OS handoff control and status" et non 0x29 ben la j'ai envie de dire faut lire la doc
    Cela semble être des registre I/O et la faut savoir qu'une machine c'est complètement arbitraire , et d’où dépend de comment on pilote/manipule le périphérique.

  9. #9
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    janvier 2005
    Messages
    684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2005
    Messages : 684
    Points : 1 924
    Points
    1 924

    Par défaut

    Voir le lien que j'ai indiqué plus haut : sata-io
    c'est comme pour le VESA qui normalise les cartes SVGA.
    Tu peux aller voir chez intel : http://www.intel.com/content/www/us/...-ata/ahci.html

    L'accès à tous les périphériques se fait en envoyant des données aux ports (IO)
    ces adresses et données dépendent du câblage et des circuits employés, il faut donc:
    - faire des drivers spécifiques à ton matériel
    - ou faire des drivers pour la majorité des systèmes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. disque dur sata II sur carte mère sata I
    Par davidc dans le forum Composants
    Réponses: 1
    Dernier message: 17/11/2007, 15h00
  2. probleme installation xp sur disque dur sata
    Par nemo69500 dans le forum Windows XP
    Réponses: 6
    Dernier message: 23/05/2007, 10h23
  3. Réponses: 6
    Dernier message: 12/04/2007, 21h57
  4. ecrire et lire sur disque dur
    Par united4life dans le forum C
    Réponses: 12
    Dernier message: 26/03/2007, 11h29
  5. [Disque dur]SATA II compatible sur port SATA I ?
    Par dj-julio dans le forum Composants
    Réponses: 9
    Dernier message: 21/08/2006, 13h16

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