Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1489 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  Lire et écrire dans disque dur SATA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lire et écrire dans disque dur SATA

n°2297858
computer m​ail
Posté le 17-03-2017 à 16:06:28  profilanswer
 

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 [...] g-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- [...] Technology, est-ce quelque chose que j'aurais à gérer d'une quelconque manière pour garantir le bon fonctionnement de tout ?

mood
Publicité
Posté le 17-03-2017 à 16:06:28  profilanswer
 

n°2297866
rat de com​bat
attention rongeur méchant!
Posté le 17-03-2017 à 18:33:14  profilanswer
 

C'est bien toi la personne qui veut construire un super-robot programmé tout en ASM ou je me trompe de forum? :o Je pense qu'interfacer un disque dur SATA c'est un peu (trop) compliqué... Le SMART tu peux oublier, ça sert "juste" à vérifier l'état du disque dur.
 
Je pense que tu dois pouvoir trouver des infos là http://wiki.osdev.org/Main_Page et du côté Linux vu que le code est disponible sur internet.

n°2297875
rufo
Pas me confondre avec Lycos!
Posté le 17-03-2017 à 22:25:47  profilanswer
 

Vu le début de son post, je pense que c'est bien lui.
 
Plus précisément pour le pilotage du SATA : http://wiki.osdev.org/AHCI
Mais avant de pouvoir écrire ton premier fichier sur ton HDD SATA, t'es pas couché s'il tu dois écrire ton driver en ASM et si en plus, tu dois te définir ton système de fichier  :pt1cable:  
En tout cas, bon courage à toi. Perso, j'aurais pas la patience de passer autant de temps à coder un truc aussi compliqué pour faire une tâche aussi basique :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2297881
computer m​ail
Posté le 18-03-2017 à 07:25:19  profilanswer
 

Merci pour vos réponses, je viens de terminer la lecture de ton lien rufo, il y a un point de type programmatique que je n'ai pas su soustraire.
 

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


 
C'est tout petit, que signifie 0xXX ici un exemple "// 0x28, BIOS/OS handoff control and status" ?


Message édité par computer mail le 18-03-2017 à 07:26:59
n°2297903
h3bus
Troll Inside
Posté le 18-03-2017 à 18:51:14  profilanswer
 

C'est l'offset mémoire du registre, en octet et en hexadécimal.


---------------
sheep++
n°2298238
antac
..
Posté le 24-03-2017 à 14:49:16  profilanswer
 

Et sinon ça en est où ton OS ?

n°2298242
rufo
Pas me confondre avec Lycos!
Posté le 24-03-2017 à 15:55:18  profilanswer
 

Il affiche déjà le nom et la version de l'OS. Plus qu'à coder le reste :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2298243
h3bus
Troll Inside
Posté le 24-03-2017 à 16:00:13  profilanswer
 

Ce serait déjà énorme, sauf en utilisant les routines BIOS, mais c'est tricher.


---------------
sheep++
n°2298250
TotalRecal​l
Posté le 25-03-2017 à 09:10:59  profilanswer
 

Enorme surtout pour quelqu'un qui prétend coder un OS mais qui semble avoir tout juste découvert l'héxadécimal :fouyaya:


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2298265
antac
..
Posté le 26-03-2017 à 15:13:43  profilanswer
 

On va dire plus poliment que quelqu'un qui souhaite coder un OS de A à Z sans utiliser le Bios et qui se demande ce qu'est la table SMART (ce que n'importe quel étudiant de première année en informatique connait)...c'est assez étonnant.
 
Quand tu vois qu'un spécialiste a mis un an et demi à coder une interface de lecture sans passer par les syscalls...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  Lire et écrire dans disque dur SATA

 

Sujets relatifs
Ecrire un fichier sur le serveur en JavascriptAnnuler une fusion et ré-écrire les données dans les cellules vides
[PHP] Lire la page HTML d'un site sur lequel on est connectéMacro VBA pour écrire du code Macro ImageJ
Lire ou Télécharger un fichier sur un FTPEcrire un secteur d'amorçage sur mon disque dur sous Windows
Lire un fichier data [resolu, merci]Lire fichier excel écrire dans bdd
Plus de sujets relatifs à : Lire et écrire dans disque dur SATA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR