ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA Inicialização de segmentos adicionais de memória em programas para microcontroladores da família MCS-51. Enciclopédia de rádio eletrônica e engenharia elétrica Enciclopédia de eletrônica de rádio e engenharia elétrica / Microcontroladores Os microcontroladores modernos possuem uma memória de dados não voláteis integrada (EEPROM), informações nas quais às vezes precisam ser inseridas antes que o dispositivo comece a funcionar. A imagem (firmware) desta memória deve ser formada durante o desenvolvimento do programa. Isso pode ser feito, por exemplo, montadoras para microcontroladores das famílias PICmicro e AVR. Eles dão ao programador a oportunidade de organizar um segmento de memória adicional e definir os dados iniciais nele para gravar na EEPROM. Os montadores para microcontroladores com o núcleo MSC-51 também permitem dividir a memória em várias partes, mas apenas em uma delas - o segmento de código executável - a inicialização é possível. Em todos os outros, só é permitido reservar células de memória e escrever dados nelas somente durante a execução do programa. A saída da situação pode ser a recepção, descrita a seguir. Sua essência é o uso de montagem condicional, pelo que a inicialização do segmento de código ocorre de maneiras diferentes, dependendo das condições de tradução. Os arquivos HEX resultantes podem ser usados para programar não apenas a EEPROM interna do microcontrolador, mas também chips de memória externos. Segmentos adicionais criados artificialmente (qualquer número deles é permitido) são colocados no texto do programa antes do segmento de código real. Os rótulos definidos em um deles serão conhecidos em todos os itens a seguir, incluindo o segmento de código real. Mas links na direção oposta não são permitidos. Não há restrições quanto ao tipo e localização física da memória adicional. Um exemplo de programa com dois segmentos adicionais inicializados, convencionalmente denominados EEPROM e FLASH, é mostrado na Tabela. 1. Após salvá-lo no arquivo exemplo.asm, utilizaremos o assembler ASEM-51, que pode ser "baixado" gratuitamente em . Primeiro de tudo, vamos executar o montador na linha de comando asem exemplo.asm eeprom.hex/define:EEPROM Processando as primeiras linhas do texto do programa, ele colocará os rótulos idEeprom, ptrWord e prtBufE em sua tabela de símbolos, e os dados especificados pelas diretivas DB e DW no arquivo de saída eeprom.hex (Tabela 2). O comprimento do segmento será então verificado. Se o valor do contador de programa exceder o tamanho da EEPROM fisicamente existente (neste caso - 640 células), uma mensagem de erro será exibida. Se o volume do segmento for obviamente pequeno, o cheque pode ser excluído. Verificações semelhantes podem ser previstas em outros segmentos. Em seguida, o montador encontrará a diretiva IFNDEF EEPROM. Como um símbolo com este nome é definido na linha de comando (parâmetro /define:EEPROM), todas as linhas seguintes do programa, até a diretiva ENDIF, serão ignoradas e a tradução terminará aí. Execute a retransmissão do mesmo programa a partir da linha de comando asem exemplo.asm flash.hex/define:FLASH Difere do anterior apenas na definição do símbolo FLASH ao invés de EEPROM. A primeira etapa da tradução ocorrerá exatamente como descrito acima, e os dados do segmento EEPROM serão gravados no arquivo de saída. No entanto, a diretiva IFNDEF EEPROM não interromperá o processo desta vez, e a seguinte diretiva ORG 0 redefinirá o contador do programa. O montador começará a escrever os dados destinados ao segmento FLASH no arquivo de saída a partir do endereço zero. A transmissão será interrompida pela diretiva IFNDEF FLASH. A forma final do arquivo flash.hex é mostrada na Tabela. 3. Definimos a tradução do segmento verdadeiro do código executável pelo comando asem exemplo.asm Em primeiro lugar, os segmentos adicionais serão recompilados e todos os rótulos definidos neles serão inseridos na tabela de símbolos do montador, o que permitirá que sejam referenciados a partir do segmento de código. A diretiva ORG 0 no início dele irá mais uma vez zerar o contador do programa. A transmissão continuará normalmente. No arquivo example.hex resultante (Tabela 4), o código executável do programa começa a partir da quarta linha, sendo após as linhas idênticas às contidas nos arquivos HEX anteriores. A presença de informações redundantes geralmente não interfere no carregamento correto do código nas áreas de memória apropriadas do microcontrolador. No buffer do programa que controla a programação, os dados corretos, quando os endereços coincidem, "deslocam" os inseridos anteriormente. E somente se o novo segmento for mais curto que o anterior, sua "cauda" será armazenada no buffer. Por esse motivo, é desejável descrever os segmentos no programa em ordem crescente de comprimento. Alguns programadores não possuem um buffer intermediário ou controlam estritamente os dados de entrada, não permitindo sobreposições de endereços. No primeiro caso, a programação estará errada, no segundo caso, não iniciará até que os "erros" sejam eliminados. Você pode remover manualmente linhas extras de um arquivo HEX usando qualquer editor de texto. Você também pode fazer isso automaticamente executando dois comandos seguidos: hex2bin exemplo.hex bin2hex exemplo.bin A primeira criará uma imagem binária dos dados contidos no arquivo example.hex e a colocará no arquivo example.bin. O segundo fará a transformação reversa e criará um novo arquivo example.hex sem frescuras. Os programas necessários podem ser "baixados" nos endereços E . Autor: S. Chekunov, Izhevsk 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: ▪ As escalas inteligentes determinam a velocidade de propagação da onda de pulso ▪ Liga superelástica que mantém a rigidez em altas temperaturas ▪ Supercapacitor de argila refratária ▪ Leitor audiófilo Walkman NW-A105 Feed de notícias de ciência e tecnologia, nova eletrônica
Materiais interessantes da Biblioteca Técnica Gratuita: ▪ seção do site Radio Control. Seleção de artigos ▪ Artigo de micromecânica. História da invenção e produção ▪ artigo Quem é o autor do microscópio? Resposta detalhada ▪ artigo Cameraman sênior do departamento técnico. Descrição do trabalho ▪ artigo Uma antena eficaz para cinco bandas. Enciclopédia de rádio eletrônica e engenharia elétrica
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 |