Cyze production vous presente le cours sur les microprocesseurs


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

cmpb %bl, %al

jz no_adapter

jmp adapter_found

no_adapter: // contrôleur absent

adapter_found: // contrôleur présent

Détecter les disques

La détection des disques installés sur un contrôleur est plus délicate.

Une méthode est d’envoyer une commande au disque et d’attendre. Si la réponse tarde trop, on suppose que le

disque testé n’existe pas. Cette méthode n’est sûre que si l’attente est suffsamment grande. Il faut faire attention à

la commande que l’on choisit. En effet, selon que l’on veut détecter uniquement les disques ATA, ATAPI ou les

deux, il faut choisir la commande qui corresponde. En choisissant la commande 0xec et en attendant que le

contrôleur soit prêt à recevoir des données, les disques ATAPI répondront mais ne seront jamais prêts pour un

transfert. Le programme déduira donc que le disque n’existe pas.

En fait, avec cette méthode, il faut bien choisir la commande à envoyer et le résultat qu’on en attend.

movw $PORT_HEAD_AND_DISK, %dx // 0x1f6, 0x176, 0xf6 ou 0x76

movb $HEAD_AND_DISK, %al // 0xa0 pour tester le maître, 0xb0 pour l’esclave

outb %al, %dx

movw $PORT_COMMAND, %dx // 0x1f7, 0x177, 0xf7 ou 0x77

movb $COMMAND, %al // Commande à utiliser (on pourra utiliser par exemple la commande 0xec, ce qui permet

du même coup de lire les informations du disque s’il est présent, dans ce cas, il ne faut pas oublier d’ajouter le

code nécessaire à la récupération de ces informations)

outb %al, %dx

movl $TIMEOUT, %ecx // Nombre de tentatives de lecture de l’état du contrôleur

movw $PORT_STAT, %dx // 0x1f7, 0x177, 0xf7, 0x77

detect_disk_loop:

inb %dx, %al

andb $0xfe, %al // Contrôleur et disque

cmpb $0x50, %al // prêts ?

Laisser un commentaire