ENCICLOPEDIA DE RADIOELECTRÓNICA E INGENIERÍA ELÉCTRICA Inicialización de segmentos de memoria adicionales en programas para microcontroladores de la familia MCS-51. Enciclopedia de radioelectrónica e ingeniería eléctrica. Enciclopedia de radioelectrónica e ingeniería eléctrica. / Microcontroladores Los microcontroladores modernos tienen una memoria de datos no volátil (EEPROM) incorporada, en la que a veces es necesario ingresar información antes de que el dispositivo comience a funcionar. La imagen (firmware) de esta memoria debe generarse al desarrollar el programa. Esto lo pueden hacer, por ejemplo, ensambladores de microcontroladores de las familias PICmicro y AVR. Le dan al programador la oportunidad de organizar un segmento de memoria adicional y configurar en él los datos iniciales para escribir en EEPROM. Los ensambladores para microcontroladores con núcleo MSC-51 también permiten dividir la memoria en varias partes, pero sólo en una de ellas, el segmento de código ejecutable, es posible la inicialización. En todos los demás, es posible reservar celdas de memoria y escribir datos en ellas solo durante la ejecución del programa. Una salida a la situación puede ser la técnica que se describe a continuación. Su esencia es el uso del ensamblaje condicional, como resultado de lo cual la inicialización de un segmento de código se produce de manera diferente, dependiendo de las condiciones de traducción. Los archivos HEX resultantes se pueden utilizar para programar no sólo la EEPROM interna del microcontrolador, sino también los chips de memoria externos. Los segmentos adicionales creados artificialmente (se acepta cualquier número de ellos) se colocan en el texto del programa antes del segmento de código real. Las etiquetas definidas en uno de ellos serán conocidas en todos los siguientes, incluido el segmento de código real. Pero no se permiten enlaces en dirección opuesta. No existen restricciones sobre el tipo y la ubicación física de la memoria adicional. En la tabla se muestra un ejemplo de un programa con dos segmentos inicializados adicionales, convencionalmente llamados EEPROM y FLASH. 1. Una vez guardado en el archivo ejemplo.asm, usaremos el ensamblador ASEM-51, que se puede “descargar” de forma gratuita en . En primer lugar, ejecutemos el ensamblador en la línea de comandos. asem ejemplo.asm eeprom.hex/define:EEPROM Al procesar las primeras líneas del texto del programa, colocará las etiquetas idEeprom, ptrWord y prtBufE en su tabla de símbolos, y los datos especificados por las directivas DB y DW en el archivo de salida eeprom.hex (Tabla 2). A continuación se comprobará la longitud del segmento. Si el valor del contador del programa excede la capacidad EEPROM físicamente existente (en este caso, 640 celdas), se mostrará un mensaje de error. Si el tamaño del segmento es obviamente pequeño, se puede omitir la verificación. Se pueden proporcionar controles similares en otros segmentos. A continuación, el ensamblador encontrará la directiva IFNDEF EEPROM. Dado que un símbolo con este nombre está definido en la línea de comando (parámetro /define:EEPROM), todas las líneas posteriores del programa, hasta la directiva ENDIF, serán ignoradas y la traducción terminará allí. Ejecutar la retransmisión del mismo programa desde la línea de comandos asem ejemplo.asm flash.hex/define:FLASH Se diferencia del anterior únicamente por definir el símbolo FLASH en lugar de EEPROM. La primera etapa de traducción se llevará a cabo exactamente como se describe anteriormente y los datos del segmento EEPROM se escribirán en el archivo de salida. Sin embargo, la directiva IFNDEF EEPROM no interrumpirá el proceso esta vez y la siguiente directiva ORG 0 restablecerá el contador del programa. El ensamblador comenzará a escribir datos destinados al segmento FLASH en el archivo de salida desde la dirección cero. La transmisión será interrumpida por la directiva IFNDEF FLASH. La forma final del archivo flash.hex se muestra en la tabla. 3. Establecemos la traducción del segmento verdadero del código ejecutable mediante el comando asem ejemplo.asm En primer lugar, los segmentos adicionales se traducirán nuevamente y todas las etiquetas definidas en ellos se ingresarán en la tabla de símbolos del ensamblador, lo que permitirá hacer referencia a ellos desde el segmento de código. La directiva ORG 0 al principio restablecerá una vez más el contador del programa a cero. Luego la transmisión continuará como de costumbre. En el archivo resultante example.hex (Tabla 4), el código del programa ejecutable comienza en la cuarta línea, ubicada después de las líneas idénticas a las contenidas en los archivos HEX anteriores. La presencia de información innecesaria generalmente no interfiere con la carga correcta del código en las áreas de memoria apropiadas del microcontrolador. En el buffer del programa que controla la programación, los datos correctos, cuando las direcciones coinciden, “desplazan” los ingresados previamente. Y sólo si el nuevo segmento es más corto que el anterior, su “cola” se almacenará en el búfer. Por este motivo, es aconsejable describir los segmentos de un programa en orden creciente según su longitud. Algunos programadores no tienen un búfer intermedio ni controlan estrictamente los datos de entrada, evitando la superposición de direcciones. En el primer caso, la programación será incorrecta, en el segundo, no se iniciará en absoluto hasta que se eliminen los "errores". Puede eliminar líneas adicionales de un archivo HEX manualmente usando cualquier editor de texto. Puedes hacer esto automáticamente ejecutando dos comandos seguidos: hex2bin ejemplo.hex bin2hex ejemplo.bin El primero creará una imagen binaria de los datos contenidos en el archivo example.hex y la colocará en el archivo example.bin. El segundo realizará la conversión inversa y creará un nuevo archivo example.hex sin lujos. Los programas necesarios se pueden “descargar” desde: Y . Autor: S. Chekunov, Izhevsk Ver otros artículos sección Microcontroladores. Lee y escribe útil comentarios sobre este artículo. Últimas noticias de ciencia y tecnología, nueva electrónica: Cuero artificial para emulación táctil.
15.04.2024 Arena para gatos Petgugu Global
15.04.2024 El atractivo de los hombres cariñosos.
14.04.2024
Otras noticias interesantes: ▪ Acer competirá con Asustek en el mercado de portátiles económicos ▪ Un simple adaptador convertirá los auriculares ordinarios en inteligentes ▪ Nuevos diodos Schottky de VISHAY Feed de noticias de ciencia y tecnología, nueva electrónica
Materiales interesantes de la Biblioteca Técnica Libre: ▪ sección del sitio Apuntes de conferencias, hojas de trucos. Selección de artículos ▪ artículo Economía mundial. Cuna ▪ Artículo ¿Cuántas estrellas se pueden ver en el cielo? Respuesta detallada ▪ artículo Gabinete de tinta. recetas simples y consejos
Deja tu comentario en este artículo: Todos los idiomas de esta página Hogar | Biblioteca | Artículos | Mapa del sitio | Revisiones del sitio www.diagrama.com.ua |