¿Qué son las direcciones de enlace y las direcciones de ejecución?
Dirección de enlace y dirección de ejecución: pueden ser iguales o diferentes. Para el código relacionado con la posición, la dirección de ejecución durante la ejecución final y la dirección de enlace dada durante la compilación y el enlace deben ser la misma, de lo contrario se producirá un error. En nuestro programa bare metal anterior, se utilizó -Ttext 0x0 en el Makefile
Para especificar la dirección de enlace es 0x0. Esto significa que pensamos que este programa se ejecutará en la dirección de memoria 0x0 en el futuro.
Pero en realidad la dirección en la que corremos es 0xd0020010 (usamos la dirección de descarga especificada al descargar con dnw.). Estas dos direcciones parecen diferentes, pero en realidad son la misma. Esto se debe a que el S5PV210 ha hecho un mapeo interno y ha mapeado la SRAM a la dirección 0x0.
分清楚这两个概念
链接地址:链接时指定的地址( 指定方式为: Makefile中用-Ttext,或者链接脚本)N Distinguir claramente estos dos conceptos
Dirección de enlace: la dirección especificada al enlazar (especificada mediante: el uso de -Ttext en Makefile, o el script de enlace) N
Dirección de ejecución: La dirección de ejecución real del programa (método de especificación: se determina por la ubicación de la memoria en la que se carga durante la ejecución real).

¿Qué determina la dirección de ejecución?
La dirección de tiempo de ejecución viene determinada por el tiempo de ejecución. Cuando S se compila y enlaza, la dirección de tiempo de ejecución no puede determinarse de forma absoluta.
¿Qué determina la dirección del enlace?
El programador pasa la dirección de enlace a través del Makefile-Ttext durante el proceso de compilación y enlace.
xxx o especificada en el script de enlace. Los programadores predecirán de antemano los requisitos de ejecución de su programa, y tendrán una dirección de ejecución deseada, y utilizarán esta dirección como dirección de enlace. Por ejemplo: 1. Programas de aplicación en Linux. gcc hola.c -.
Hola, la dirección de enlace por defecto utilizada en este momento es 0x0, por lo que la aplicación está enlazada a la dirección 0. Debido a que la aplicación se ejecuta en un proceso del sistema operativo, en este proceso la aplicación tiene acceso exclusivo al espacio de direcciones virtual 4G. Así que todas las aplicaciones pueden enlazarse a la dirección 0 porque cada proceso comienza desde la dirección 0. (Puedes usar 0 sin especificar la dirección de enlace al compilar)
Palabras clave relacionadas:
4G DTU