1.24k likes | 1.41k Views
Introdução ao desenvolvimento de software embarcado. Alexandra Aguiar , Sérgio Johann, Felipe Magalhães , Fabiano Hessel. Programação. Sala Ponta Negra, Bloco C 19/07 – Terça-feira 17h as 19h 20/07 – Quarta-feira 11h as 13h 17h as 19h. Apresentação.
E N D
Introdução ao desenvolvimento de software embarcado Alexandra Aguiar, Sérgio Johann, Felipe Magalhães, FabianoHessel
Programação • Sala Ponta Negra, Bloco C • 19/07 – Terça-feira • 17h as 19h • 20/07 – Quarta-feira • 11h as 13h • 17h as 19h Introdução ao desenvolvimento de software embarcado
Apresentação • Faculdade de Informática (FACIN) – PUCRS • CC (Ciência da Computação) – 498 alunos • EC (Engenharia de Computação) – 328 alunos (compartilhada com FENG) • SI (Sistemas de Informação) – 551 alunos • PPGCC (Programa de PósGraduaçãoemCiência da Computação) – 82 MSc; 44 PhD • Linha de pesquisa • SESD – SistemasEmbarcados e SistemasDigitais • Grupos • GSE – Grupo de SistemasEmbarcados • Gaph – Grupo de ApoioaoProjeto de Hardware • Equipe • 7 – professores • 24 – alunosmestrado • 11 – alunosdoutorado • 32 – alunos de graduação Introdução ao desenvolvimento de software embarcado
Projetos industriais GSE / GAPH • Telecom • Parks • Digistar • Datacom • Novus • Automação industrial • Novus • Innalogics • INCT-Sec • RFID chip • Innalogics • Ceitec • Hp • Tsystems • Aplicações espaciais • AEL • INPE • Apoiogovernamental • Capes • CNPq • Fapergs
Cooperação Acadêmica • Cooperação Nacional • UFRGS • UNICAMP • UFSM • UFSC • Cooperação Internacional • França • TIMA (Grenoble) • CEA – LETI (Grenoble) • LIRMM (Montpellier) • Holanda • Philips Research Labs (EindHoven)
GSE – Equipe Hellfire • Dr. FabianoHessel– (Supervisor) • fabiano.hessel@pucrs.br • Alexandra Aguiar (Doutorado) • alexandra.aguiar@pucrs.br • Felipe Magalhães (Mestrado) • felipe.magalhaes@acad.pucrs.br • Oliver BellaverLonghi (Graduação) • oliver.longhi@acad.pucrs.br • SérgioJohann Filho (Doutorado) • sergio.johann@acad.pucrs.br Introdução ao desenvolvimento de software embarcado
Sumário – Curso teórico-prático • Teoria (aprox. 3 horas) • Sistemas Embarcados • Sistemas de Tempo Real • Prática (aprox. 3 horas) • Hellfire framework Introdução ao desenvolvimento de software embarcado
Contextualização Introdução ao desenvolvimento de software embarcado
Introdução • Sistemas Embarcados Introdução ao desenvolvimento de software embarcado
Introdução • Restrições • Temporais • De área • De consumo de energia • De custo • ... • Time-to-market Introdução ao desenvolvimento de software embarcado
Introdução • Plataformas • SoC • MPSoC • Desafios de sistemas de propósito geral presentes em sistemas embarcados • Software em sistemas embarcados Introdução ao desenvolvimento de software embarcado
Introdução • Desenvolvimento de Firmware • Automação de processos • Área de Robótica • Aero-espacial • Automobilística Introdução ao desenvolvimento de software embarcado
Conceitos básicos e de hardware Introdução ao desenvolvimento de software embarcado
Sistemas embarcados • Sistema dedicado a uma ou mais tarefa(s) específica(s) • Possui diversas restrições em relação ao seu desenvolvimento • Não pode ser reprogramado em tempo de execução • Normalmente alimentados por baterias • Leva em consideração as características da aplicação em seu projeto • Alta confiabilidade Introdução ao desenvolvimento de software embarcado
Sistemas embarcados – Restrições • Energia • ''Alimentado por baterias?'' • ''Como reduzir consumo?'' • Capacidade • ''Que tipo de CPU será usada?'' • ''Qual o tipo adequado?'' • ''Hardware, Software ou Hardware e Software?'' • Memória • ''Quanto de memória há disponível?'' • Tempo de Desenvolvimento • ''Quanto tempo para lançar o produto?'' • Tempo Restrito de Resposta (Tempo Real) • ''Qual a responsividade esperada?'' Introdução ao desenvolvimento de software embarcado
Sistemas embarcados • Integração de diversos componentes em uma única pastilha de silício • Uma unidade de processamento, uma unidade de memória e uma unidade de E/S • Primeiro produto em 1974 Introdução ao desenvolvimento de software embarcado
Comm.interc. SW HW SW abstract SW tasks SW tasks SW tasks cluster SW adaptation OS OS MPU core MPU MPU HW adaptation Comm. int. Comm. int. on-chipcommunicationNetwork IPs HW adaptation SW HW Platform Around CPU busSW call OS routines to send Framei to DCT IP (bus priority) SW Tasks abstract OS/drivers cluster HW adaptation IPs Sistemas embarcados • Abstrações • Aglomerações Register-transfer level modeldata[1011011] (critical path latency) RTL Gate level model1/0/X/U (D ns) abstract CPU abstract Transistor model(t=RC) cluster cluster abstract 1970’s 1980’s 1990’s 2000’s 2010+ Adapted from F. Schirrmeister (Cadence Design Systems Inc.) Introdução ao desenvolvimento de software embarcado
Sistemas embarcados Introdução ao desenvolvimento de software embarcado
Sistemas de tempo real • Sistemas computacionais de tempo real: • Submetidos a requisitos de natureza temporal • Resultados devem estar corretos lógica e temporalmente • Requisitos definidos pelo ambiente físico • Aspectos temporais • NÃO estão limitados a uma questão de maior ou menor desempenho • Estão diretamente associados com a funcionalidade • Sistemas em geral: • “Fazer o trabalho usando o tempo necessário” • Sistemas de tempo real: • “Fazer o trabalho usando o tempo disponível” Introdução ao desenvolvimento de software embarcado
Sistemas de tempo real • Conceitos EQUIVOCADOS • Tempo real significa execução rápida • Computadores mais rápidos vão resolver todos os problemas • Sistemas de tempo real são pequenos, escritos em assembly • Sistemas de tempo real são formados apenas por • Tratadores de interrupção, e; • Drivers de dispositivos • Sistemas de tempo real operam em ambientes estáticos Introdução ao desenvolvimento de software embarcado
Sistemas de tempo real • Soft real-time systems • Desempenho é degradado • Ex: sistemas multimídia • Firm real-time systems • não cumprimento de restrições temporais pode ser tolerado. • Ex: engarrafamento de refrigerantes. • Hard real-time systems • Consequências para vidas humanas e/ou meio ambiente • Ex: sistemas de segurança crítica Introdução ao desenvolvimento de software embarcado
Sistemas de tempo real Introdução ao desenvolvimento de software embarcado
Arquiteturas Embarcadas • System-on-Chip – SoC Introdução ao desenvolvimento de software embarcado
Arquiteturas Embarcadas • Multiprocessor System-on-Chip Introdução ao desenvolvimento de software embarcado
Arquiteturas Embarcadas • Comunicação – Barramento • Topologias • Simples, hierárquico... Introdução ao desenvolvimento de software embarcado
Arquiteturas Embarcadas • Comunicação – Network-on-Chip – NoC • Tendência de comunicação • Utiliza roteadores para gerenciar o tráfego • Conexão ponto a ponto • Comunicação paralela • Maior área e complexidade para implementação Introdução ao desenvolvimento de software embarcado
Arquiteturas Embarcadas • Comunicação – Network-on-Chip – NoC • Topologias • Mesh 2D, Anel, Direta Introdução ao desenvolvimento de software embarcado
Arquiteturas Embarcadas • Virtualizadas • Hypervisor Tipo 1 Hypervisor Tipo 2 Introdução ao desenvolvimento de software embarcado
Arquiteturas Embarcadas Ring de-privilegingParavirtualização Introdução ao desenvolvimento de software embarcado
Software Embarcado Introdução ao desenvolvimento de software embarcado
Software embarcado • Crescente utilização • Diversas camadas • Aplicação e Sistema Operacional Introdução ao desenvolvimento de software embarcado
Software Embarcado • Sistemas Operacionais Embarcados • Lidam com restrições de memória e armazenamento • Geralmente não possuem interface para usuário • Estrutura simplificada em relação ao SO de propósito geral • Certos módulos podem não estar presentes • Maior diversidade de processadores Introdução ao desenvolvimento de software embarcado
RTOS Embarcados • Real-time Operating System – Embarcados • Atender requisitos dos Sistemas de Tempo Real • Conceitos básicos • Tarefa • Periódicas x aperiódicas • Esporádica • Preemptiva x não preemptivas • Estática x dinâmica Introdução ao desenvolvimento de software embarcado
RTOS Embarcados • Tempo de computação ou execução (computation time) • é o tempo utilizado por uma tarefa para a execução completa de suas atribuições. • Casos especiais de tempo de execução incluem: • BCET (Best Case Execution Time) - melhor (menor) tempo de execução possível de uma determinada tarefa; • ACET (Average Case Execution Time) - tempo médio de execuçãode uma determinada tarefa, e; • WCET (Worst Case Execution Time) - pior (maior) tempo de execução possível de uma determinada tarefa. Introdução ao desenvolvimento de software embarcado
RTOS Embarcados • tempo limite de execução (deadline) • é o tempo máximo permitido para que uma tarefa seja executada; • tempo de início (start time) • é o instante de início do processamento da tarefa em ativação; • tempo de término (completion time) • é o instante de tempo em que se completa a execução da tarefa; • tempo de chegada (arrival time) • é o instante em que o escalonador toma conhecimento de uma ativação da tarefa, e; • tempo de liberação (release time) • corresponde ao instante de inclusão da tarefa na fila de tarefas prontas a ser executadas. Introdução ao desenvolvimento de software embarcado
RTOS Embarcados • Controle de aplicações com restrições de tempo real • Sub-sistema semelhante a Sistemas Operacionais de Propósito Geral • Inclusão de uma unidade escalonadora de tempo real • Algoritmos de escalonamento de tempo real • Earliest Deadline First - EDF • Rate Monotonic – RM Introdução ao desenvolvimento de software embarcado
RTOS Embarcados • Estados de uma tarefa Introdução ao desenvolvimento de software embarcado
RTOS Embarcados • Estados de uma tarefa Introdução ao desenvolvimento de software embarcado
RTOS Embarcados • Modelo de tarefa • Conjunto de tarefas • Fator de utilização do processador • Fator de carga do processador • Idle time Introdução ao desenvolvimento de software embarcado
RTOS Embarcados - Escalonamento • On-line versus off-line • Preemptivoversus não preemptivo • Melhor esforço (besteffort) versus intolerâncias a falhas de tempo (timing faultintolerance) • Centralizado versus distribuído Introdução ao desenvolvimento de software embarcado
RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) • Desenvolvido por Liu & Layland. • Produz escalas em tempo de execução através de escalonadores preemptivos dirigidos a prioridades. • Online: Escala é produzida em tempo de execução • É um esquema de prioridade fixa, ou seja, tarefas sempre possuem a mesma prioridade. • Estático: prioridades não variam em tempo de execução
RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) • O algoritmo RM trabalha sobre um modelo de tarefas bastante simples, que obedece às seguintes premissas: • As tarefas são periódicas e independentes. • O “deadline” de cada tarefa coincide com o seu período (Di = Pi) • O tempo de computação (Ci) de cada tarefa é conhecido e constante (Worst Case Computation Time) • O tempo de chaveamento entre tarefas é assumido nulo.
RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) • Idéia: Dar maior prioridade às tarefas de menor período.
RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) Até o tempo 40: 11 trocas de contexto 3 preempções
RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) • A análise de escalonabilidade pode ser feita através de um teste que define uma condição suficiente.
RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) • Aplicando a fórmula no exemplo utilizado, temos:
RTOS Embarcado – Taxa Motônica (Rate Monotonic – RM) • Muito utilizado devido a sua simplicidade de implementação. • É um algoritmo ótimo para a classe de problemas que se propõe • Tarefas periódicas. • P = D. • Prioridade Fixa.
RTOS Embarcado – Earliest Deadline First (EDF) • Desenvolvido por Liu & Leiland • Produz escalas em tempo de execução através de escalonadores preemptivos dirigidos a prioridades. • É um esquema de prioridade dinâmica. • On-line e Dinâmico.
RTOS Embarcado – Earliest Deadline First (EDF) • O algoritmo EDF trabalha sobre um modelo de tarefas bastante simples, que obedece as seguintes premissas: • As tarefas são periódicas e independentes. • O “deadline” de cada tarefa coincide com o seu período (Di = Pi) • O tempo de computação (Ci) de cada tarefa é conhecido e constante (Worst Case Computation Time) • O tempo de chaveamento entre tarefas é assumido nulo.
RTOS Embarcado – Earliest Deadline First (EDF) • Idéia: Atribuição dinâmica de prioridades de acordo com os deadlines de cada tarefa.