Menu English Ukrainian Russo Início

Biblioteca técnica gratuita para amadores e profissionais Biblioteca técnica gratuita


ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA
Biblioteca gratuita / Esquemas de dispositivos radioeletrônicos e elétricos

Microcontroladores para iniciantes e além. Enciclopédia de rádio eletrônica e engenharia elétrica

Biblioteca técnica gratuita

Enciclopédia de eletrônica de rádio e engenharia elétrica / Microcontroladores

Comentários do artigo Comentários do artigo

PRIMEIRO ENCONTRO

Em primeiro lugar, algumas palavras para aqueles a quem o tema do ciclo, a julgar pelo seu título, parece a priori desinteressante ou "estranho". Talvez você ainda não tenha usado microcontroladores em seus projetos (doravante referidos como MK para abreviar) e pensa que em um futuro previsível poderá passar sem eles. Também é possível que você assuma que construir um sistema microcontrolador para resolver seu problema seria muito complicado e inviável economicamente. Não se apresse: especialmente para você, queremos dar alguns fatos e algumas estatísticas.

Por exemplo, vamos pegar o parente mais próximo do MK - um computador pessoal - e comparar a intensidade de seu uso. De acordo com a empresa de análise Loewenbaum & Co. Inc. (EUA), o número de computadores pessoais lançados no mundo em 1997 atingiu aproximadamente 20 milhões de unidades. Concordo, isso é muito. Agora imagine que esse número gigantesco seja apenas 0,2% da produção mundial de MK. De acordo com a empresa analítica IC Insights Inc. (EUA) o mercado mundial em 1998 absorveu mais de 13,5 bilhões deles!

A conclusão sugere-se. Se ainda hoje é difícil encontrar um campo da atividade humana em que o computador não seja efetivamente utilizado, o que dizer do MK? Por que eles se tornaram tão populares e literalmente indispensáveis? A resposta está na própria estrutura do microcontrolador. Como uma primeira aproximação para a definição deste conceito, podemos assumir que o MC é um computador localizado em um único microcircuito. Daí os seus principais atrativos: pequenas dimensões, consumo, preço; alto desempenho, confiabilidade e capacidade de adaptação para executar uma ampla variedade de tarefas.

O MK difere de um microprocessador porque, além da unidade central de processamento (CPU), contém memória e vários dispositivos de entrada / saída: conversores analógico-digital, canais de informação seriais e paralelos, temporizadores em tempo real, largura de pulso moduladores (PWM), geradores de pulsos programáveis ​​e etc. Em sua estrutura e princípio de funcionamento, o MK, em essência, não difere de um computador pessoal. Portanto, as palavras microcontrolador e microcomputador são sinônimos. No entanto, o primeiro termo (da palavra inglesa controle - gerenciar) é mais comum, porque reflete seu objetivo principal - uso em sistemas de controle automático embutidos em uma variedade de dispositivos: cartões de crédito, câmeras, telefones celulares, aparelhos de som, TVs, videocassetes e filmadoras, máquinas de lavar, carros, fornos de micro-ondas, sistemas de alarme contra roubo, sistemas de ignição de motores a gasolina, acionamentos elétricos de locomotivas, reatores nucleares e muito, muito mais. Os sistemas de controle embarcados tornaram-se um fenômeno tão massivo que um novo ramo da economia se formou, chamado Embedded Systems (embedded systems - inglês).

Atualmente, milhares de variedades de MK são produzidas no mundo. Eles são fornecidos em pacotes com 8 a 356 pinos, operam em temperaturas de -55 a +125oC em frequências de 32 kHz a 200 MHz, são capazes de operar em uma tensão de alimentação de 1,2 V, enquanto consomem uma corrente não superior a alguns microamperes . O preço dos produtos também está diminuindo constantemente. Alguns MCUs de oito bits já custam hoje não mais que 50 centavos, o que é comparável ao custo de um chip de "lógica rígida".

Tudo isso levou ao fato de que hoje é cada vez mais difícil encontrar uma área de atividade humana onde o MC não encontraria aplicação, e o processo de sua distribuição tem um caráter de avalanche.

Esperamos que os fatos acima já o tenham configurado para uma atitude respeitosa em relação ao personagem principal de nossa história. De fato, o MC tornou-se um evento global, invadindo quase todos os tipos de atividade humana.

O que proporcionou um crescimento tão rápido na popularidade desses produtos, que surgiram há pouco mais de 25 anos? Quais são esses dispositivos e quais são suas capacidades e perspectivas?

Se você ainda não utilizou MC ou sistemas baseados neles em suas atividades, então. talvez seja hora de pensar sobre isso? E se você decidir aplicar o MK, qual deve ser a sequência de suas ações? Que dificuldades podem esperar por você, o que pode ajudá-lo ao longo do caminho?

Tentaremos responder a essas perguntas na série de artigos proposta.

LEI DE MOORE E O PRIMEIRO MK

Em 1965, Gordon Moore, um dos futuros fundadores da poderosa Intel Corporation, chamou a atenção para um fato interessante. Tendo traçado o crescimento do desempenho dos chips de memória, ele descobriu um padrão interessante: novos modelos de chips apareciam a cada 18 a 24 meses, e sua capacidade aproximadamente dobrava a cada vez. Se essa tendência continuar, sugeriu G. Moore, o poder dos dispositivos de computação aumentará exponencialmente em um período de tempo relativamente curto.

A previsão de G. Moore foi subsequentemente confirmada de forma brilhante, e o padrão que ele descobriu é observado hoje, e com incrível precisão, sendo a base para inúmeras previsões de crescimento da produtividade. Nos 28 anos que se passaram desde o advento do microprocessador 4004 (1971), o número de transistores em um chip aumentou mais de 12 vezes: de 000 para 2 no chip Sorrettué.

Pois bem, em 1976, o desenvolvimento exponencial da tecnologia de semicondutores levou à criação pela Intel do primeiro MK - 8048. Além da CPU, incluía memória de programa, memória de dados, temporizador de oito bits e 27 linhas de E / S. Hoje, o 8048 já é história, mas o próximo produto, lançado pela Intel em 1980, ainda está vivo e bem. Este é o MK 8051.

ARQUITETURA MK 8051

Este MK pode ser considerado um modelo clássico, à imagem e semelhança do qual muitos outros produtos foram posteriormente criados. Seu diagrama de blocos é mostrado na fig. 1. CPU - o nó principal do MK. Está associado a um conceito tão importante como um sistema de comando.

Microcontroladores para iniciantes e além

O conjunto de instruções é um conjunto único de códigos binários específicos para uma determinada CPU que define uma lista de todas as suas operações possíveis. Cada um desses códigos define uma operação e é chamado de código de operação ou comando. Quanto mais códigos usados ​​no conjunto de instruções, mais operações a CPU pode executar. MK 8051 é de oito bits, então seus opcodes têm 8 bits de tamanho. Teoricamente, pode haver um total de 256 opcodes de oito bits. 8051 usa 255.

Dependendo do número de códigos de operação utilizados, os sistemas de instrução são divididos em dois grupos: CISC e RISC. O termo CISC significa um sistema complexo de comandos e é uma abreviação da definição em inglês de Complex Instruction Set Computer. Da mesma forma, o termo RISC significa um conjunto de instruções reduzido e vem do computador de conjunto de instruções reduzido em inglês. O sistema de comando MK 8051 pode ser atribuído ao tipo C15C.

No entanto, apesar do uso generalizado desses conceitos, deve-se reconhecer que os nomes em si não refletem a principal diferença entre os sistemas de comando CISC e RISC. A ideia principal da arquitetura RISC é uma seleção cuidadosa de tais combinações de códigos de operação que podem ser executadas em um ciclo do gerador de clock. O principal ganho dessa abordagem é uma simplificação acentuada da implementação de hardware da CPU e a capacidade de aumentar significativamente seu desempenho.

Inicialmente, era possível implementar tal abordagem apenas reduzindo significativamente o conjunto de comandos, daí o nome RISC. Por exemplo, o conjunto de instruções do MK da família Microchir PIC inclui apenas 35 instruções e pode ser classificado como RISC. Obviamente, no caso geral, várias instruções da arquitetura RISC devem corresponder a uma instrução da arquitetura CISC. No entanto, geralmente os ganhos de desempenho da arquitetura RISC superam as perdas do conjunto de instruções menos eficiente, resultando em uma maior eficiência do sistema RISC como um todo em comparação com o CISC. Então. o comando mais rápido MK 8051 é executado em 12 ciclos. Mesmo que três instruções do controlador RISC precisem ser executadas para cada instrução, no final, a arquitetura RISC fornecerá um aumento de quatro vezes no desempenho.

Ao longo do caminho, a arquitetura RISC permite resolver uma série de tarefas. De fato, com a simplificação da CPU, o número de transistores necessários para sua implementação diminui, portanto, a área do cristal diminui. Isso resulta em uma redução no custo e no consumo de energia.

