A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Engenharia de Sistemas Embarcados 2006.2 Aula 4: O Ambiente de Desenvolvimento.

Apresentações semelhantes


Apresentação em tema: "Engenharia de Sistemas Embarcados 2006.2 Aula 4: O Ambiente de Desenvolvimento."— Transcrição da apresentação:

1 Engenharia de Sistemas Embarcados 2006.2 Aula 4: O Ambiente de Desenvolvimento

2 2006.2Engenharia de Sistemas Embarcados2 O ambiente de Execução Como o sistema utiliza a memória –Como o processador gerencia a pilha O que acontece na inicialização do sistema Como interrupções e exceções são tratadas

3 2006.2Engenharia de Sistemas Embarcados3 Organização de Memória Espaço Sistema Espaço Código Espaço Dados (ROM) Espaço E/S Espaço Dados (RAM) HeapPilha Mapa de memória do processador 68k (Motorola) 0x00000000 0x00000400 0xFFFFFFFF Espaço Sistema Espaço Código Espaço Dados (ROM) Pode ser implementado como ROM Espaço Dados (RAM) HeapPilha Pode ser implementado com RAM

4 2006.2Engenharia de Sistemas Embarcados4 Organização de Memória Espaço de sistema –Tabela de vetores de exceção –Vetores de exceção são endereços “hardwired” –Identificam código a ser executado após ocorrência de interrupção ou exceção Espaço de código –Espaço reservado para as instruções do processador Espaço de dados de ROM –Valores constantes –Mensagens de erro –Literais strings

5 2006.2Engenharia de Sistemas Embarcados5 Organização de Memória A pilha –Mantém histórico dos contextos de execução atual e suspensos –Contém variáveis locais e ou variáveis automáticas –Endereços de retorno de todas as funções e interrupções Variável automática Que valor será impresso pelo programa abaixo? Espaço Dados (RAM) HeapPilha 0xFFFFFFFF

6 2006.2Engenharia de Sistemas Embarcados6 Organização de Memória Área livre –Variáveis alocadas estaticamente para leitura e escrita –Variaveis globais –C statics Espaço Dados (RAM) HeapPilha 0xFFFFFFFF

7 2006.2Engenharia de Sistemas Embarcados7 Organização de Memória O Heap –Espaço de memória que resta após alocação da pilha e da área memória livre –Pode ser uma estrutura de dados complexa –Nem todos os sistemas embarcados utilizam o heap. Por que? –Alocação dinâmica de dados new e malloc() Espaço Dados (RAM) HeapPilha 0xFFFFFFFF

8 2006.2Engenharia de Sistemas Embarcados8 Organização de Memória O que acontece se a pilha crescer demais? Sugestão em “The Art of Embedded Systems”, Jack Ganssle Espaço Dados (RAM) HeapPilha 0xFFFFFFFF 0xff stack Espaço alocado para a pilha = 2x espaço utilizado

9 2006.2Engenharia de Sistemas Embarcados9 Inicialização do Sistema Fase de hardware –Ativada pelo RESET –Força a CPU a começar a execução do programa ou algum código que carrega o programa Fase de software –Software controla a CPU –Inicialização de recursos –Criação do ambiente de execução da aplicação Inicializa ponteiro da pilha Limpa a memória Inicializa E/S Chama main() Seqüência de inicialização do 8051

10 2006.2Engenharia de Sistemas Embarcados10 Organização de Memória Espaço de memória não povoado –Não está associado a qualquer memória específica Espaço Dados (RAM) HeapPilha 0xFFFFFFFF

11 2006.2Engenharia de Sistemas Embarcados11 Organização de Memória Espaço de E/S –Endereços dos dispositivos de E/S Espaço Sistema Espaço Código Espaço Dados (ROM) Espaço E/S Espaço Dados (RAM) HeapPilha 0x00000000 0x00000400 0xFFFFFFFF

