ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA Depurando microcontroladores usando um emulador de ROM. Enciclopédia de rádio eletrônica e engenharia elétrica Enciclopédia de eletrônica de rádio e engenharia elétrica / Microcontroladores A complexidade de desenvolver e depurar o programa de trabalho de um dispositivo eletrônico contendo um microprocessador geralmente determina o custo de seu desenvolvimento como um todo. Em microcontroladores (MC), que possuem memória integrada e alguns dispositivos periféricos, isso é especialmente pronunciado. Uma das ferramentas que facilitam muito a depuração é o emulador de ROM descrito em [1]. O artigo proposto descreve a tecnologia de trabalhar com ele. Os recursos de depuração não estão limitados aos métodos descritos. Esse processo, assim como o design em geral, é até certo ponto uma arte: para o mesmo instrumento, cada um cria "sua própria música". Seremos gratos aos leitores que compartilharem suas ferramentas e métodos originais para depurar programas MK. A complexidade e laboriosidade do processo de depuração do software MC é determinada pelos seguintes fatores [2]:
O equipamento de teste tradicional (como um osciloscópio) só pode ser usado de forma limitada para depurar o MCU. O método de depuração mais simples (e ao mesmo tempo o mais ineficiente) é o “método de tentativa e erro”: carregar o programa em uma memória somente leitura reprogramável (EPROM), tentar executá-lo, detectar e corrigir erros no programa e hardware, apagar a EPROM, recarregar o programa, etc. A instalação e remoção repetidas do microcircuito reduzem a confiabilidade dos contatos elétricos no soquete EPROM. A possibilidade de obter informações de depuração sobre o sistema está praticamente ausente. Atualmente, o MK é mais frequentemente depurado por ferramentas cruzadas baseadas em um computador pessoal. Isso permite uma distração mínima dos recursos do MC. O dispositivo a ser depurado, conforme a figura, é conectado ao computador por meio de alguma ferramenta, como um emulador de ROM. Tal complexo permite que você baixe e edite o programa, insira módulos de teste nele, obtenha certas informações sobre o sistema e muito mais, que discutiremos a seguir. Embora os emuladores de ROM não sejam a única e nem a ferramenta de depuração mais poderosa, eles ainda são populares. Sua "longevidade" é explicada pela independência do tipo de MC (é necessária apenas a capacidade de trabalhar com memória de programa externa), operação em tempo real, preço baixo e acessibilidade a uma ampla gama de desenvolvedores de equipamentos e radioamadores. Consideraremos a tecnologia de depuração de um programa usando um emulador de ROM usando o exemplo da família de MCs MCS-51 (8031, 8051, 80C31, 80C51. KR1816BE31, KR1816BE51, KR1830BE31, KR1830BE51, etc.). Iniciando a depuração, é necessário verificar a operacionalidade do hardware do sistema e do próprio MC. Para fazer isso, você pode usar os testes de "contagem livre" [3]. que consiste na enumeração de todas as combinações de código possíveis nas linhas das portas MK. Durante o teste, as linhas da porta serão definidas para o estado de saída, portanto, antes de tudo, certifique-se, de acordo com o dispositivo que está sendo depurado, que elas não sejam carregadas nas saídas de outros elementos. Desconecte temporariamente essas cargas, se houver. Carregue o emulador de ROM com códigos de comando No Operation (NOP) em todo o espaço de endereço dos programas MCU. Para MCS-51, este é o código 00H. Ao executar tal "programa", o MK percorre sequencialmente todos os endereços da memória do programa. Monitore os sinais de ALE, PME e portas P0, P2 com um osciloscópio. As formas de onda nas linhas de porta devem corresponder aos diagramas de temporização do contador binário, levando em consideração a multiplexação em P0 do byte baixo do endereço e dados. Em seguida, verifique as portas P1 e P1 carregando o programa de teste mostrado na Tabela 00 no emulador de ROM. 0. Emite uma sequência de códigos de XNUMXH a XNUMXFFH nas linhas das portas especificadas, simulando um contador binário de oito bits. Se os oscilogramas corresponderem aos requeridos, restaure as cargas desconectadas das portas e prossiga com a depuração do programa de trabalho do MC. Lembre-se de que você está depurando o software e o hardware do sistema ao mesmo tempo e não se esqueça de monitorar periodicamente os sinais nos pontos de teste com o osciloscópio. A inconsistência do tipo de sinais com suas ideias sobre eles é motivo para reflexão séria e verificações adicionais. Para facilitar o desenvolvimento e a depuração, deve-se aderir ao princípio modular da programação, ou seja, dividir o programa MK em partes de acordo com uma característica funcional. Isso permitirá que você mova facilmente módulos individuais e, se necessário, aplique-os em outros projetos. O módulo para o qual o controle é transferido depois que a energia é ligada ou o MK é reiniciado é chamado de principal ou principal. A transferência do controle para o ponto de entrada do programa deve ser um comando de salto, não uma chamada de sub-rotina, para não poluir a pilha com o endereço de retorno. Para evitar resultados inesperados do programa, lembre-se de atribuir um valor inicial a cada uma das variáveis antes de usá-la pela primeira vez. Em alguns casos, pode ser necessário inicializar equipamentos periféricos. O bloco de inicialização é colocado no início do módulo do programa principal. Uma visão aproximada do módulo do programa principal no início da depuração é mostrada na Tabela. 2. Ele contém apenas o ponto de entrada para o programa e o manipulador de saída. Embora tal saída seja raramente usada em sistemas de microcontroladores, ela deve ser fornecida para o correto encerramento de situações de emergência. No exemplo em consideração, após a conclusão do trabalho, o programa "loops". Apenas reiniciar o sistema com um sinal de reinicialização de hardware o tirará desse estado. Durante a depuração, outros módulos de programa são adicionados ao módulo principal quando estiverem prontos. A ordem de sua conexão e depuração desempenha um papel importante. Você deve começar com os drivers para dispositivos de saída de informação (display, conversor digital-analógico, etc.), colocando suas chamadas no módulo principal. Em seguida, eles depuram os drivers de outros dispositivos periféricos, rotinas de processamento de dados e somente depois verificam o funcionamento conjunto de todos os módulos do programa. Se houver um display alfanumérico, seu driver é depurado primeiro e usado posteriormente para exibir informações de depuração, por exemplo, o conteúdo da memória de dados interna do MK. Se for usado um emulador de ROM que as informações nele contidas possam ser escritas e lidas tanto pelo computador de controle quanto pelo dispositivo que está sendo depurado, o MK pode colocar os dados de depuração na área de memória livre do emulador de ROM, e o computador de controle os lê e os exibe em seu display. Por exemplo, para enviar o conteúdo da RAM de dados interna do MCU, conecte sua saída de sinal de gravação de memória de dados externa (WR) à entrada de sinal de gravação do emulador de ROM e use a sub-rotina mostrada na Tabela 3. 32. Supõe-se que a quantidade de memória de programa do dispositivo que está sendo depurado não exceda 8000 KB, portanto, as informações de depuração colocadas na memória do emulador começam no endereço 0H. O conteúdo dos registradores R1 e R8000 são enviados separadamente, pois são posteriormente utilizados na sub-rotina para organizar o loop. Após a saída das informações de depuração, o programa MK é suspenso, o conteúdo das células de memória do emulador ROM 807H-XNUMXFH é lido pelo computador de controle, exibido e analisado. Da mesma forma, o conteúdo de todos os registros MC acessíveis por meio de programação pode ser exibido. Ao iniciar a depuração de um driver de dispositivo periférico, desabilite temporariamente os sinais de controle gerados pelo MK a partir dele, a fim de evitar possíveis falhas do dispositivo devido a erros no programa. Se o processo for de natureza única, faça um "loop" e programe o sinal de clock do osciloscópio, se necessário. Depure o driver monitorando os sinais gerados pelo osciloscópio. Depois de certificar-se de que os diagramas de tempo dos sinais de controle correspondem aos necessários, conecte o dispositivo periférico e continue a depurar o driver no hardware real. Por fim, remova os elementos de depuração do módulo do programa e verifique seu funcionamento na forma final. O uso de recursos MK compartilhados por diferentes módulos muitas vezes leva ao fato de que o programa depurado para de funcionar quando outra sub-rotina é adicionada, portanto, após depurar o próximo módulo, certifique-se de que todos os drivers e sub-rotinas depurados anteriormente continuem funcionando corretamente. Se o seu programa usar interrupções, não as desabilite, a menos que seja absolutamente necessário. Um módulo depurado não deve ser removido do programa, mesmo que não seja necessário no momento. Quando o MK "congela", o seguinte método de localização de erro é útil: insira pontos de controle no programa que exibem números sequencialmente crescentes. Depois de "pendurar" o display mostrará o número correspondente ao último ponto de controle passado com sucesso. Se vários desses pontos forem capturados em um loop infinito, os números no visor mudarão rapidamente. Para determinar exatamente quais pontos estão no ciclo, você terá que desacelerar artificialmente a mudança de números definindo um atraso de programa ao emitir cada um deles, por exemplo, na forma de um ciclo ocioso. Se o sistema que está sendo depurado não tiver um display embutido, as informações podem ser exibidas no display do computador host através da área de memória livre do emulador de ROM. Depois de depurar todos os drivers de dispositivo, inicie a depuração de outras sub-rotinas. Se algum deles implementar um algoritmo complexo para processar ou converter dados, exibir um ou mais valores intermediários de variáveis geralmente não fornece informações suficientes para análise de erros. Superando dificuldades e gravando informações de depuração da quantidade necessária na área de memória livre de o emulador de ROM ajudará a superar as dificuldades. Tendo alcançado a operação normal de todos os módulos do programa, você pode depurá-los juntos. As dificuldades que surgem neste caso são divididas em dois grupos. A primeira inclui os problemas de compartilhamento de recursos MK comuns: unidade lógica aritmética, memória de dados, portas de entrada-saída. A segunda está relacionada à operação de dispositivos microcontroladores em tempo real. Sistemas de tempo real geralmente são multi-threaded. Diversas tarefas de programa (threads) são executadas em paralelo, interagindo entre si e utilizando recursos comuns. Mas a cada momento, o MC, devido à sua estrutura, resolve apenas um deles, alternando para os outros, levando em consideração a prioridade. Os conflitos entre as tarefas surgem tanto por falta de recursos quanto por falta de tempo para processamento de dados. Portanto, preste atenção especial aos recursos MK usados nos módulos do programa, geralmente controlam a mudança em seu estado exibindo informações de depuração. Tente reduzir o número de variáveis globais, substituindo-as por locais sempre que possível. Monitore o estado da pilha. Estime o tempo de execução de seções críticas do programa, verifique o sistema com vários valores de sinais de entrada possíveis na prática. Usando o emulador de ROM, você também pode depurar um programa projetado para funcionar na memória interna do MK, se você colocá-lo temporariamente na memória externa do programa. Como neste caso as portas P0 e P2 serão ocupadas pela manutenção da memória externa, se as linhas de I / O livres restantes do MK não forem suficientes, P0 e P2 serão substituídas por portas de I / O endereçadas como células externas de memória de dados. Eles são conectados de acordo com esquemas padrão, usando registradores de gatilho para aumentar o número de linhas de saída e o número de linhas de entrada - elementos com três estados de saída. Após depurar o sistema usando o emulador, remova os elementos de depuração dele, grave o programa na ROM (ou na memória interna do programa do MK) e verifique o funcionamento do dispositivo em sua forma final. Literatura
Autores: G.Vydolob, V.Samoylov, Moscou (Zelenogrado) Veja outros artigos seção Microcontroladores. Leia e escreva útil comentários sobre este artigo. Últimas notícias de ciência e tecnologia, nova eletrônica: Máquina para desbastar flores em jardins
02.05.2024 Microscópio infravermelho avançado
02.05.2024 Armadilha de ar para insetos
01.05.2024
Outras notícias interessantes: ▪ Rapid Cold Brew Coffee Maker para bebidas frias ▪ O vício em internet está escondido nos genes ▪ Mudanças climáticas tornarão as viagens aéreas menos confortáveis Feed de notícias de ciência e tecnologia, nova eletrônica
Materiais interessantes da Biblioteca Técnica Gratuita: ▪ seção do site Carro. Seleção de artigos ▪ artigo Todo esse jazz. expressão popular ▪ artigo Por que uma das proteínas do olho humano tem o nome de Pikachu? Resposta detalhada ▪ artigo Ferro de solda elétrico compacto. Enciclopédia de rádio eletrônica e engenharia elétrica ▪ artigo Moeda sob o chapéu. Segredo do Foco
Deixe seu comentário neste artigo: Todos os idiomas desta página Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site www.diagrama.com.ua |