Neste ponto, pode-se exclamar: o futuro pertence à arquitetura RISC! No entanto, a linha entre esses dois conceitos está se tornando cada vez mais tênue. Por exemplo. Os MCUs da família AVR da Atmel têm um conjunto de instruções de 120 instruções, que corresponde ao tipo CISC. No entanto, a maioria deles é executada em um ciclo, o que é uma marca registrada da arquitetura RISC. Hoje é geralmente aceito que a principal característica da arquitetura RISC é a execução de instruções em um ciclo do gerador de clock. O número de comandos em si não importa mais.

O gerador de relógio gera pulsos para sincronizar o funcionamento de todos os nós do dispositivo. A frequência de sua repetição pode ser ajustada por um ressonador de quartzo ou um circuito RC conectado às saídas do MK. Em alguns MKs, um modo de operação do gerador de clock é fornecido sem o uso de elementos externos. Nesse caso, a frequência dos pulsos do relógio depende dos parâmetros do cristal, que são determinados durante sua produção.

A ROM é um dispositivo de memória somente leitura projetado para armazenar programas, portanto, essa memória costuma ser chamada de código ou memória de programa. Até recentemente, havia dois tipos principais de ROM - mascarados e programáveis.

As informações são inseridas nas ROMs de máscara durante o processo de fabricação do MC usando modelos tecnológicos - máscaras. Não pode ser alterado após o término do ciclo de produção.

Essas ROMs são usadas apenas nos casos em que a qualidade do programa é inquestionável e há uma grande necessidade de MK com esse programa específico. A vantagem das ROMs de máscara é o menor custo na produção em massa (de vários milhares de peças).

As informações programáveis ​​da ROM são gravadas usando um dispositivo chamado programador. MK com tais ROMs são de dois tipos: uma vez e repetidamente programáveis ​​(reprogramáveis). Os primeiros, como o próprio nome diz, permitem apenas uma programação única, após a qual não é mais possível apagar as informações (MK com memória OTP - do inglês. One Time Programmable). Eles são usados ​​na produção em pequena escala (até 1000 peças). quando o uso da máscara MK não se justificar economicamente.

Os microcircuitos programáveis ​​repetidamente são divididos em MK equipados com ROM com apagamento por irradiação ultravioleta (disponível em pacotes com uma "janela") e MK com memória eletricamente reprogramável. A desvantagem do MC com ROM com apagamento por irradiação ultravioleta é um custo muito alto e um número relativamente pequeno de ciclos de gravação/apagamento (depende da dose total de irradiação do cristal e geralmente não excede 15 ... 20)

Atualmente, uma nova tecnologia para a implementação da ROM está se tornando cada vez mais popular - a memória Flash. Seu principal mérito é que é construído com base no princípio da reprogramação elétrica. ou seja, permite múltiplos apagamentos e registros de informações por meio de programadores. O número mínimo garantido de ciclos de gravação/apagamento geralmente excede vários milhares. Isso aumenta significativamente o ciclo de vida e aumenta a flexibilidade dos sistemas MC. pois permite fazer alterações no programa MC tanto na fase de desenvolvimento do sistema quanto durante sua operação em um dispositivo real.

RAM é uma memória de acesso aleatório usada para armazenar dados, então essa memória também é chamada de memória de dados. O número de ciclos de leitura e gravação na RAM não é limitado, mas quando a tensão de alimentação é desligada, todas as informações são perdidas.

A arquitetura do MK 8051 envolve o uso separado de programa e memória de dados e é chamada de Harvard. Normalmente, essa arquitetura é usada para melhorar o desempenho do sistema, separando os caminhos de acesso à memória de programas e dados, mas no 8051 ela foi usada para obter memória de programas e dados que não exigiam o mesmo tamanho. O antípoda de Harvard - a arquitetura von Neumann - envolve o armazenamento de programas e dados em uma memória compartilhada e é mais típico para microprocessadores projetados para uso em computadores. Um exemplo é a família x86 de microprocessadores.

Os temporizadores TO, T1 são temporizadores/contadores programáveis ​​de dezesseis bits que podem ser programados para executar uma variedade de funções. Eles podem ser usados ​​para formação precisa de intervalos de tempo, contando pulsos nas saídas do MK, formando uma sequência de pulsos, cronometrando o transceptor de um canal de comunicação serial. Os temporizadores/contadores são capazes de gerar solicitações de interrupção, comutando a CPU para atendê-los em eventos e liberando-a da necessidade de pesquisar periodicamente o estado dos temporizadores. Uma vez que a principal aplicação do MK se encontra em sistemas de tempo real, os temporizadores/contadores são o seu elemento indispensável. Em algumas modificações, o número de temporizadores chega a 32.

A porta serial é um canal de troca de informações entre o MK e o mundo exterior. Esses canais de comunicação ocupam um número mínimo de pinos de cristal, fornecendo comunicação em distâncias significativas com custos mínimos de hardware. O 8051 implementa um transceptor serial assíncrono universal (UART) que suporta o protocolo padrão RS-232C, o que torna possível organizar a comunicação entre este MK e um computador pessoal. Além do RS-232C, os protocolos mais populares no mundo dos sistemas embarcados são o RS-485. I2C (barramento bidirecional de dois fios). SPI (interface periférica serial de XNUMX fios). Bitbus (barramento serial de controle), CAN (interface de rede entre controladores), USB (barramento serial universal) e alguns outros. Para praticamente qualquer tipo de canal serial, hoje é possível encontrar um MK que possua uma porta serial correspondente em sua composição.

As portas de E/S paralelas também são uma parte essencial de qualquer MCU. Normalmente eles são usados ​​para se comunicar com o ambiente imediato - sensores e atuadores.

Uma característica importante das portas paralelas MK é a capacidade de serem programadas para realizar diversas funções. Por exemplo, no 8051, os pinos de porta P0 e P2 podem ser usados ​​como registradores de E/S estáticos normais ou como um endereço e barramento de dados para conectar dispositivos externos, como memória de programa adicional, memória de dados, dispositivos de E/S. Isso dá flexibilidade arquitetônica MK. A porta RXNUMX pode ser usada como um registro de E/S estático ou executar funções especiais para a operação de um canal serial, temporizadores, controlador de interrupção, etc. A reprogramação permite que você use todas as saídas do MC no dispositivo projetado com máxima eficiência.

O sistema de interrupção é uma das partes mais importantes do MK. Uma característica dos sistemas de tempo real é que para eles um parâmetro extremamente importante é o tempo de resposta a eventos externos. Vamos explicar com um exemplo simples. Quando você faz um cálculo matemático em um computador, geralmente executa um programa projetado para realizar esses cálculos e, depois de carregado na memória do computador, insere a declaração do problema e aguarda o resultado. O tempo de espera neste caso não é de fundamental importância (dentro do razoável, claro) - a lentidão do computador pode incomodar, mas não afetará o resultado. O sistema de tempo real assume uma velocidade muito específica, calculada na fase de desenvolvimento, de resposta do sistema de controle a eventos externos. Atrasos além dos calculados são simplesmente inaceitáveis ​​​​aqui - eles podem levar a consequências catastróficas.

Problemas de resposta rápida a eventos são resolvidos organizando um sistema de interrupções. Isso implica que, para cada evento, um "pedaço" separado de código é desenvolvido, o que forma a reação do MK a ele. Esse "pedaço" de código é chamado de rotina de solicitação de interrupção (o termo rotina de interrupção costuma ser usado para abreviar) e é colocado na memória do programa em um endereço conhecido. No momento da ocorrência de um determinado evento, um sinal sobre o mesmo é enviado para a entrada do controlador de interrupção. Este último é um dispositivo que estabelece uma correspondência biunívoca entre o sinal de entrada sobre um evento ocorrido e o endereço de memória de programa no qual está localizado o ponto de entrada para a rotina de processamento do pedido de interrupção desse evento. O controlador interrompe a execução da CPU do programa atual e inicia sua transição para a execução da rotina de serviço de interrupção. O tempo decorrido desde o momento em que o evento ocorreu até o início da execução da primeira instrução da rotina de interrupção é chamado de tempo de resposta do MC ao evento. Após a conclusão do processamento, a CPU retorna automaticamente à execução do programa interrompido.

Outra função do controlador de interrupção é priorizar eventos. O conceito de prioridade significa que uma rotina de interrupção em execução só pode ser interrompida por outro evento se tiver uma prioridade mais alta que a atual. Caso contrário, a UCP passará a processar um novo evento após finalizar o processamento do anterior. O controlador de interrupção, que faz parte do MK 8051, possui cinco entradas de eventos: duas de dispositivos externos, duas de temporizadores e uma do canal serial.

