12 julho, 2011

O HDD!

O HDD parece difícil, mas só se parece. Interfaceá-lo é simples, o problema é a quantidade de vias que se usa, impossibilitando o uso de mcu's PIC16F ou abaixo (ou caso vá usar esses mcu, necessitará de um arranjo de buffer/transeivers).

Em um post anterior, eu mostrei o HDD 2.5" 44 pinos, bem pois ainda vai ser que vou me basear, até porque notebook/netbook são os eletrônicos que mais vendem atualmente, e justo os que usam o HDD de 2.5", porem são mais de duas décadas que se usa o HDD de 3.5" 40 pinos.

Qual a diferença entre os dois?

Praticamente nenhuma,  somente a tensão de trabalho, potencia, os pinos de força e o tamanho (desde dos componentes a carcaça).

Diferente do HDD de 3.5", o  HDD é voltado para aparelhos portáteis, principalmente notebooks (no qual foram primeiramente desenvolvidos) , pois o consumo faz diferença em relação a bateria. Para isto o HDD 2.5" utiliza a tensão de 5V, tanto para a parte mecânica quanto digital, e a conexão para a força são mais dois pinos do lado esquerdo (41 e 42 mais exatamente, 43 é o Ground e 44 é o 0-ATA), gerando uma potencia relativamente menor se comparado ao HDD 3.5".
Eu aconselho mexer com HDD 2.5", pois eles trabalham com somente 5V, igual a praticamente todos os mcu do mercado, diferente do HDD 3.5" que você necessita de uma fonte de computador, sem falar o consumo que gira em torno de 550mA (ou 0,55A), facilitando ainda mais o uso com mcu.

Descrição dos Pinos

E ou I - Entrada ou Input
S ou O - Saída ou Output
E/S ou I/O - Entrada/Saída ou Input/Output

ENCSEL - E - Este sinal é usado para definir master/slave através do sinal CSEL (pino 28).
                        Pinos B e D  Aberto: Definição de master/slave através do sinal CSEL é desativado.
                                            Fechado: Definição de master/slave através do sinal CSEL é ativado.

MSTR - E - MSTR, I , definição Master/Slave
                       Pinos A,B,C e D  Aberto: Master
                       Pinos A e B          Fechado: Slave

PUS - E - Quando o pino C é aterrado, o dispositivo não roda ao ser ligado.

RESET - E - Sinal de reinicio do host. O sinal é ativo em LOW e acertado por um minimo de 25µs enquanto o dispositivo liga.

DATA 0 a 15 - E/S - Via de 16 bits bidirecionais de dados entre o host e o dispositivo. Estes sinais são usados para transferência de dados.

DIOW - E - Sinal acertado pelo host para escrever no registro do dispositivo ou porta de dados.

STOP - E - DIOW deve ser negado pelo host antes de iniciar a transferência Ultra DMA. O sinal STOP deve ser negado pelo host antes dos dados serem transferidos durante a transferência Ultra DMA. Durante esta transferência , o acertamento do sinal STOP é definido pelo host depois de indicar que a transferência foi suspensa.

DIOR - E - Sinal de Leitura do host para ler o registro do dispositivo ou porta de dados.

HDMARDY - E - Sinal de controle de fluxo para a entrada de dados Ultra DMA (Comando READ DMA). Este sinal é acertado pelo host para informar ao dispositivo que o host está preparado para receber os dados. O host pode negar o sinal HDMARDY para suspender a transferência.

HSTROBE - E - Sinal de saída de dados do host durante o recebimento de dados (Comando WRITE DMA). Ambos a subida ou descida da borda do sinal HSTROBE prende os dados das vias Data 15 - 0 no dispositivo. O host pode suspender a inversão do sinal para suspender o recebimento dos dados Ultra DMA.

INTRQ - S - Sinal de Interrupção ao host.
                     Este sinal é negado nos seguintes casos:
                     - acertação do sinal RESET
                     - Reinicio pelo SRST do registro de controle do dispositivo (via software)
                     - Escrita do registro de comando pelo host.
                     - Leitura do registro de estado (status) pelo host.
                     - Conclusão de transferência de dados do setor.(sem ler o registro de estado)
                     A linha de saída do sinal contem uma impedância alta quando não dispositivos selecionados ou interrupção fora disativada.

CS0 - E -  Sinal da via de endereço dado pelo host. Este sinal é usado pelo host para selecionar o bloco de registros de comando.

CS1 - E - Sinal da via de endereço dado pelo host. Este sinal é usado pelo host para selecionar o bloco de registros de controle.

DA 0 -> 2 - E  - Via de endereço usado pelo host para acessar os registros de tarefa de arquivo.

KEY - Pino de prevenção de inserção errônea.

PDIAG - E/S - Este sinal é uma entrada para o dispositivo no modo master e saída para o dispositivo no modo slave em uma cadeia de configuração. Este sinal indica que o dispositivo slave foi completada o auto-diagnóstico. Este sinal é colocado em +5V junto com um resistor de 10 Kohms para cada dispositivo.

CBLID - E/S -  Este sinal é usado para detectar o tipo de cabo instalado no sistema. Este sinal é colocado a +5V junto com um resistor 10Kohms  para cada dispositivo.

DASP - E/S - Este é um sinal tempo-multiplexado para indicar que o dispositivo está ativo e o slave está presente. Este sinal é colocado a +5V junto com um resistor de 10Kohms para cada dispositivo.

IORDY - S - Este sinal requere ao host para atrasar o ciclo de transferência quando o dispositivo não estiver pronto para responder a requisição de transferência de dados do host.

