drivers para mac os x pedro alós bianchi & tomás grimm programação de periféricos - facin...

19
Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto Alegre

Upload: internet

Post on 17-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Drivers para Mac OS X

Pedro Alós Bianchi & Tomás GrimmProgramação de Periféricos - FACIN

Pontifícia Universidade Católica do Rio Grande do Sul - Porto Alegre

Page 2: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Definição•Drivers são arquivos carregados no

kernel de um sistema para que os dispositivos ligados ao computador consigam fazer a comunicação dispositivo <=> computador com a maior eficiência possível, uma vez que os drivers são proprietários na maior parte dos casos.

2

Page 3: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Arquitetura do Mac OS X

3

Page 4: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Núcleo MAC OS X

•Darwin é o núcleo do sistema operacional Mac OS X da Apple, e roda em um kernel Open Source chamado XNU. Trata-se de um kernel híbrido que integra código do kernel Mach e também do FreeBSD.

4

Page 5: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Processos do kernel•São os processos criados e

administrados em modo root, os quais fazem parte do gerenciamento dos recursos da máquina.

•Exemplos: update, securityd, notifyd, hidd, kernel_task, coreaudiod, configd,

5

Page 6: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Processos de usuário

•Criados pelos usuários ou pela aplicações abertas.

•Fazem parte deste grupo todos os aplicativos disponíveis para os usuários e também todos os processos criados por eles.

6

Page 7: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

I/O kit

•É um framework open-source do kernel que ajuda no desenvolvimento de device drivers para o MAC OS X.

7

Page 8: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Recursos disponibilizados no I/O Kit• Acessibilidade

• Airport / 802.11

• ATA

• Audio

• Bluetooth

• Ethernet

• Fibra Óptica

• FireWire

• Mac OS X Server

• Segurança

• Redes

• Open Firmware

• PCI e PC card

• Desempenho

• Impressoras

• QuickTime

• Scanners

• SCSI

• Serial

• Armazenamento

• USB

• Bonjour

• Gráficos e Imagens

• Hardware Apple

8

Page 9: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Estrutura I/O kit

9

Page 10: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Kernel Extension•O KEXT funciona como o

carregador e linkador do kernel. Quando um dispositivo é ligado, o I/O Kit procura o driver certo pra ele e o KEXT carrega pro kernel que carrega todas as bibliotecas que o driver (ou a extensão) precisam.

10

Page 11: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Kernel Extension•Kextload – Carrega uma kernel

extension (driver).

•Kextunload – Se possível, descarrega uma kernel extension.

•Kextstat – informa as características dos drivers ou outras kernel extensions que estão carregados.

11

Page 12: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Drivers e Nubs•A estrutura chamada NUB funciona

como um host do barramento, seja ele PCI, USB, SCSI, ou qualquer outro, e ele faz a intermediação do hardware com o driver do dispositivo.

12

Page 13: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Drivers e Nubs

13

Page 14: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Drivers e Nubs• IONetworkStack (interface managing

object) - Connects I/O Kit objects to the BSD networking facilities.

• IOEthernetInterface (nub) - Manages device-independent data transmission and reception.

• Controller Driver (driver) - Operates the Ethernet controller through the IOPCIDevice object. This object inherits from a networking family class called IOEthernetController.

14

Page 15: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Drivers e Nubs•IOPCIDevice (nub) - Match point for

the controller; provides basic PCI bus interaction to the controller.

•IOPCIBridge (driver) - Manages the PCI bus. (Other objects provide services to the IOPCIBridge; their specific identities depend on the hardware configuration.)

15

Page 16: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Drivers e Nubs (Exemplo)

16

Page 17: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Drivers e Nubs (Exemplo)• 1. The PCI bus controller driver, a

member of the PCI family, discovers a PCI device and announces its presence by creating a nub (IOPCIDevice).

• 2. The nub identifies (matches) an appropriate device driver—in this case, a SCSI controller driver—and requests that it be loaded. Loading the SCSI controller driver causes the SCSI Parallel family, and all families that it depends on, to be loaded as well. The SCSI controller driver is given a reference to the IOPCIDevice nub.

17

Page 18: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Drivers e Nubs (Exemplo)• 3. The SCSI controller driver, which is a client

of the PCI family and a provider of SCSI Parallel family services, scans the SCSI bus for devices that might be clients of these services. Upon finding such a device (a disk), the driver announces the device’s presence by creating a nub (IOSCSIDevice).

• 4. The nub, by going through the matching procedure, finds a device driver (a disk driver) that is appropriate for the device and requests that this driver be loaded. Loading the disk driver causes the Storage family, and all families that it depends on, to be loaded as well. The disk driver is now a client of the SCSI Parallel family and a member of the Storage family. The disk driver is given a reference to the IOSCSIDevice nub.

18

Page 19: Drivers para Mac OS X Pedro Alós Bianchi & Tomás Grimm Programação de Periféricos - FACIN Pontifícia Universidade Católica do Rio Grande do Sul - Porto

Referências

• Website da Apple Developers Connection:

http://developer.apple.com/referencelibrary/HardwareDrivers/

http://developer.apple.com/documentation/DeviceDrivers

• Biblioteca para desenvolvimento I/O kit

19