Lire et écrire dans disque dur SATA

Lire et écrire dans disque dur SATA - ASM - Programmation

Marsh Posté le 17-03-2017 à 16:06:28    

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 ?

Reply

Marsh Posté le 17-03-2017 à 16:06:28   

Reply

Marsh Posté le 17-03-2017 à 18:33:14    

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.

Reply

Marsh Posté le 17-03-2017 à 22:25:47    

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
Reply

Marsh Posté le 18-03-2017 à 07:25:19    

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
Reply

Marsh Posté le 18-03-2017 à 18:51:14    

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


---------------
sheep++
Reply

Marsh Posté le 24-03-2017 à 14:49:16    

Et sinon ça en est où ton OS ?

Reply

Marsh Posté le 24-03-2017 à 15:55:18    

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
Reply

Marsh Posté le 24-03-2017 à 16:00:13    

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


---------------
sheep++
Reply

Marsh Posté le 25-03-2017 à 09:10:59    

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
Reply

Marsh Posté le 26-03-2017 à 15:13:43    

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...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed