Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo...

40
Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire Palestrantes Natan Hoppe Thiago Ludwig Porto Alegre, 24 de Outubro de 2007.

Transcript of Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo...

Page 1: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Pontifícia Universidade Católica - PUCRS

Programação de Periféricos

Seminário sobre protocolo Firewire

– Palestrantes –

Natan Hoppe

Thiago Ludwig

Porto Alegre, 24 de Outubro de 2007.

Page 2: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.
Page 3: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

História

• Desenvolvido pela Apple

• Substituto do SCSI

• Padronizado em 1995 através da norma IEEE 1394.

• Firewire 400, IEEE 1394a

• Firewire 800, IEEE 1394b

Page 4: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Exemplos de aplicação

Figura 1 – Filmadora

Figura 2 – HD externo

Figura 3 – Equipamento de áudio

Page 5: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Cabo – Firewire 400

• Alimentação: 2 pinos

• Dados: 4 pinos

• Distância máxima: 4,5m

Page 6: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Cabo – Firewire 800

• Alimentação: 2 pinos

• Dados: 4 pinos

• Aterramento: 2 pinos

• Nulo: 1 pino

• Distância máxima: 4,5m

Page 7: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Cabo

Figura 4 – Cabo Firewire 400

Page 8: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

VelocidadeFirewire:

• Firewire 400: 400 Mbps = 50 MB/s

• Firewire 800: 800 Mbps = 100 MB/s

USB:

• USB 1.0: 1,5 Mbps = 0,188 MB/s

• USB 1.1: 12 Mbps = 1,5 MB/s

• USB 2.0: 480 Mbps = 60 MB/s

Page 9: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Velocidade

Figura 5 – USB Vs Firewire

Page 10: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Topologia• Até 63 dispositivos na mesma porta

Figura 6 – Exemplo de conexão dos periféricos

Page 11: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Nós e endereçamento

• 1 Firewire – 1024 barramentos

• 1 barramento – 64 nós

• 1 nó – 256 TB

• Endereçamento 64 bits

Page 12: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Nós e endereçamento

Figura 7 – Hierarquia de endereçamento

Page 13: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Nós e endereçamento

Figura 8 – Endereçamento

• 10 bits: Número do barramento

• 6 bits: Número do nó

• 48 bits: Endereçamento de memória

Page 14: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transferência de dados

• Modo Assíncrono

• Modo Isócrono

• Frequência de operação: 8 KHz

• Pacotes de diferentes modos podem ser transferidos no mesmo ciclo de clock.

Page 15: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transferência de dados

Figura 9 – Pacotes assíncronos e isócronos no mesmo ciclo.

Page 16: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transferência de dadosModo Assíncrono:

• Read request

• Write request

• Read response

• Write response

• Lock request

• Lock response

• No Data

Page 17: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transferência de dadosModo Isócrono:

• Data block

Page 18: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Camadas do protocolo

• Physical Layer

• Link Layer

• Transaction Layer

• Serial Bus Management Layer

Page 19: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Camadas do protocolo

Figura 10 – Diagrama das camadas do protocolo

Page 20: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Physical Layer

• Sinal elétrico, conector e cabo;

• Responsável por transformar a topologia física em árvore lógica;

• Usa Data Strobe Encoding para gerar o clock;

Page 21: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Physical Layer

• Data Strobe Encoding

Figura 11 – Data Strobe Encoding

Page 22: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Physical Layer

• Reset;

• Tree Identification;

• Self Identification;

Page 23: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Physical Layer – Tree Identification

Figura 12 – Antes da identificação

Figura 13 – Depois da identificação

Page 24: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Physical Layer

Tabela 1 – Alguns controladores de camada física

Page 25: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Link Layer

• Gerenciamento de pacotes;

• Verifica o CRC recebido e calcula e anexa o CRC a ser enviado;

• Transferência isócrona;

• Determina que tipo de transferência está em andamento.

Page 26: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Link Layer – Implementação básica

• Interface com a Physical Layer;

• Geração e verificação de CRC;

• Transmissão e recepção de filas (FIFOs);

• Registradores de interrupção;

• Interface hospedeira (Host interface);

• Pelo menos um canal DMA.

