Dept. de Eng. Ind. de Controle e Automação Informática Industrial Professor Gardel Sistemas Embarcados - Introdução ● Noções Gerais ● Desafios de Projeto ● Reusabilidade de Software ● RTOS (Real-Time Operating Systems) ● Sistemas de Arquivos ● Comunicação Serial ● Gráficos ● Conectividade em Rede ● Suporte IP ● Conclusões Noções Gerais ● Sistemas Embarcados presentes em diversos campos – Aparelhos domésticos – Automóveis – Celulares – Equipamentos industriais – Redes de Sensores Sem Fio ● O que é Embarcado? – Muitos não têm idéia do que seja – Processadores de uso específico limitados em memória,velocidade e operações – Exigem resposta a comandos em Tempo-Real (em geral) Desafios de Projeto (1) ● Múltiplos Processadores: – Câmeras digitais têm tipicamente 2: ● Processamento de Imagem ● Processamentos gerais – Dificuldades de desenvolvimento envolvendo interações entre os processadores ● Limitação de Memória – Mesmo não sendo pequena, não pode ser aumentada sob demanda – Restrita pelo consumo de energia – Uso de Linguagem C de forma eficiente Desafios de Projeto (2) ● Interface de usuário – Boa parte implementada em software – Simulação do código de RTOS em Windows/Linux em PC antes de implementá-lo – Resultados levados para a Interface de Usuário que roda no simulador como se fosse no próprio dispositivo Reuso de software ● Componentes podendo ser adaptados para novas funcionalidades ● Prática comum na indústria de software e hardware isoladamente – Ainda pouco comum no desenvolvimento embarcado ● Reuso de código essencial – Programar de forma mais generalista possível RTOS (1) ● Sistemas Operacionais de Tempo-Real – Tempo-Real Rígido: resposta rápida o suficiente, previsível e determinístico – Suporte técnico qualificado – Ferramentas adequadas – Facilidade de uso ● Dificuldade de programação em contrapartida ● Códigos bem estruturados e comentados para facilidade de desenvolvimentos posteriores – Mecanismos de conectividade em Rede – Suporte a larga faixa de processadores RTOS (2) ● Padronizações – OSEK/VDX: Aplicados em automóveis e similares – µiTRON: Implementado na maioria dos RTOS japoneses, como interface para modelos proprietários inclusive (muitas aplicações) – POSIX: API padrão do UNIX, também trabalha como interface para sistemas proprietários – Sistemas de Arquivos ● Alguns Sistemas Embarcados necessitam de armazenamento persistente – Meios magnéticos – Discos ópticos – Memória flash ● Abordagens padronizadas – Baseadas no FAT, por exemplo – Facilidade de interação com os PCs Comunicação Serial ● Via USB (Universal Serial Bus) – Simples de usar, difícil de entender – Fácil acréscimo de periféricos no PC – Eletrônica extremamente complexa, mas software inteligente – Restrições para maiores flexibilizações ● Uma relação estrita mestre/escravo ● Novo padrão OTG (On The Go) altera estas restrições ● Acrescenta complexidade ao desenvolvimento de software Gráficos ● Ex. LCD de Câmera Digital – GUI (Graphical User Interface) – Dispositivo de Saída do sistema – Configuração de RGB bem simples – Significado dos objetos de interface complicados ● Bibliotecas gráficas Conectividade em Rede ● Alguns dispositivos com Sistemas Embarcados requerem conectividade: – Sensores – Câmeras – Smartphones ● Implementações com Bluetooth, ZigBee, Wi- Fi, Ethernet ● Pilha básica TCP/IP – Dificuldade surge em novas funcionalidades de comunicação Suporte IP (1) ● Conectividade IPv.4 e IPv.6 para aplicações futuras – IPv.6 muito difundido na Ásia e Europa – Implementação de dupla pilha de protocolos ● Servidor Web – Configuração e controle remotos do dispositivo – Alternativa a implementar um protocolo de comunicação específico – Servidores Web Embarcados de até 20K de tamanho Suporte IP (2) ● Gerenciamento de dispositivo: – Protocolo SNMP (versão 3 atual) como possibilidade – HTTP requer SSL (Secure Sockets Layer) como mecanismo de segurança – SNMPv.3 tem segurança intrínseca – Interface bem definida para gerenciar objetos – Formatação dos dados fixa, maior flexibilidade com HTTP Conclusões ● Desenvolvimento de Sistemas Embarcados – Muitos desafios ● Técnicas e ferramentas adequadas ● Estratégias de projeto de Software bem delineadas atendendo às necessidades específicas