12 2006.2Engenharia de Sistemas Embarcados12 Ciclo de Resposta de Interrupção Desvio de controle assíncrono –Como a CPU sabe onde achar o código de interrupt handling –O que é necessário fazer para se salvar e restaurar o contexto do thread principal? –Quando as interrupções devem ser habilitadas?

13 2006.2Engenharia de Sistemas Embarcados13 Ciclo de Resposta de Interrupção do 8051 Seqüência de eventos 1.Programador habilita interrupções ativando bits de flag 2.Circuito interno ou externo causa a geração de um dos sinais de interrupção 3.A CPU termina a execução da instrução atual 1.Coloca o PC na pilha 2.Carrega o PC com o endereço do interrupt handler 4.Rotina de interrupção é executada e deve desativar o bit de flag da interrupção 5.Ao final da rotina de interrupção deve haver uma instrução de RTI. O PC é restaurado a partir da pilha e a execução do programa é retomada

14 2006.2Engenharia de Sistemas Embarcados14 O Registrador de Função Especial Interrupt Enable (IE) BitNomeEndereçoDescrição 7EA0xAFHabilitação global de interrupção 6-0xAEIndefinido 5-0xADIndefinido 4ES0xACHabilita interrupção serial 3ET10xABHabilita interrupção timer 1 2EX10xAAHabilita interrupção externa 1 1ET00xA9Habilita interrupção timer 0 0EX00xA8Habilita interrupção externa 0

15 2006.2Engenharia de Sistemas Embarcados15 O Registrador de Função Especial Interrupt Priority (IP) BitNomeEndereçoDescrição 7--Indefinido 6-- 5-- 4OS0xBCPrioridade interrupção serial 3PT10xBBPrioridade interrupção timer 1 2PX10xBAPrioridade interrupção externa 1 1PT00xB9Prioridade interrupção timer 0 0PX00xB8Prioridade interrupção externa 0

16 2006.2Engenharia de Sistemas Embarcados16 Prioridade de Interrupção por Hardware É utilizada quando interrupções de mesma prioridade acontecem simultaneamente Prioridades por hardware no 8051 1.Interrupção externa 0 2.Overflow do timer 0 3.Interrupção externa 1 4.Overflow do timer 1 5.Porta serial

17 2006.2Engenharia de Sistemas Embarcados17 Handlers de Interrupção Fonte de InterrupçãoEndereço do Handler Interrupção externa 00x0003 Overflow do timer 00x000B Interrupção externa 10x0013 Overflow do timer 10x001B Porta serial0x0023

18 2006.2Engenharia de Sistemas Embarcados18 Chamadas de Função e Frames de Pilha Programa C CompiladorAssemblymain()gcc/sdcc_mainreturngcc/sdccRET* *8051 pode variar para outras arquiteturas

19 2006.2Engenharia de Sistemas Embarcados19 Chamadas de Função e Frame de Pilha Em geral ação do compilador é: 1.Colocar todos os argumentos na pilha 2.Chamar a função 3.Alocar espaço (na pilha) para as variáveis locais 4.Realizar o trabalho da função 5.Desalocar o espaço das variáveis locais 6.Retornar da função 7.Desalocar os espaço utilizado pelos argumentos

20 2006.2Engenharia de Sistemas Embarcados20 Chamadas de Função e Frame de Pilha Endereço de retorno da subrotina são colocados automaticamente na pilha Chamada de subrotina pela instrução call no 8051 Atividade –Fazer um programa exemplo em C compilá-lo com a opção compile only “-c” e trazer a listagem do programa explicando-a

21 2006.2Engenharia de Sistemas Embarcados21 Ambiente de Execução Código de inicialização –É o software que faz a conexão entre entre a fase de inicialização de hardware e a função main() do programa. –Exemplo simples: JMP _main Ações básicas de código de inicialização –Verificação de integridade do sistema –Execução de teste de checksum de ROM –Execução de teste de RAM –Realocação de código da ROM para a RAM –Inicialização de registradores hardware –Set up do resto do ambiente C Importante –O código de inicialização é dependente da placa onde o processador será utilizado. Por que?