Page 27: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Link Layer – Interface PHY

Tabela 2 – Sinais de interface Link Layer/Physical Layer

Page 28: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Link Layer

Tabela 3 – Controladores de camada de link

Page 29: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transaction Layer

• Usado apenas para transferências assíncronas;

• 5 tipos de transações:

– Simple Quadlet Read;

– Simple Quadlet Write;

– Variable Lenght Read;

– Variable Lenght Write;

– Lock Transactions;

Page 30: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transaction Layer – Pacote

Figura 14 – Formato típico de um pacote assíncrono

Page 31: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transaction Layer – Pacote

Tabela 4 – Tabela com a descrição do pacote

Page 32: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transaction Layer - Transação

1. Nó 1 envia Read Request;

2. Nó 2 responde com Ack;

3. Enquanto o Nó 1 espera o dado, o barramento é usado por outros nós;

4. Nó 2 envia o pacote com os dados;

5. Nó 1 responde com Ack;

Page 33: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transaction Layer - Transação

Figura 15 – Típica transação dividida

Page 34: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Transaction LayerTipos de Transação

Figura 16 – Tipos de transação

Page 35: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Serial Bus Management Layer

• Topologia lógica;

• Mapa de velocidade;

• Gerenciamento de energia;

• Otimiza o tráfego do barramento.

Page 36: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Curiosidades• A Apple nunca pretendeu cobrar para o uso do nome FireWire. Podia ser usado por

qualquer parte, desde que assinasse um acordo de que usaria o nome para um produto que era compatível com a versão original do padrão IEEE 1394-1995. Porém Steve Jobs estava convencido de que a Apple devia pedir US$ 1.00 por porta.

Os lucros resultantes da cobrança de US$ 1.00 por porta de FireWire era significativo, particularmente os valores cobrados à Intel. A Intel tinha apostado muito na tecnologia do padrão IEEE 1394 com o novo padrão melhorado 1394a-2000. Em virtude disto, um grupo dentro da Intel usou este argumento para abandonar o apoio à tecnologia FireWire e trazer à luz do dia o novo e melhorado USB 2.0.

Simultaneamente, a Sony e os outros partidários da tecnologia fizeram ver à Apple que todos eles tinham igualmente patentes e, conseqüentemente, também tinham direito a parte dos royalties cobrados por porta FireWire. Apple teria que pagar aproximadamente US$ 15.00 por porta aos outros criadores de tecnologia FireWire

O resultado final foi a criação da 'Autoridade de Licenciamento 1394', um organismo que cobra um valor de US$ 0.25 por sistema de usuário final (como um carro ou computador) a qualquer empresa que utilize a tecnologia 1394.

Page 37: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Curiosidades• A implementação do FireWire custa um pouco mais do que a do USB. Isso levou o

USB a ser padrão para a maioria dos periféricos que não necessitam de um barramento de alta velocidade.

• a grande diferença entre o FireWire e o USB 2.0 é que este último é baseado no host, o que significa que o dispositivo tem que estar conectado a um computador para realizar a comunicação. O FireWire é peer-to-peer (ponto a ponto), o que significa que duas câmeras FireWire podem se comunicar entre si sem passar por um computador.

Page 38: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Bibliografia

• http://www.infowester.com/firewire.php

• http://www.guiadohardware.net/tutoriais/usb-firewire-dvi/firewire-ieee-1394.html

• http://www.apple.com/br/firewire/

• http://www.gta.ufrj.br/grad/04_2/firewire/tecnologia.html

Page 39: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Bibliografia

• http://www.pcworld.com/article/id,14371-page,1/article.html

• http://sss-mag.com/newiss10.html#firewire

• http://www.linux1394.org/

• http://public.rz.fh-wolfenbuettel.de/~bermbach/research/firewire/files/basics.pdf

Page 40: Pontifícia Universidade Católica - PUCRS Programação de Periféricos Seminário sobre protocolo Firewire – Palestrantes – Natan Hoppe Thiago Ludwig Porto.

Bibliografia

• http://www.gta.ufrj.br/grad/04_2/firewire/firewire_usb.html

• http://pt.wikipedia.org/wiki/FireWire