CYZE PRODUCTION
VOUS PRESENTE LE COURS SUR LES MICROPROCESSEURS ET LEURS FABRICANTS
Tél : (00229) 96 15 81 18 E-mail : cyze2002@yahoo.fr / cyze2002@hotmail.com
CYZE PRODUCTION
Octet 2. 0
Octets 3-6. Adresse LBA du 1e secteur à lire
Octets 7-10. Nombre de secteurs.
Octet 11. 0
Octet 12. 0
Le contrôleur renvoie les données lues ((2048 * nombre de secteurs) octets).
Note : L’adresse est le nombre de secteur est indiqué avec la norme Big endian :
Octet 3 = ( lba >> 24 ) & 0xff;
Octet 4 = ( lba >> 16 ) & 0xff;
Octet 5 = ( lba >> 8 ) & 0xff;
Octet 6 = lba & 0xff;
Octet 7 = ( count >> 24 ) & 0xff;
Octet 8 = ( count >> 16 ) & 0xff;
Octet 9 = ( count >> 8 ) & 0xff;
Octet 10 = count & 0xff;
Écrire
Vers un disque ATA
L’écriture se passe exactement de la même manière que la lecture si ce n’est que la commande est 0x30 et que
les données ne sont pas transférées du disque à la mémoire mais de la mémoire au disque.
Vers un disque ATAPI
Dans le cas d’un CD-ROM, cette commande ne peut être utilisée que pour un graveur.
Prise en charge des erreurs
Une bonne prise en charge des erreurs est également un point important pour un pilote fonctionnel.
Pour cela, il faut lire le port d’erreur (0x1f1, 0x171, 0xf1 ou 0x71) après chaque commande. Le contenu de ce port
est décrit plus haut. La documentation offcielle est plus exhaustive sur ce port, dont la valeur peut parfois
dépendre de la dernière commande.
Pour les commandes Packet, il faut utiliser la commande (Packet) Request Sense pour connaître la valeur de la
dernière erreur (non traitée dans cet article).
Détecter le protocole
Les disques ATA et ATAPI fonctionnant différemment, il est important de pourvoir détecter le protocole utilisé par
un disque. Cela se réalise de la manière suivante :
1. En premier lieu, il faut initialiser le contrôleur