Normalmente, quando falam de qualquer MK, sempre mencionam a família a que pertence. Uma família inclui produtos que possuem o mesmo núcleo, que é entendido como um conjunto de conceitos como sistema de instruções, diagrama de seqüência de operação da CPU, organização da memória de programa e memória de dados, sistema de interrupção e conjunto básico de dispositivos periféricos . De fato, na Fig. 1 mostra o núcleo que se tornou a base para a criação de centenas de outras modificações da família 8051.

As diferenças entre seus vários representantes estão principalmente na composição dos dispositivos periféricos e na quantidade de programa ou memória de dados. Uma vez que a gama de tarefas resolvidas pelo MK. extremamente amplo, seus fabricantes estão tentando lançar o máximo de modificações para atender às mais diversas necessidades dos consumidores. Em muitas famílias, o número de modificações se aproxima de cem ou até excede esse valor.

A característica mais importante da família é a compatibilidade de software no nível do código binário de todos os MKs incluídos nela. Isso permite que os desenvolvedores de sistemas substituam uma família de microcontroladores por outras sem perder seus desenvolvimentos de software. Naturalmente, quanto maior o número de variedades incluídas na família, maior a probabilidade de escolher a melhor opção, mais atraente é essa família para o desenvolvedor. A questão da escolha certa de uma família MC para um novo desenvolvimento é estratégica, pois o problema de transferência de software entre produtos de famílias diferentes é extremamente complexo, e mesmo o uso de linguagens de alto nível nem sempre permite resolver isso sem grandes perdas. Voltaremos à questão dos critérios de seleção nos próximos artigos da série.

O desenvolvimento do programa é uma das etapas mais importantes na criação de um dispositivo baseado em MK. Sem ele, ele está "morto", não responde a influências externas e não emite sinais de controle.

Quando a energia é ligada, o MCU imediatamente começa a executar o programa localizado na memória do programa (geralmente ROM) conectado a ele. Sua execução começa a partir de algum endereço fixo, na maioria das vezes zero. Um endereço é simplesmente um número de célula ROM.O processo é o seguinte: o MCU lê um número armazenado na memória de programa e, dependendo de seu valor, chamado de código de máquina, executa determinadas ações no conteúdo dos registradores da ALU. memória, portas, etc. Por exemplo, lendo o número 32H da memória do programa. O MK "entende" que você precisa ler o valor da porta de entrada número 2 e colocá-lo no registrador do acumulador. Freqüentemente, um byte não é suficiente para descrever a ação e, em seguida, o MK lê bytes adicionais da memória.

Depois de executar a ação, o MK lê o valor da próxima célula de memória em ordem, etc. O conjunto de bytes que descreve uma ação executada pelo MK é chamado de comando de máquina (instrução) e o conjunto de tais comandos que o MK “ entende”. - seu sistema de comando ou conjunto de instruções (Instruction Set). MKs de famílias diferentes possuem sistemas de comando diferentes, ou seja, seus códigos de máquina possuem significados diferentes, embora executem ações semelhantes.

Portanto, o programa para MK é uma sequência de números, cujos valores indicam quais ações executar. O resultado do desenvolvimento de um programa é um arquivo de computador contendo esses códigos de máquina. Com a ajuda de um programador ROM, ele é inserido (“costurado”) na memória do programa MK.

Como é a composição dessa sequência de códigos de máquina - um programa para MK? O desenvolvedor realmente precisa se lembrar dos valores dos códigos da máquina e definir manualmente sua sequência? Os primeiros programas para MK foram criados dessa forma. e foi chamado de programação em códigos de máquina. É claro que esta forma de desenvolver programas é muito demorada e ineficiente.

O primeiro passo para facilitar o processo de criação de programas foi um programa de computador - o chamado tradutor da linguagem assembly. A ideia era expressar as ações executadas pelo MK em uma linguagem mais legível por humanos e depois converter essas expressões em códigos de máquina. No exemplo de instrução de máquina acima que lê o valor da porta 2 e o coloca no acumulador, a ação tomada pode ser aproximadamente denotada como MOV A.P2.

Aqui a palavra MOV (do inglês move), chamada de instrução mnemônica, denota a transferência de um valor, e A e P2, chamados de operandos, indicam de onde obter o valor e onde colocá-lo. Essa notação é chamada de linguagem assembly. programa escrito nele. processado por um tradutor que converte as construções da linguagem assembly em códigos de máquina.

A programação em linguagem de montagem é difundida até hoje. Tradutores de linguagem assembly para todas as famílias populares de microcontroladores são gratuitos.

Apesar das vantagens óbvias de programar em assembler sobre programação em código de máquina, em muitos casos o assembler não é eficiente o suficiente para implementar as tarefas do desenvolvedor. O fato é que o MK é capaz de realizar apenas as operações mais simples como operações aritméticas em números inteiros, transferências, comparações, etc. Para tarefas mais complexas, por exemplo, operações em números de ponto flutuante, os desenvolvedores tiveram que escrever rotinas especiais que são inconvenientes para uso. e pesado. O próximo passo no desenvolvimento de programas para MK foi a criação de programas de computador especiais - tradutores de linguagens de programação de alto nível ou compiladores. A linguagem de programação mais utilizada é C.

Com o advento dos tradutores, o desenvolvimento de programas para MK foi drasticamente simplificado. Se, por exemplo, você precisar adicionar dois números no programa, agora basta escrever a = b + c. e o tradutor converte esta expressão na sequência necessária de instruções de máquina dependendo dos tipos de variáveis ​​a, b e c.

A utilização de uma linguagem de alto nível permite ao desenvolvedor abstrair do sistema de comando de um determinado microcontrolador e operar em categorias mais simples e compreensíveis para uma pessoa. O desenvolvedor só precisa conhecer a arquitetura geral do microcontrolador. princípios de operação de dispositivos periféricos embarcados necessários para a resolução da tarefa e habilidades de programação em linguagem C. O conteúdo funcional do programa é implementado usando as ferramentas da linguagem C. que contém um grande número de várias sub-rotinas (funções): aritmética, para trabalhar com cadeias de caracteres e muitas outras.

Considere o processo de criação de um programa para MK na linguagem C. O processo de desenvolvimento exigirá um computador pessoal.

Depois de entender a tarefa, o desenvolvedor escreve o código-fonte de seu programa na linguagem C usando qualquer editor de texto. Em seguida, ele executa o programa tradutor C. que converte o texto de origem em um arquivo de objeto intermediário. O tradutor é controlado por um conjunto de chaves (sua descrição pode ser encontrada em sua documentação) que são especificadas em sua linha de comando. Se o desenvolvedor cometeu erros sintáticos ao escrever o programa, o tradutor exibe uma lista deles na tela com uma indicação para cada número de linha no arquivo de texto de origem. O desenvolvedor deve corrigir todos os bugs. Após a tradução bem-sucedida, os arquivos objeto devem ser processados ​​pelo vinculador (linker), que gera o arquivo de programa em códigos de máquina.

Há um problema ao usar uma linguagem de alto nível. O compilador é responsável por converter construções de linguagem em códigos de máquina, e essa conversão pode ser realizada com vários graus de eficiência. Os critérios de eficiência são o tamanho do código de máquina (quanto menor, é claro, melhor) e a velocidade do código de máquina. A tarefa de gerar código compacto e rápido é muito difícil e a qualidade geral do compilador depende de sua solução. Os compiladores C modernos usam otimização de vários níveis, recursos de arquitetura de um determinado MK, permitem criar programas mistos nos quais algumas das sub-rotinas são escritas no assembler.