22 2006.2Engenharia de Sistemas Embarcados22 Código de Inicialização uVision3

23 2006.2Engenharia de Sistemas Embarcados23 Atividade Grupos de 3 O que faz o código de inicialização do uVision3? Existe código de inicialização no SDCC, o que ele faz?

24 2006.2Engenharia de Sistemas Embarcados24 Biblioteca de Execução (Run Time Library) Composta de funções de suporte que simplificam a geração de código Exemplos –Função de operação ponto flutuante em processador que não possui suporte em hardware –Rotina de salvamento de contexto em arquiteturas com suporte a salvamento rápido de registradores Rotinas da biblioteca padrão C fazem parte da biblioteca de execução São críticas em sistemas embarcados –Eliminar aquelas que não são utilizadas reduz espaço em memória

25 2006.2Engenharia de Sistemas Embarcados25 Otimizações da Biblioteca de Execução Eliminação de funções Substituição por funções mais simples Exemplos –Suporte a ponto flutuante –Suporte a saída formatada: printf() –Suporte a alocação dinâmica: malloc() Substituição de funções –Biblioteca de operações de ponto fixo –Funções de formatação específica printIntAsHex() printStr() etc

26 2006.2Engenharia de Sistemas Embarcados26 Otimizações da Biblioteca de Execução Funções de alocação dinâmica –Muitos sistemas não provêem suporte a alocação dinâmica –Sistemas com RTOS podem prover suporte limitado (funções mais simples) –Quando existe deve ser extremamente robusto –Projetista pode reimplementar funções como malloc() para adaptá-la ao seu sistema

27 2006.2Engenharia de Sistemas Embarcados27 Alocação de Objetos Mover parte do código entre as memórias Alocar parte do código para locais específicos –Código de inicialização –Vetores de interrupção –Código em ROM ou EPROM –Dados em RAM Ligador (Linker) –Ferramenta primária para controlar alocação de código –Assembler  cria módulos relocáveis –Linker  fixa os módulos relocáveis em endereços físicos específicos

28 2006.2Engenharia de Sistemas Embarcados28 Objetos Relocáveis Módulos Relocáveis –Módulos que são alocados para o endereço “zero” sempre –Assembler prepara tabela de símbolos relocáveis –Linker -> realoca os módulos para os endereços finais –PIC -> position independent code é gerado por alguns compiladores ou ligadores

29 2006.2Engenharia de Sistemas Embarcados29 Processo de Desenvolvimento de Software Embarcado Arquivo fonte C/C++ Compilador C/C++ Listagem Fonte Arquivos Include Arquivo Fonte Assembly Assembler Listagem Fonte Módulo Objeto Relocável Criar Biblioteca do usuário (Opcional) Linker Módulo Objeto Absoluto Programador Dispositivo Sistema Desenvolvimento Alvo Gerenciador biblioteca Biblioteca Usuário Arquivo Comandos Linker Módulo Objeto Relocável Mapa Link

30 2006.2Engenharia de Sistemas Embarcados30 Usando o Linker Entrada -> tabela de símbolos + linker command file Linker command file –Dá ao programador controle completo de como os módulos serão ligados –Pode ser alterado pelo usuário Seções do Linker command file –Código de programa –Dados do programa –Misto de dados e programa –Dados em ROM

31 2006.2Engenharia de Sistemas Embarcados31 Espaço de Código de ROM como “Placeholder” Após inicialização do sistema Executa algumas instruções iniciais (boot loader) Move código da ROM e realoca-o na RAM RAM mais rápida que a ROM Boot Loader  projetado e “linkado” para a ROM Resto do código  projetado e “linkado” para a RAM, embora armazenado inicialmente na ROM

32 2006.2Engenharia de Sistemas Embarcados32 Compilador C51 Keil


Carregar ppt "Engenharia de Sistemas Embarcados 2006.2 Aula 4: O Ambiente de Desenvolvimento."

Apresentações semelhantes


Anúncios Google