DDMARDY - S - Sinal de controle de fluxo para a saída de dados Ultra DMA (Comando WRITE DMA). Este sinal é acertado pelo dispositivo para informar ao host que o mesmo está pronto para receber o dados Ultra DMA. O dispositivo pode negar o sinal DDMARDY para suspender a transferência Ultra DMA.

DSTROBE - S - Sinal de entrada de dados do host durante a transferência Ultra DMA. Ambas a subida ou descida de borda deste sinal armazena dados recebidas nas vias de dados 15-0 no host. O dispositivo pode suspender a inversão do sinal DSTROBE para suspender a transferência Ultra DMA.

CSEL - E - Este sinal configura o dispositivo como master ou slave.
                   - Quando CSEL é aterrado, o IDD é um dispositivo Master.
                   - Quando CSEL é aberto, o IDD é um dispositivo Slave.
                   Este sinal é posto como um resistor de 240Kohms para cada dispositivo.

DMACK - E - O host acerta este sinal como uma resposta de que o host recebeu os dados ou indica que ele é invalido.

DMARQ - S - Este sinal é usado para a transferência DMA entre o host e o dispositivo. O dispositivo acerta o sinal quando o mesmo está preparado para a transferência DMA para o host (leitura) ou vinda do host (escrita).
                       A direção dos dados na transferência é controlada por DIOR e DIOW. Estes sinais manuseiam junto com o sinal DMACK. Em outras palavras, o dispositivo nega o sinal DMARQ apos o host acertar o sinal. Quanto temos outros dados para ser transferidos, o dispositivo acerta o sinal DMARQ.

                       Quando a transferência de dados DMA é completa, os sinais IOCS16, CS0 e CS1 não são acertados. A transferência de dados DMA é uma via de 16 bits.

+5VDC - E - Força de alimentação do dispositivo
GND - Terra ou Ground

Interface Lógica

Definições:

Platter ou Prato - Disco onde os dados serão escritos/lidos

Heads ou Cabeças - Dispositivo que grava/lê os dados no disco magnético. Geralmente, cada prato contem duas cabeças.

Sectors ou Setores - Setor é a menor unidade de dados que pode ser endereçado, sendo todos os dados armazenados em setores. Tipicamente, um setor contem 512 bytes de dados.

Track ou Trilha - As trilhas são um fio concêntrico de setores.

Cilindros ou Cylinders - Um cilindro compreende o mesmo que trilhas em cada prato. Por padrão, ele foi adotado de 16.065 setores (255 trilhas multiplicado por 63 setor por trilha).

O dispositivo pode operar em dois tipos de execução de comando: CHS (Cylinder-head-Sect) ou LBA (Logical Block Address). 

No CHS, o a especificação desejada e dando os valores do cilindro, cabeça e setor. Exemplo: 0,0,1; 15000,1,63 e etc..

No modo LBA, o endereçamento é dado por um valor, por exemplo LBA 0 é igual a 0,0,1; LBA 63 é igual a 0,0,63; LBA 64 é igual a 0,1,1 e por ai vai.

Calculo: 
LBA [(N. Cilindro * Total de Cabeças + N. Cabeça)*Total de Setor/Trilha]+ N. Setor -1


Registradores 

Os registradores são acessados através dos sinais CS0,CS1,DA0,DA1 e DA2 pelo host. A tabela abaixo mostra os endereços e suas funções:

* Clique na imagem para ampliar

Bloco de Registro de Comandos

Data Register (0x1F0) 
        Este é um registro de 16bits para a transferência de dados entre o dispositivo e o host. Transferência de dados tanto PIO quanto DMA.

Error Register (0x1F1)
        O registrador de erro indicar o estado dos comandos executados pelo dispositivo. O conteúdo deste registro é valido quando o bit ERR do registro de estado (Status Register) for 1.

Features Register (0x1F1)
        O registro de propriedades provem uma propriedade específica para um comando. Por instancia, ele é usado como o comando SET FEATURES para ativar ou não o cache.

Sector Count Register (0x1F2)
        O registrador de contagem de setor indica o número de setores de dados para ser transferidos na leitura/escrita entre o host e o dispositivo. Quando o valor for 0x00, a contagem é de 256. Quando o registrador indicar o valor 0x00 apos a conclusão do comando, indica que o comando foi executado com sucesso.

Sector Number Register (0x1F3)
        O conteúdo deste registrador indica o inicio do numero do setor para o comando subsequente. O numero do setor pode ser entre 0x01 a até o numero definido de setores por trilha no comando INITIALIZE DEVICE PARAMETERS.

Cylinder Low Register (0x1F4)
         O conteúdo deste registrador indica os 8-bits menos significativos do cilindro inicial.

Cylinder High Register (0x1F5)
         O conteúdo deste registrador indica os 8-bits mais significativos do cilindro inicial.

Device/Head Register (0x1F6)
         O conteúdo deste registrador indica o dispositivo e a cabeça.

Status Register (0x1F7)
          O conteúdo deste registrador indica o estado do dispositivo.

Commando Register (0x1F7)
          O conteúdo deste registrador contem um comando enviado ao dispositivo. Após o registro ser escrito, o comando é executado imediatamente.

Por si só , este pequeno tutorial é suficiente para começar a trabalhar em cima dos HDD's, agora bastando somente você começar a "furuscar" na internet.

Mais sobre HDD's:


Este aqui é o manual do HDD que usei, ele é em inglês.


Bem é isso flw!