Linux Device Drivers Introdução Sistemas Computacionais devem interagir com o ambiente para serem úteis. Seja um terminal, uma interface de rede, um sistema de vídeo e som ou um conjunto sensor/atuador, é necessário software para controlar tais dispositivos. Os sistemas operacionais modernos são responsáveis por oferecer a estrutura necessária para a execução de tais softwares controladores, conhecidos como drivers. O Linux é um kernel monolítico, porém modular, com características POSIX. Desenvolvido de forma aberta, licenciado como GPLv2, ele suporta várias arquiteturas e plataformas. Sua versão 2.6 apresenta mudanças que aumentam sua escalabilidade e o suporte a vários hardwares. Objetivos Conhecer os diferentes modelos de dispositivos e drivers suportados pelo Linux, suas interfaces para criar novos drivers. Discute dispositivos seriais, de blocos, de rede e terminais. Público-Alvo Programadores e projetistas de sistemas computacionais, incluindo sistemas embutidos. Material Didático Livro Texto: Linux Device Drivers, 3a edição, em inglês Carga Horária 40 horas Pré-Requisitos Programação ANSI C avançada; utilização de toolchain Make + GCC + Binutils; utilização de shell e editor de textos; arquiteturas de computadores (linguagem de máquina, interrupções, barramentos); sistemas POSIX (API de biblioteca C POSIX: open, read, write, etc). Ementa Tópicos do Livro Texto 1. Introdução 2. Módulos do Linux 3. Dispositivos de Caractere 4. Depuração 5. Concorrência 6. Operações Avançadas 7. Temporização 8. Alocação de Memória 9. Comunicação com Hardware 10. Interrupções 11. Tipos de Dados 14. Modelo de Dispositivos Linux 15. Mapeamento de Memória e DMA 16. Dispositivos de Bloco 17. Dispositivos de Rede 18. Dispositivos Terminais