O processo descrito parece bastante complicado: o desenvolvedor deve iniciar manualmente vários programas (editor de texto, compilador C, vinculador para lembrar as teclas de controle, procurar erros no programa por números de linha no arquivo. A última etapa até agora para facilitar o trabalho de o desenvolvedor de programas para MK foi o surgimento de ambientes integrados de desenvolvimento (Integrated Development Environment. IDE).Ambiente de desenvolvimento integrado é um programa de computador que une todas as etapas do desenvolvimento do programa.Ele combina um editor de texto para escrever o código-fonte, tradutores do montador e C, um vinculador, um depurador, informações de referência no MK e outras ferramentas necessárias para o desenvolvedor. A configuração de tradutores, vinculador e outros componentes é realizada não especificando opções na linha de comando, mas na forma de caixas de diálogo onde você só precisa marcar as caixas nos lugares certos.

O surgimento de ambientes integrados de desenvolvimento de software aumentou ainda mais a eficiência da criação de programas para MC, permitiu ao desenvolvedor focar na essência do problema a ser resolvido e abstrair-se dos detalhes específicos de sua implementação.

Pacotes integrados de desenvolvimento de software são produzidos por diversas empresas. Pacotes de diferentes fabricantes são semelhantes em função, mas diferem em recursos de serviço, facilidade de uso e qualidade do código de máquina gerado.

As principais características dos kits de desenvolvimento mais populares são mostradas na tabela.

Microcontroladores para iniciantes e além
(clique para ampliar)

DEBUGAÇÃO SIMBÓLICA DE PROGRAMAS PARA MK

Com raras exceções, os programas para MK, devido aos erros que contêm, não começam a funcionar na primeira vez e requerem depuração. Os desenvolvedores lidam com problemas de depuração de maneiras diferentes. Alguns deles acreditam que basta analisar cuidadosamente o texto de origem, ver com um osciloscópio o que está acontecendo nas saídas do MK e todos os erros podem ser corrigidos. Este método é aplicável se o desenvolvedor tiver vasta experiência, conhecer perfeitamente o MK utilizado e possuir um tradutor que sempre gere o código correto (normalmente um assembler), e tempo suficiente.

Outros usam monitores de depuração caseiros em sua prática - conjuntos de sub-rotinas especiais que são carregados no MK junto com o programa principal. O último chama as sub-rotinas do monitor nos pontos de verificação e fornecem informações sobre o estado dos recursos MK. Quase qualquer programa pode ser depurado dessa maneira, mas tem desvantagens que podem ser significativas. Em primeiro lugar, o monitor de depuração deve ser fornecido com uma parte dos recursos do MC para o trabalho: pelo menos uma parte do espaço de endereço do código e um certo número de células da pilha e, no máximo, também uma parte da RAM e periféricos dispositivos do MC. usado pelo monitor para exibir informações. Pode ser difícil alocar recursos para o monitor de depuração se o próprio programa principal estiver carregando ativamente o MK. Por exemplo, o PIC 16С5х (Microchip) MK tem apenas duas células de pilha e é difícil usar chamadas de sub-rotina do monitor de depuração. Em segundo lugar, as chamadas de monitoramento consomem tempo do programa principal e, portanto, não podem ser chamadas de partes críticas do programa. Em terceiro lugar, criar um monitor de depuração, por si só, leva tempo.

A maneira mais eficaz de depurar programas para MK é usar ferramentas de depuração profissionais especializadas, que incluem depuradores de simulador e emuladores de circuito.

Antes de falar sobre as possibilidades oferecidas por tais depuradores, é necessário tocar na escolha do compilador, com a ajuda do qual os textos-fonte dos programas são convertidos em código de máquina. Na grande maioria dos casos, é preferível programar em uma linguagem de alto nível. O uso do montador é necessário se forem impostos requisitos muito rígidos sobre o tamanho e a velocidade do código gerado. Atualmente, esses casos estão se tornando cada vez menos, pois quase sempre você pode pegar um MK "mais rápido" com mais memória. Além disso, os pacotes modernos de ferramentas cruzadas facilitam a escrita de programas mistos, onde alguns dos módulos são escritos em C. e as peças de desempenho mais crítico estão no montador. Os compiladores C também permitem que instruções de montagem sejam inseridas no código-fonte.

Quais são as vantagens de programar em C em comparação com a programação em assembler? Resumidamente, são os seguintes:

  • não há necessidade de se preocupar com operações com números de grande capacidade. O compilador gerará automaticamente o código correto para a operação a+b. se aeb são números de 8, 16, 32 bits, números de ponto flutuante e números pares de tipos diferentes;
  • O compilador vem com uma extensa biblioteca de funções (sub-rotinas) que implementam várias operações matemáticas (funções trigonométricas, exponenciação, etc.). trabalhar com strings de caracteres, entrada/saída formatada, etc.;
  • muitos erros do programador são diagnosticados pelo compilador: por exemplo, ele não permitirá que você passe o número errado de parâmetros ou parâmetros dos tipos errados para uma função, esqueça de colocar uma declaração de retorno, etc.;
  • o código-fonte escrito em C é muito mais fácil de ler, mais compacto, mais fácil de modificar;
  • programas escritos em C. são mais facilmente transferidos para MKs de outras famílias.

Para depurar efetivamente programas escritos em linguagem de alto nível, o desenvolvedor deve ter à sua disposição ferramentas de depuração que forneçam oportunidades adequadas para exibir os dados usados ​​no programa, bem como para rastrear a execução do programa a partir de seu código-fonte . Duas condições são necessárias para que isso seja possível:

  • o compilador deve fornecer informações suficientes sobre a estrutura do programa e os dados que ele usa. Essa informação é chamada de simbólica (depuração);
  • o depurador deve ser capaz de interpretar essas informações. Todos os compiladores e montadores modernos geram informações simbólicas de uma forma ou de outra, mas nenhum formato universal foi desenvolvido ainda, e cada compilador a gera em seu próprio formato. Isso cria dificuldades adicionais para depuradores que devem ser capazes de "entender" vários formatos de caracteres.

Agora vamos considerar como o depurador deve interpretar as informações simbólicas e quais opções devem ser fornecidas ao usuário em relação a isso.

ACOMPANHANDO A EXECUÇÃO DO PROGRAMA DE ACORDO COM O TEXTO FONTE

Em geral, uma linha do texto fonte é convertida pelo compilador em várias instruções de máquina. Mesmo um programa montador quase sempre contém macros que se expandem em várias instruções do processador quando traduzidas. É inconveniente depurar tal programa usando o desmontador de seu código, então os compiladores inserem uma tabela de números de linha nas informações de depuração. Ele contém informações sobre a correspondência de números de linha de texto de origem e nomes de arquivo de texto de origem para endereços absolutos do código do programa. O depurador exibe o código-fonte do programa na tela. seguindo esta tabela, ele pode executar o programa "linha por linha", executando em um único passo todas as instruções de máquina geradas pelo compilador para a linha atual.

A tabela de número de linha também permite que você execute ações contextuais com o texto do programa, por exemplo, execute-o "para o cursor", ou seja, para um local especificado pelo usuário no texto de origem, defina pontos de interrupção em linhas especificadas, etc. Ações contextuais são convenientes porque o desenvolvedor não precisa saber os endereços correspondentes às linhas do texto fonte: o próprio depurador os determinará na tabela. O depurador também deve "conhecer" os endereços de sub-rotinas, funções e rótulos de código e ser capaz de encontrar o texto fonte de uma função por seu nome.

EXIBINDO DADOS USADOS NO PROGRAMA QUE VOCÊ DEBUGOU

Para depuração completa, o desenvolvedor precisa ser capaz de visualizar os dados manipulados pelo programa a qualquer momento. O depurador deve "ser capaz" de exibir quaisquer dados usados ​​pelo programa da maneira mais apropriada.

Como regra, os desenvolvedores usam dados nomeados em programas, ou seja, cada objeto usado no programa recebe um nome. Os objetos podem ser de complexidade variável - desde simples células de memória até estruturas complexas de linguagens de alto nível, como estruturas, arrays, etc.

DADOS EM PROGRAMAS DE MONTAGEM

Os programas de montagem usam principalmente dados simples, ou seja, células de memória. Matrizes também são usadas. Para exibir dados simples corretamente, o depurador precisa "saber":

  • nome do objeto:
  • o endereço do objeto na memória;
  • Espaço de endereço MK no qual o objeto está localizado. Muitos microcontroladores possuem mais de uma área de dados. Por exemplo, a família MCS-51 possui uma memória de dados interna, uma memória de dados externa e um espaço de bits;
  • o número de bits do objeto, ou seja, o número de bytes que ele ocupa. Os microcontroladores de 16 bits, como os membros da família MCS-96, "sabem" operar 8-. 16-. dados de 32 bits. Um ponto importante deve ser observado aqui. Para o desenvolvedor, qual é o tamanho lógico do objeto é importante. Por exemplo, MK de oito bits da família PIC (Microchip) operam apenas bytes. Se for necessário ter no programa, por exemplo, um contador de 16 bits, então cada byte deve ser manipulado separadamente. Mas ao depurar, o programador gostaria de ver não cada byte do contador separadamente, mas os dois bytes ao mesmo tempo, na forma de uma variável de 16 bits. Os montadores cruzados populares não oferecem essa oportunidade. A exceção é o cross-assembler PASM-PIC da Fiton, que permite declarar no programa dados do tamanho de bytes, uma palavra, uma palavra dupla, bem como matrizes de tais objetos. Ao depurar programas escritos com PASM-PIC. todos os objetos são exibidos em uma forma correspondente ao seu tamanho lógico e estrutura;
  • escopo do objeto. Se o programa consistir em vários módulos, o programador tem a oportunidade de localizar o escopo do nome dentro de um módulo. Assim, em diferentes módulos podem existir objetos com os mesmos nomes, mas diferentes outros atributos. O depurador precisa "descobrir" qual objeto está ativo e exibi-lo corretamente. Observe, no entanto, que a prática de usar os mesmos nomes em módulos diferentes geralmente leva a confusão e erros. Se o objeto for declarado global (PUBLIC) e estiver visível em todos os módulos, não haverá dificuldades de interpretação.

Com as informações acima, o depurador deverá, após receber do usuário o nome do objeto, exibir seu valor de acordo com o tipo. Os depuradores mais "avançados" podem exibir adicionalmente o restante dos atributos do objeto.

DADOS EM PROGRAMAS EM IDIOMAS DE ALTO NÍVEL

A exibição de objetos usados ​​em linguagens de alto nível é muito mais difícil devido à variedade de estruturas de objetos, formas como eles são armazenados na memória e escopos. Para exemplos, usaremos a linguagem C, como a mais popular entre os desenvolvedores.

ESTRUTURA DE OBJETOS

Além de variáveis ​​simples de comprimentos diferentes, os programas C também usam variáveis ​​de ponto flutuante, estruturas (struct), uniões ou uniões (união), ponteiros, arrays unidimensionais e multidimensionais. O último pode consistir em objetos simples e complexos (estruturas, uniões, ponteiros).

Usar objetos complexos em programas certamente é conveniente. No entanto, devido à complexidade de sua estrutura, é altamente desejável poder exibi-lo adequadamente no estágio de depuração. Nos depuradores de Fiton, objetos complexos podem ser exibidos tanto na forma compactada (lista de valores dos elementos) quanto na forma expandida, indicando o endereço, valor e tipo de cada elemento do array e/ou membro da estrutura. A implementação de ponteiros em diferentes compiladores é diferente. O fato de o MK normalmente ter vários espaços de endereçamento gera dificuldades adicionais, pois ao trabalhar com um ponteiro, além do endereço, deve-se conhecer o espaço de endereçamento para onde o ponteiro aponta. Em algumas implementações, o identificador do espaço de endereço faz parte do valor do ponteiro; em outras, o compilador "sabe" isso antecipadamente e gera o código apropriado.

Além disso, o componente de endereço em um ponteiro pode ter de 8 a 32 bits de tamanho. Ao exibir valores de ponteiro, o depurador deve "saber" todos os detalhes de sua implementação em cada compilador.

MÉTODOS PARA LOCALIZAÇÃO DE OBJETOS NA MEMÓRIA

Além dos objetos estáticos, cujos endereços não mudam durante a execução do programa, em um programa escrito em linguagem de alto nível, pode haver os chamados objetos automáticos, cuja memória é temporariamente alocada na pilha MK . Os endereços de tais objetos não são absolutos, mas são determinados dinamicamente no estágio de execução do programa. Eles geralmente são medidos a partir do valor atual de alguma variável estática chamada de ponteiro de quadro de pilha (Base Pointer ou BP). Como o valor do BP é gerado dinamicamente pelo programa em tempo de execução, os valores dos objetos automáticos só ficam disponíveis dentro de seu escopo, ou seja, com um valor de BP válido. O depurador, ao exibir os valores dos objetos automáticos, deve "saber" a forma como os endereços são determinados, bem como monitorar a exatidão do valor do BP

Também é possível colocar temporariamente variáveis ​​em registradores MK. Nesse caso, o depurador deve "saber" quais variáveis ​​são colocadas em quais registradores e por quanto tempo. E, finalmente, muitas vezes há uma situação em que o mesmo objeto durante seu tempo de vida muda a maneira como é colocado na memória e mais de uma vez. Isso pode acontecer, por exemplo, quando uma função recebe um ou mais parâmetros em registradores e os coloca na pilha.

CAMPO DE VISIBILIDADE DO OBJETO

Como nos programas assembler, os programas C possuem objetos globais que são acessíveis pelo nome de qualquer módulo e objetos localizados no módulo (esses objetos são declarados estáticos). No entanto, as variáveis ​​automáticas e de registro tornam mais difícil para os depuradores exibir seus valores. O fato é que. em primeiro lugar, o tempo de vida de um objeto automático é limitado por seu escopo e, em segundo lugar, os escopos envolventes podem ter seus próprios objetos automáticos com os mesmos nomes. Vamos ilustrar isso com um exemplo de uma função que possui vários escopos aninhados:

Microcontroladores para iniciantes e além

A variável denominada "a" existe enquanto a função f estiver sendo executada, mas dependendo de qual parte da função está sendo executada, o nome "a" representa diferentes variáveis. Ao rastrear a função f, o depurador deve, dependendo de qual variável estiver ativa, mostrar corretamente seu valor.

Ao criar um programa, o desenvolvedor não se preocupa com os detalhes da implementação dos conceitos que utilizou no programa. Em termos de categorias "compromissadas", ele geralmente não suspeita de como foi difícil para os desenvolvedores de compiladores e depuradores implementá-las. Estes últimos têm que resolver o problema de combinar em um shell ao mesmo tempo uma interface simples e intuitiva, uma riqueza de funcionalidades e um estudo detalhado de tudo relacionado à implementação dos recursos de arquitetura e funcionamento de um determinado MK. Se o depurador não fornecer ao desenvolvedor ferramentas de depuração adequadas à complexidade do problema a ser resolvido, o desenvolvedor inevitavelmente perderá produtividade. Quem de nós não passou horas e dias procurando um erro irritante ou erro de digitação no texto de origem?!

No processo de desenvolvimento e criação de um sistema microprocessado, mais cedo ou mais tarde chega um momento em que ele finalmente se incorpora ao hardware e começa a dar sinais de vida. No entanto, na maioria dos casos, esses sinais acabam sendo imprevisíveis, o sistema começa a viver sua própria vida. Muitos programadores provavelmente concordam que todo novo programa contém bugs. Em parte, é por isso que o novo MK inicialmente se comporta como uma caixa "preta".

Para facilitar o processo de depuração de sistemas, toda uma classe de ferramentas foi desenvolvida. Seu principal objetivo é tornar o processo de funcionamento do MK depurado "transparente", ou seja, facilmente controlado, controlado arbitrariamente e modificado à vontade do desenvolvedor. Um bom kit de ferramentas profissional pode, adicionalmente, fornecer ao desenvolvedor muitos serviços, facilitando muito seu trabalho, eliminando operações de rotina.

As principais ferramentas de depuração incluem emuladores de circuito, simuladores de software, placas de desenvolvimento (placas de avaliação), monitores de depuração e emuladores de ROM. Existem também dispositivos e conjuntos combinados.

EMULADORES IN-CIRCUIT

Um emulador in-circuit (ICE) é uma ferramenta de hardware-software que pode substituir um processador emulado em um dispositivo real. O VSE é a ferramenta de depuração mais poderosa e versátil.

Funcionalmente, os VEs são divididos naqueles conectados a um computador externo (geralmente um PC compatível com IBM) e funcionando de forma autônoma. Estes últimos possuem recursos computacionais e facilidades de entrada/saída próprios, portanto, com iguais capacidades, são muito mais caros que os primeiros, e com o mesmo preço, são significativamente inferiores a eles em termos de funcionalidade e capacidade de serviço.

Com o sistema sendo depurado, o VSE geralmente é conectado por um cabo a um cabeçote de emulação especial. Relativamente recentemente, surgiram modelos VSE nos quais tal cabeça é combinada estruturalmente com a unidade principal e é inserida no sistema que está sendo depurado em vez do MC. Caso este último não possa ser removido (os pinos são soldados na placa), o uso do VSE é permitido, desde que este MC tenha um modo de depuração em que todos os seus pinos estejam no terceiro estado (alta impedância). Neste caso, para conectar o VSE, é utilizado um adaptador de clipe especial, que é conectado diretamente nas saídas do MK emulado.

Ao menos. O VSE contém um depurador, um nó de emulação MK. memória de emulação e subsistema de ponto de interrupção. TSEs mais avançados podem incluir adicionalmente um rastreador, um processador de ponto de interrupção, um profiler (analisador de eficiência de código de programa), um cronômetro em tempo real, ferramentas de software e hardware que permitem ler e modificar os recursos do processador emulado "on the fly" , ferramentas de software e hardware que fornecem gerenciamento síncrono e necessário para emulação em sistemas multiprocessados, um ambiente de desenvolvimento integrado.

O depurador é uma espécie de ponte entre o desenvolvedor e a ferramenta de depuração. Um bom depurador garante que os programas que estão sendo depurados sejam carregados na memória do sistema, os status e conteúdos de todos os registros e memória (e, se necessário, suas modificações) sejam exibidos no monitor e o processo de emulação seja controlado.

Depuradores mais poderosos (comumente chamados de depuradores de alto nível ou de alto nível) também permitem isso.

  • conduza a depuração simbólica (devido ao fato de que o depurador, usando informações especiais fornecidas pelo compilador, "conhece" os endereços de todas as variáveis, matrizes e estruturas simbólicas). Nesse caso, o usuário pode operar com nomes simbólicos mais aceitáveis ​​para uma pessoa, sem se preocupar em lembrar seus endereços;
  • controlar e analisar não apenas o texto desmontado, mas também o código-fonte de um programa escrito em linguagem de alto nível e até com seus próprios comentários.

Tal depurador permite ao usuário controlar simultaneamente o andamento do programa e ver a correspondência entre o texto fonte, a imagem do programa em códigos de máquina e o estado de todos os recursos do microcontrolador emulado.

Deve-se notar que um depurador de alto nível fornece o desempenho de todas as suas funções apenas se for usado um compilador cruzado que forneça informações de depuração completas e corretas (nem todos os compiladores, especialmente suas versões piratas, são capazes disso) e pelo ao mesmo tempo o formato de sua apresentação "familiar" ao depurador.

A memória de emulação é usada no processo de depuração em vez da ROM do sistema que está sendo desenvolvido. Além disso, permite depurar o programa na ausência de um sistema real ou de seu layout. Caso seja necessário fazer alterações no programa que está sendo depurado, basta carregar um programa novo ou modificado na memória do emulador, ao invés de reprogramar a ROM.

Existem VSEs. que permitem ao usuário "substituir" a memória de emulação em vez da ROM não apenas em sua totalidade, mas também bloco a bloco (em alguns modelos, o tamanho mínimo do bloco é de 1 byte). na ordem especificada pelo usuário. Para isso, basta definir a distribuição da memória de dados e da memória do programa, de acordo com a qual o processador acessará tanto o conteúdo da ROM no sistema que está sendo depurado quanto o conteúdo da memória de emulação do TSE. Essa memória é geralmente chamada de memória com possibilidade de mapeamento.

O rastreador é um analisador lógico que trabalha em sincronia com o processador e captura o fluxo de instruções sendo executadas e o estado de sinais externos selecionados. Existem VSEs que permitem rastrear não apenas sinais externos, mas também os estados dos recursos internos do MC. por exemplo, registradores. Em tais dispositivos, são usadas versões especiais do MK (cristais de emulação).

O processador de ponto de interrupção torna possível interromper a execução do programa ou realizar outras ações (por exemplo, iniciar ou parar o rastreador) quando as condições especificadas pelo usuário são atendidas, ao contrário do mecanismo de ponto de interrupção usual, o processador permite formar e rastrear condições de quase qualquer complexidade ao nível do hardware, ao ser emulado o processo não é deduzido da escala de tempo real. Em alguns modelos VSE, o processador de ponto de interrupção pode opcionalmente ser usado para controlar dinamicamente o rastreador.

O profiler (analisador de eficiência do código do programa) permite, com base nos resultados da execução do programa depurado, obter informações sobre o número de chamadas para várias seções do programa e o tempo gasto em sua execução. A análise das informações estatísticas fornecidas pelo profiler permite identificar seções "mortas" ou sobrecarregadas de programas e, como resultado, otimizar a estrutura do programa que está sendo depurado.

Um ambiente de desenvolvimento integrado é um conjunto de ferramentas de software que oferece suporte a todos os estágios do desenvolvimento de software, desde a criação do código-fonte de um programa até sua compilação e depuração, e fornece interação simples e rápida com um depurador-simulador de software e programador.

A presença de um editor embutido, gerenciador de projetos e sistema de controle no shell do software VSE facilita muito o trabalho do desenvolvedor, poupando-o de muitas ações rotineiras. Para ele, a linha entre escrever um programa, editá-lo e depurar é tênue. A transição da edição do texto de origem para a depuração e vice-versa é realizada de forma "transparente" e sincronizada com a ativação das janelas correspondentes. O Project Manager inicia automaticamente a compilação conforme necessário e ativa a janela de interface do programa correspondente. Você pode facilmente proceder à depuração do projeto usando o depurador do simulador existente ou começar a piscar a ROM com um programa depurado.

Alguns ITUs fornecem aos usuários outros recursos adicionais. Entre eles, deve-se notar especialmente um, embora bastante específico, mas em alguns casos de importância fundamental, a capacidade de construir complexos multi-emuladores necessários para depurar sistemas multiprocessadores. Uma característica distintiva de tal complexo é o controle síncrono (de um computador ) de vários emuladores.

No caso geral, a capacidade do TSE de controlar e gerenciar o funcionamento de dispositivos depurados pode ser limitada (por exemplo, tratamento incorreto de interrupção no modo de etapa, proibição do uso de uma porta serial etc.). Também é necessário lembrar que cada modelo VSE possui sua própria lista de microcontroladores e compiladores suportados.

No entanto, para a maioria dos microcontroladores populares, foram desenvolvidos VSEs que não possuem restrições quanto ao uso de recursos de cristais depurados. Ilustraremos as possibilidades de tal ESS usando o modelo PICE-51 da empresa Fiton como exemplo.

O PICE-51 é um dispositivo criado usando um IC de lógica programável (FPGA). Isso possibilitou reduzir drasticamente o tamanho do VSE, minimizar os desvios de suas características elétricas e de frequência das características do MC emulado e, assim, obter a máxima precisão de emulação em frequências de até 33 MHz em tensões de alimentação de 3,3 a 5 V .emulação de quase todos os MKs da família MCS-51. O suporte de software funciona no ambiente Windows.

O PICE-51 consiste em uma placa principal, um adaptador substituível para um grupo MK específico e uma cabeça de emulação substituível também para um tipo de gabinete específico. Um rastreador e um processador de ponto de interrupção são montados na placa principal, e um processador emulador para um tipo específico de MK é instalado na placa adaptadora substituível. As cabeças de emulação permitem que o dispositivo seja instalado em soquetes DIP e PLCC na placa do usuário. A energia é fornecida por um bloco com uma tensão de saída de +5 V (0,5 A) ou por um dispositivo que está sendo depurado. A comunicação com um computador é feita através de um canal RS-232C isolado galvanicamente a uma velocidade de 115 kbaud.

Outros recursos e capacidades do PICE-51 são os seguintes:

  • emulação precisa - a ausência de quaisquer restrições ao uso pelo programa do usuário de recursos MK;
  • até 256 KB de programa emulado e memória de dados. Suporte para modelo de memória depositada. Alocação de memória entre o ESS e o dispositivo do usuário com precisão de 1 byte;
  • até 512K pontos de interrupção de hardware para acesso à memória de programa e dados,
  • suporte de hardware para programas de depuração em linguagens de alto nível;
  • rastrear oito sinais externos arbitrários;
  • quatro saídas de sincronização do equipamento do usuário;
  • rastreador em tempo real com buffer de 16 a 64K frames (arrays) de 64 bits com acesso on-the-fly. Endereço de rastreamento, dados, sinais de controle, timer em tempo real e oito sinais externos de usuário;
  • filtro de rastreamento programável;
  • processador de ponto de interrupção de hardware com a capacidade de definir uma condição de parada de emulação complexa por uma combinação de endereço, dados, controle, oito sinais externos, um timer em tempo real, contadores de eventos e um timer de atraso:
  • quatro breakpoints complexos que podem ser usados ​​independentemente ou em combinações para condições AND / OR / IF-THEN;
  • temporizador em tempo real de 48 bits;
  • emulação "transparente" - acesso "on the fly" à memória emulada, pontos de interrupção, processador de ponto de interrupção, buffer de rastreamento, cronômetro em tempo real;
  • gerador de clock controlado para o MK emulado. A capacidade de alterá-lo suavemente de 500 kHz para 40 MHz;
  • sistema embutido de autodiagnóstico do equipamento VSE. O desenvolvimento de programas no nível de gerenciamento de projetos para o macro montador МСА-51 ("Fiton"/"Microcosm"), bem como para pacotes de ferramentas cruzadas da Keil Software e IAR Systems é suportado;
  • suporte para depuração simbólica completa de programas criados usando os seguintes compiladores: montador ASM51 da Intel, compilador PL / M da Intel, montadores e compiladores C da Avocet Systems. Alta tecnologia. Software de Tarefas;
  • salvamento automático e carregamento de arquivos de configuração de hardware, interface e opções de depuração. Compatibilidade garantida dos arquivos de configuração com o simulador PDS-51 e portabilidade de projetos entre o PICE-51 e o simulador PDS-51;
  • a capacidade de personalizar cores, fontes e outras configurações para todas as janelas ao mesmo tempo e para cada janela separadamente.

Essa ampla gama de funcionalidades torna o VSE a ferramenta de depuração mais poderosa e versátil.

SIMULADORES

Simulador - uma ferramenta de software que pode simular o funcionamento do MK e sua memória. Normalmente, consiste em um depurador, um modelo de CPU e memória. Dispositivos mais avançados contêm modelos de dispositivos periféricos integrados (temporizadores, portas, ADCs e sistemas de interrupção).

O simulador deve "ser capaz" de carregar arquivos de programa em todos os formatos populares, exibir informações sobre o estado dos recursos do microcontrolador simulado da maneira mais completa possível. e também fornecem oportunidades para simular a execução do programa carregado em vários modos. Durante a depuração, o modelo executa o programa e o estado atual do modelo é exibido na tela do monitor do computador.

Ao carregar o programa no simulador. o usuário pode executá-lo em modo passo a passo ou contínuo, definir breakpoints condicionais ou incondicionais, controlar e modificar livremente o conteúdo das células de memória e registradores do microcontrolador simulado. O simulador permite verificar rapidamente a lógica da execução do programa, a exatidão das operações aritméticas.

Dependendo da classe de depurador utilizada, alguns modelos de simulador suportam depuração simbólica de programas de alto nível.

O simulador também pode conter várias ferramentas de software adicionais, como uma interface de ambiente externo. A presença de tal interface permite criar e usar de forma flexível um modelo do ambiente externo do MK. funcionando e afetando o programa depurado de acordo com um determinado algoritmo.

Em um sistema real, o MC normalmente está “ocupado” na leitura de informações de dispositivos externos (sensores) conectados a ele, processando-as e emitindo sinais de controle aos atuadores. Para simular o funcionamento de um sensor em um simulador simples, é necessário alterar manualmente o estado atual do modelo do dispositivo periférico ao qual o sensor está conectado em um sistema real. Se, por exemplo, ao receber um byte por meio de uma porta serial, um determinado sinalizador for definido e o próprio byte cair em um determinado registro, ambas as ações deverão ser executadas manualmente no simulador. Em alguns modelos, esse problema foi resolvido: os simuladores possuem ferramentas incorporadas para criar modelos de dispositivos externos conectados ao MK, incluindo ferramentas para exibição gráfica de informações.

Uma característica óbvia dos simuladores de software é que que os programas carregados neles sejam executados em uma escala de tempo diferente do tempo real. No entanto, o baixo preço, a capacidade de depurar mesmo na ausência de uma maquete do dispositivo que está sendo depurado, tornam os simuladores de software uma ferramenta de depuração muito atraente. Deve-se notar também que existe toda uma classe de erros que só podem ser detectados por meio de um simulador.

MONITORES DE DEBUGAÇÃO

Um monitor de depuração é um programa especial carregado na memória do sistema que está sendo depurado. Força o MK a realizar, além da tarefa aplicada, também funções de depuração:

  • carregar códigos de aplicativos de usuário em memória livre de monitor;
  • definir pontos de interrupção;
  • iniciar e parar o programa carregado em tempo real;
  • passando o programa do usuário passo a passo;
  • visualização, edição do conteúdo da memória e registros de controle.

O programa monitor funciona "em conjunto" com um computador ou terminal passivo, no qual ocorre a visualização e o controle do processo de depuração. A vantagem desta abordagem

  • custos muito baixos, mantendo a capacidade de depuração em tempo real, a principal desvantagem;
  • distração de recursos MK para depuração e procedimentos de comunicação (o monitor ocupa um pouco de memória, interrupções, canal serial). Recentemente, surgiram programas que praticamente não ocupam os recursos de hardware do MK (serão discutidos na seção "Emuladores de ROM").

CONSELHOS DE DESENVOLVIMENTO

Bancas de desenvolvimento, ou, como costumam ser chamadas na literatura estrangeira, bancas de avaliação (Evaluation Boards). - construtores originais para prototipagem de sistemas aplicados. Recentemente, muitas empresas de manufatura, lançando novos modelos de MK. oferta e placas de desenvolvimento correspondentes. Normalmente é uma placa de circuito impresso com um MK instalado e todos os elementos necessários para o seu funcionamento normal, bem como sistemas de comunicação com um computador. Via de regra, a placa disponibiliza espaço livre para a montagem do dispositivo do usuário que está sendo desenvolvido. Às vezes, também existe uma "fiação" pronta para a instalação de dispositivos adicionais recomendados pela empresa (ROM, RAM, display LCD, teclado, ADC, etc.). As placas modificadas pelo usuário podem ser usadas vantajosamente como controladores de placa única incorporados em produtos de pequena escala (5...20 unid.).

Para conveniência do usuário, as placas de desenvolvimento também são equipadas com uma ferramenta de depuração simples baseada no monitor de depuração. Duas abordagens diferentes surgiram aqui: uma é usada para MK. tendo um barramento externo, e o segundo - para MKs que não o possuem.

No primeiro caso, o monitor de depuração é fornecido como um chip ROM. que é instalado em um soquete especial na placa de desenvolvimento. A placa também possui RAM para programas do usuário e um canal de comunicação com um computador ou terminal. Um exemplo é a placa de desenvolvimento desenvolvida pela Intel para a família MK MCS-51.

No segundo caso, a placa de desenvolvimento contém sistemas de programação embutidos para a ROM interna do MK. que são controlados por um computador. O programa do monitor é inserido na ROM do MK junto com o aplicativo preparado de acordo (as chamadas das rotinas de depuração do monitor são inseridas nos lugares certos). Em seguida, é realizado um teste de funcionamento. Para fazer correções no programa que está sendo depurado, ele é apagado da ROM e o corrigido é gravado nela. O programa aplicativo finalizado é obtido do depurado removendo o monitor e todas as chamadas para suas funções. Placas de desenvolvimento para MKs das famílias PIC-micro (Microchip), 80C750 (Philips), 89C2051 (Atmel) são projetadas para tal algoritmo de depuração.

As placas de desenvolvimento às vezes são equipadas com programas de depuração executados em um computador externo "em conjunto" com um monitor. Esses programas recentemente se tornaram visivelmente mais complexos e geralmente possuem um conjunto altamente profissional de funções de depuração (por exemplo, um depurador de simulador) ou vários elementos inerentes apenas a ambientes de desenvolvimento integrado em sua forma pura. Os kits também podem incluir programas aplicados que são encontrados com mais frequência na prática.

Os recursos de depuração do kit "placa de desenvolvimento mais monitor" não são tão universais quanto os do ESS. além disso, alguns dos recursos do MC no processo de depuração são selecionados para o funcionamento do monitor. No entanto, a disponibilidade de um conjunto completo de ferramentas de software e hardware prontas que permitem iniciar a instalação e depuração do sistema aplicado sem perda de tempo é, em muitos casos, um fator decisivo. Especialmente quando você considera que tal kit custa várias vezes menos que um emulador mais versátil.

EMULADORES DE ROM

Um emulador de ROM é uma ferramenta de software e hardware que permite substituir a ROM do dispositivo que está sendo depurado pela RAM. no qual você pode baixar o programa do seu computador através de um dos canais de comunicação padrão. Ele permite que o usuário evite vários ciclos de atualização da ROM. O emulador de ROM é usado apenas para depurar programas MK que podem acessar a memória externa do programa. Em termos de complexidade e custo, este dispositivo é comparável às placas de desenvolvimento. Tem uma grande vantagem - versatilidade. O emulador de ROM pode funcionar com qualquer MK.

Os primeiros emuladores de ROM permitiam apenas que um programa fosse carregado, executado e interrompido usando uma reinicialização principal. Depois, surgiram modelos complicados com geração de hardware de sinais de rastreamento para o osciloscópio ao atingir um determinado endereço. A memória emulada em tais produtos estava disponível para visualização e modificação, mas o controle sobre os registros de controle interno do MK era até recentemente impossível.

Recentemente, surgiram os chamados emuladores de ROM inteligentes. Eles permitem que você 'olhar' dentro do MC na placa do usuário e são semelhantes no controle de depuração ao VSE. O Cactus ainda apresenta seu emulador de ROM realmente inteligente como o VSE da série MK, é tão impossível distinguir entre trabalhar com um e o outro.Na verdade, o processador neste caso não é substituído, e o da taxa do usuário é usado.

O emulador de ROM inteligente é um híbrido do emulador de ROM normal. um monitor de depuração e um sistema para alternar rapidamente o barramento de um para outro. Isso cria o efeito como se o monitor de depuração estivesse instalado na placa do usuário e, ao mesmo tempo, praticamente não ocupasse recursos de hardware do MK, exceto por uma pequena zona (cerca de 4 KB) de etapas de software. Esse emulador foi desenvolvido, por exemplo, pela empresa Fiton para todos os MKs existentes e futuros que possuem o núcleo 8051, mas também estão saturados com vários dispositivos de entrada / saída. O produto suporta muitos MCs diferentes da Philips, Siemens. TUDO BEM EU.

AMBIENTES DE DESENVOLVIMENTO INTEGRADO

A rigor, os ambientes de desenvolvimento integrado não estão entre as ferramentas de depuração, porém, seria errado ignorar essa classe de ferramentas de software que facilitam e agilizam muito o processo de desenvolvimento e depuração de sistemas microprocessados.

Com a abordagem tradicional, o estágio inicial de escrever um programa é construído da seguinte maneira. O texto de origem é digitado usando um editor de texto. Após a conclusão da digitação, o trabalho com o editor de texto é interrompido e o compilador cruzado é iniciado. Como regra, um novo programa contém erros de sintaxe e o compilador os relata ao console do operador. Em seguida, o editor de texto é iniciado novamente e o operador procura e elimina os erros identificados. Ao mesmo tempo, as mensagens sobre sua natureza, exibidas pelo compilador, não são mais visíveis, pois a tela é ocupada por um editor de texto.

Este ciclo pode se repetir mais de uma vez. E se o programa for relativamente complexo, for montado em várias partes, estiver sujeito a edição ou modernização, mesmo esse estágio inicial pode exigir muito esforço e tempo do programador.

Para evitar uma grande quantidade de trabalho rotineiro e, assim, aumentar significativamente a produtividade de um programador, os chamados ambientes de desenvolvimento integrados (shells) de desenvolvimento (Integrated Development Environment IDE) que surgiram e estão ganhando popularidade rapidamente permitem.

Como regra, um bom ambiente integrado combina as ferramentas de depuração disponíveis (emulador de circuito, simulador de software, programador) e fornece ao programador textos de programa no estilo "Turbo".

O ambiente integrado permite:

  • use o editor de texto de vários arquivos embutido, especialmente focado em trabalhar com textos de origem do programa;
  • observar simultaneamente (no modo multi-janela) os diagnósticos de erros detectados durante a compilação e o texto fonte do programa, disponível para edição;
  • trabalhar em vários projetos em paralelo. O Project Manager permite que você use qualquer projeto como modelo para um recém-criado. As opções dos compiladores utilizados e a lista de arquivos fonte do projeto são definidas nos menus de diálogo e salvas dentro do projeto, eliminando a necessidade de trabalhar com arquivos batch inconvenientes;
  • recompile apenas módulos editados;
  • carregue o programa que está sendo depurado nas ferramentas de depuração disponíveis e trabalhe com elas sem sair do shell;
  • conectar ao shell quase qualquer software.

Recentemente, as funções dos ambientes de desenvolvimento integrado passaram a fazer parte das interfaces de programação dos emuladores e depuradores-simuladores mais "avançados". Essa funcionalidade, combinada com uma interface amigável, acelera significativamente o trabalho do programador.

Assim, ao escolher ferramentas de depuração, é aconselhável levar em consideração o seguinte conjunto de indicadores: lista de microcontroladores suportados, restrições de recursos de microcontroladores emulados/simulados, possibilidade de depuração simbólica, lista de compiladores suportados e, finalmente, capacidades de serviço.

Autores: Yu.Zobnin, Sh.Kobakhidze, Moscou

Veja outros artigos seção Microcontroladores.

Leia e escreva útil comentários sobre este artigo.

<< Voltar

Últimas notícias de ciência e tecnologia, nova eletrônica:

Máquina para desbastar flores em jardins 02.05.2024

Na agricultura moderna, o progresso tecnológico está se desenvolvendo com o objetivo de aumentar a eficiência dos processos de cuidado das plantas. A inovadora máquina de desbaste de flores Florix foi apresentada na Itália, projetada para otimizar a etapa de colheita. Esta ferramenta está equipada com braços móveis, permitindo uma fácil adaptação às necessidades do jardim. O operador pode ajustar a velocidade dos fios finos controlando-os a partir da cabine do trator por meio de um joystick. Esta abordagem aumenta significativamente a eficiência do processo de desbaste das flores, proporcionando a possibilidade de adaptação individual às condições específicas do jardim, bem como à variedade e tipo de fruto nele cultivado. Depois de testar a máquina Florix durante dois anos em vários tipos de frutas, os resultados foram muito encorajadores. Agricultores como Filiberto Montanari, que utiliza uma máquina Florix há vários anos, relataram uma redução significativa no tempo e no trabalho necessários para desbastar flores. ... >>

Microscópio infravermelho avançado 02.05.2024

Os microscópios desempenham um papel importante na pesquisa científica, permitindo aos cientistas mergulhar em estruturas e processos invisíveis aos olhos. Porém, vários métodos de microscopia têm suas limitações, e entre elas estava a limitação de resolução ao utilizar a faixa infravermelha. Mas as últimas conquistas dos pesquisadores japoneses da Universidade de Tóquio abrem novas perspectivas para o estudo do micromundo. Cientistas da Universidade de Tóquio revelaram um novo microscópio que irá revolucionar as capacidades da microscopia infravermelha. Este instrumento avançado permite ver as estruturas internas das bactérias vivas com incrível clareza em escala nanométrica. Normalmente, os microscópios de infravermelho médio são limitados pela baixa resolução, mas o desenvolvimento mais recente dos pesquisadores japoneses supera essas limitações. Segundo os cientistas, o microscópio desenvolvido permite criar imagens com resolução de até 120 nanômetros, 30 vezes maior que a resolução dos microscópios tradicionais. ... >>

Armadilha de ar para insetos 01.05.2024

A agricultura é um dos sectores-chave da economia e o controlo de pragas é parte integrante deste processo. Uma equipe de cientistas do Conselho Indiano de Pesquisa Agrícola-Instituto Central de Pesquisa da Batata (ICAR-CPRI), em Shimla, apresentou uma solução inovadora para esse problema: uma armadilha de ar para insetos movida pelo vento. Este dispositivo aborda as deficiências dos métodos tradicionais de controle de pragas, fornecendo dados sobre a população de insetos em tempo real. A armadilha é alimentada inteiramente por energia eólica, o que a torna uma solução ecologicamente correta que não requer energia. Seu design exclusivo permite o monitoramento de insetos nocivos e benéficos, proporcionando uma visão completa da população em qualquer área agrícola. “Ao avaliar as pragas-alvo no momento certo, podemos tomar as medidas necessárias para controlar tanto as pragas como as doenças”, diz Kapil ... >>

Notícias aleatórias do Arquivo

A condutividade do cristal é aumentada em 400 vezes 23.11.2013

Os cientistas descobriram acidentalmente que a condutividade elétrica de um cristal aumenta 400 vezes se for exposto à luz - usando esse efeito, os físicos podem aumentar significativamente a capacidade e a velocidade dos dispositivos de armazenamento; os resultados do estudo foram publicados na revista Physical Review Letters.

Marianne Tarun da Universidade de Washington e seus colegas realizaram um estudo sobre titanato de estrôncio. Enquanto trabalhavam, notaram que sua condutividade elétrica aumentou repentinamente. A princípio eles não conseguiram entender qual era o problema, e só então descobriram que a condutividade elétrica aumentava quando os cristais eram expostos à luz.

Em seguida, os cientistas realizaram um experimento: eles deixaram os cristais sob luz forte por 10 minutos e depois os removeram no escuro. Descobriu-se que o efeito do aumento da condutividade elétrica dura vários dias - os pesquisadores explicam isso pelo fato de que a luz libera elétrons no material, permitindo que eles transportem mais corrente elétrica.

Essa capacidade, a chamada fotocondutividade residual, não tem nada a ver com supercondutividade - a completa ausência de resistência elétrica, que os físicos só podem alcançar em temperaturas próximas ao zero absoluto - Tarun e seus colegas encontraram seu efeito em condições normais.

"O aparecimento desse efeito à temperatura ambiente abre novas possibilidades. Na memória padrão do computador, as informações são acumuladas na superfície de chips ou discos rígidos, e em dispositivos que utilizam fotocondutividade residual, as informações podem ser armazenadas em todo o cristal", disse Matthew. McCluskey, coautor do estudo, cujas palavras são citadas em uma mensagem da universidade.

Essa abordagem tem sido chamada de memória holográfica e é considerada um substituto potencial para tecnologias de dados de alta capacidade. Portanto, se agora os dados da mídia magnética e óptica forem gravados em uma ou duas camadas, na memória holográfica eles serão gravados em todo o volume do dispositivo, e a velocidade de gravação e leitura das informações aumentará.

Outras notícias interessantes:

▪ Conversores DC-DC econômicos Mean Well SPA02 e SPB03

▪ A Antártida está sendo semeada

▪ O telefone monitora a criança

▪ Nova versão do sistema de trunking ASTRO 25

▪ Imersão total em realidade virtual

Feed de notícias de ciência e tecnologia, nova eletrônica

 

Materiais interessantes da Biblioteca Técnica Gratuita:

▪ seção do site Audiotechnics. Seleção de artigos

▪ artigo Tracer-plantador de batata. Dicas para o dono da casa

▪ Como era determinado o tempo no mundo antigo? Resposta detalhada

▪ artigo Parker. Instrução padrão sobre proteção do trabalho

▪ artigo Esquema do equipamento elétrico do carro VAZ-2107. Enciclopédia de rádio eletrônica e engenharia elétrica

▪ artigo Comparadores de micropotência da série TS3V339. Enciclopédia de rádio eletrônica e engenharia elétrica

Deixe seu comentário neste artigo:

Имя:


E-mail opcional):


Comentário:





Todos os idiomas desta página

Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site

www.diagrama.com.ua

www.diagrama.com.ua
2000-2024