Lire et écrire dans disque dur SATA
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Lire et écrire dans disque dur SATA



  1. #1
    Computer Mail

    Lire et écrire dans 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 en long mode 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 ?

    -----
    Dernière modification par Computer Mail ; 17/03/2017 à 14h43.

  2. #2
    Bluedeep

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par Computer Mail Voir le message
    Bonjour,

    je dois ajouter un code pour contrôler un disque dur depuis un système d'exploitation maison que je souhaite 100% assembleur
    Tiens ça me fait penser à quelqu'un déjà double.

    http://forums.futura-sciences.com/me...torisable.html
    http://forums.futura-sciences.com/me...ricadelle.html

    Le niveau raz des paquerettes des questions aussi.

  3. #3
    LeMulet

    Re : Lire et écrire dans disque dur SATA

    Allez voir peut-être du côté de l'interruption 13H du BIOS :
    https://en.wikipedia.org/wiki/INT_13H

    Ca fonctionne pour l'IDE mais pour le SATA il doit y avoir des extensions BIOS (mais je ne suis pas spécialiste de la question)
    Dernière modification par LeMulet ; 17/03/2017 à 16h25.
    Bonjour, et Merci.

  4. #4
    Computer Mail

    Re : Lire et écrire dans disque dur SATA

    Merci mais comme je l'ai dit je suis en long mode les interruptions BIOS ne sont pas possibles.

  5. A voir en vidéo sur Futura
  6. #5
    LeMulet

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par Computer Mail Voir le message
    Merci mais comme je l'ai dit je suis en long mode les interruptions BIOS ne sont pas possibles.
    Ok, j'ai trouvé de bonnes infos (et du code ) ici :
    http://stackoverflow.com/questions/3...protected-mode
    Bonjour, et Merci.

  7. #6
    Ludwig1

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par LeMulet Voir le message
    Ok, j'ai trouvé de bonnes infos (et du code ) ici :
    http://stackoverflow.com/questions/3...protected-mode
    Salut,

    Il semblerait que l'initiateur du fil veut faire fonctionner le tout avec son système d'exploitation fait maison. A vrai dire je me demande s'il travaille avec un PC (au vu des questions posées). Ensuite il doit bien démarrer sa machine avec quelque chose?
    en fait c'est assez vague tous ça?

    Cordialement

    Ludwig

  8. #7
    Bluedeep

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par Ludwig1 Voir le message
    . A vrai dire je me demande s'il travaille avec un PCg
    Je pense plutôt qu'il travaille du chapeau.

  9. #8
    Ludwig1

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par Computer Mail Voir le message
    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 en long mode 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 ?
    Salut,

    Si ma mémoire ne fait pas défaut, pour autant que je sache, SATA est une norme de connectique de bus série permettant de relier ensemble les différents éléments d'un calculateur.
    La marque de Ton Disque que tu veux brancher c'est quoi ?
    Quel type de contrôleur ? ( CI qui assure la gestion/pilotage du disque etc... )
    Comment veux-tu qu'on te réponde si tu ne donne pas un minimum d'informations ?
    Ensuite les accès disque se font par lecture/écriture dans les registres ad hoc du contrôleur.
    Auparavant il faut configurer le contrôleur, (Protocole de transmission etc... ) donc il faut vraiment savoir quelle architecture/registres à disposition etc... etc...
    Sans toutes ces précisions, toute la discussion va tourner dans le vide.
    Le PB n'est pas le codage en langage machine, mais configurer correctement le contrôleur.
    Tu dois donc t'informer/dire quel est le protocole de communication etc... etc...
    Pour ton disque, le fabricant t'as certainement donné de la doc.

    Cordialement

    Ludwig

    PS

    Exemple Codage Ecriture/Lecture d'un octet dans une position mémoire

    Code:
    \ Lecture d'un octet en mémoire
    
    Label ReadByte
    
    EAX EAX     XOR                    
    0 [EBX] AL  MOV                
    EAX EBX     MOV                    
                RET                            
    
    \ Ecriture d'un octet en mémoire
    
    Label WriteByte
    
     0      [EBP] EAX   MOV               
     AL 0   [EBX]       MOV                 
     4      [EBP] EBX   MOV                
     8 #    EBP         ADD                   
                        RET

  10. #9
    Computer Mail

    Re : Lire et écrire dans disque dur SATA

    La marque du disque dur n'a rien à voir avec le sujet.

  11. #10
    Ludwig1

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par Computer Mail Voir le message
    La marque du disque dur n'a rien à voir avec le sujet.

    Et le protocole et le contrôleur on fait quoi avec ?

    Cordialement

    Ludwig

  12. #11
    Computer Mail

    Re : Lire et écrire dans disque dur SATA

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

    Code:
    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" ?

  13. #12
    pm42

    Re : Lire et écrire dans disque dur SATA

    Et regarder dans les sources d'un OS existant ? Genre Linux, Darwin, OpenBSD ou autre ?

  14. #13
    Computer Mail

    Re : Lire et écrire dans disque dur SATA

    Merci, en effet le code semble se rapprocher de la structure de celui que j'ai pu survoler dans le lien mis dans mon message précédent.

  15. #14
    Computer Mail

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par LeMulet Voir le message
    Ok, j'ai trouvé de bonnes infos (et du code ) ici :
    http://stackoverflow.com/questions/3...protected-mode
    en réponse à ce message

  16. #15
    JPL
    Responsable des forums

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par Bluedeep Voir le message
    Tiens ça me fait penser à quelqu'un déjà double.

    http://forums.futura-sciences.com/me...torisable.html
    http://forums.futura-sciences.com/me...ricadelle.html

    Le niveau raz des paquerettes des questions aussi.
    C'est très possible (même pays) mais pas certain : FAI différent.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  17. #16
    Computer Mail

    Re : Lire et écrire dans disque dur SATA

    Ma première question a trouvé écho, personne n'a repondu à celle-ci:

    Citation Envoyé par Computer Mail Voir le message
    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 ?

  18. #17
    pm42

    Re : Lire et écrire dans disque dur SATA

    Tu peux ignorer le SMART.
    Mais je suis étonné du décalage entre tes questions et l'ambition de ton projet.

  19. #18
    Ludwig1

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par Computer Mail Voir le message
    Ma première question a trouvé écho, personne n'a repondu à celle-ci:
    Salut,

    dans le lien que tu cites il y a aussi ceci : https://www.pctechguide.com/hard-dis...k-smart-drives
    C'est expliqué comment ça marche un disque.
    Encore une fois, du point de vue soft, la bataille se passe au travers du contrôleur. Un point clé c'est la FAT, regarde dans le lien que t'as cité toi-même c'est expliqué.
    Je dois avouer que j'ai toujours pas compris ou tu veux en venir, remplacer un disque sur un ordi c'est déjà pas évident, alors
    vouloir réécrire des bouts de BIOS pour les accès disques ???
    Si tu ne dis pas quel type de contrôleur est installé sur ton print, ce ne sera pas évident, car c'est ce contrôleur qui assure la gestion de l'unité disque. ( Positionnement des têtes, lecture, écriture, protocole etc... )
    Donc vue côté soft, il y a une série de registres qu'il faut aller configurer avant, si t'as pas les outils nécessaires pour faire
    les test si tes données sont correctement enregistrées t'as aucune chance pour faire aller.
    En fait t'as deux PB à résoudre.

    1) Le protocole de transmission Via Bus
    2) La configuration de l'unité disque

    En dernier ressort, je ne comprend toujours pas l'intérêt de l'affaire.


    Cordialement

    Ludwig


    PS:

    Ici c'est bien montré comment c'est fait un disque, https://www.pctechguide.com/hard-dis...sk-microdrives

    L'exemple est un disque de chez Hitachi ( Marque )
    Encore une fois quelle est la marque, le type de ton disque, le contrôleur, la doc qui va avec etc...

  20. #19
    Chanur

    Re : Lire et écrire dans disque dur SATA

    Citation Envoyé par Computer Mail Voir le message
    C'est tout petit, que signifie 0xXX ici un exemple "// 0x28, BIOS/OS handoff control and status" ?
    Un nombre entier en codage hexadécimal. En langage C (et C++), si une constante numérique commence par 0x, c'est qu'elle est en hexa ; sinon, si elle commence par 0 c'est qu'elle est en octal ; sinon elle est en décimal (et dans chaque cas, si les chiffres qui suivent ne sont pas conformes, c'est une erreur de syntaxe).
    0x28 est donc un synonyme de 40

    Manifestement, dans ta structure, c'est juste un commentaire qui donne l'offset de chaque champ.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

Discussions similaires

  1. lire et ecrire dans uns SD-card
    Par ABN84 dans le forum Électronique
    Réponses: 5
    Dernier message: 07/08/2009, 12h40
  2. lire/écrire 1 secteur dans une carte SD
    Par invite21a51bdd dans le forum Électronique
    Réponses: 0
    Dernier message: 16/04/2009, 10h47
  3. Disque dur IDE dans un ordi SATA
    Par jecario dans le forum Matériel - Hardware
    Réponses: 9
    Dernier message: 06/10/2007, 21h14
  4. Lire & écrire dans un EEPROM 24CL64
    Par invite5f450736 dans le forum Électronique
    Réponses: 2
    Dernier message: 12/05/2007, 20h46
  5. lire et ecrire dans une eeprom externe par un pic en C
    Par spilz dans le forum Électronique
    Réponses: 47
    Dernier message: 26/08/2006, 23h52