Imagen externa int $$ RW

  
 

Limit Meaning


Siempre ha habido una comprensión plausible de los datos de RO, RW y ZI descritos en el sistema ARM. Durante este tiempo, lo entendí cuidadosamente y encontré algunas reglas. He entendido algunas cosas que estaban en los libros anteriores pero no entiendo. Creo que debería haber muchas personas que tengan la misma confusión que yo. Por eso escribiré algunos de mis entendimientos sobre RO, RW y ZI, espero poder tener algo para todos. Ayuda Para comprender RO, RW y ZI, primero debe comprender los siguientes conocimientos:


La composición del programa ARM


El "programa ARM" al que se hace referencia aquí es el sistema ARM. El programa que se está ejecutando, no el archivo de imagen bin guardado en la ROM, presta atención a la diferencia. Un programa ARM consta de tres partes: RO, RW y ZI RO son las instrucciones y constantes del programa. RW es la variable inicializada en el programa. ZI es la variable no inicializada en el programa. Los tres puntos anteriores se pueden entender como: RO es de solo lectura, RW es de lectura /escritura, ZI es cero


La composición del archivo de imagen ARM El llamado archivo de imagen ARM se refiere al archivo bin grabado en la ROM, y también se convierte en el archivo de imagen. Lo siguiente usa el archivo de imagen para llamarlo. El archivo de imagen contiene datos de RO y RW. La razón por la que el archivo de imagen no contiene datos de ZI es porque los datos de ZI son 0, no es necesario incluir, siempre que el programa esté en ejecución, el área donde se ubican los datos de ZI siempre se borra. Incluyendo se desperdicia espacio de almacenamiento. P: ¿Por qué la imagen debe contener RO y RW? R: Debido a que los comandos y las constantes en el RO y las variables inicializadas en el RW no son como el ZI, no hay nada en el medio.


El proceso de ejecución del programa ARM


De los dos puntos anteriores, se puede saber que el archivo de imagen grabado en la ROM no es completamente compatible con el programa ARM en la operación real. Lo mismo Por lo tanto, es necesario entender cómo el programa ARM alcanza el estado de ejecución real de la imagen en la ROM. De hecho, las instrucciones en la ROM deben tener al menos una función de este tipo: 1. Mueva el RW de la ROM a la RAM. Dado que RW es una variable, la variable no puede existir en la ROM. 2. Borre el área de RAM donde se encuentra ZI. Debido a que el área de ZI no se encuentra en la imagen, el programa debe borrar el área de RAM correspondiente de acuerdo con la dirección y el tamaño de ZI que proporciona el compilador. La ZI también es una variable. Del mismo modo, la variable no puede existir en la ROM. En la etapa inicial del programa en ejecución, el programa C puede acceder a la variable normalmente después de completar las dos instrucciones. De lo contrario solo puedes ejecutar código sin variables.
rt_system_heap_init ((void *) &
Imagen RW I RAM1

Límite ZI $$, (void *) STM32_SRAM_END);

Imagen editorial
RW I RAM1

ZI $$ Limit


Este es un símbolo exportado por el vinculador, que representa el final del segmento ZI, es decir, después de que finalice la RAM del área de ejecución del programa (tenga en cuenta que ‘ ’; una pequeña dirección i ++ y ++ i), a su vez, es la dirección de inicio del área no utilizada de RAM en nuestra área de ejecución (de hecho, esto es un poco exagerado, ya que este entendimiento es a menudo solo un estándar para casi encontrar, pensando en RAM El uso del área ZI suele ser el final de todo el programa, tal vez lo entiendo mal aquí). Imagen &Imagen Tomar la dirección.
RW I RAM1

ZI $$ Limit

Copyright © Conocimiento de Windows All Rights Reserved