¿Puedo reubicar el código en el microcontrolador ARM?

3

Estoy trabajando en un proyecto que incluye un microcontrolador ARM. En tiempo de ejecución, quiero cargar el código de una tarjeta SD en el programa flash y luego ejecutar ese código. Mi pregunta es que, dado que el código ARM parece funcionar con saltos relativos, si importa en qué parte de la memoria coloco el código. Si solo puedo compilar mi código y reubicarlo en cualquier lugar del espacio de direcciones, esto simplifica enormemente la tarea. Estoy usando TI Code Composer Studio con una cadena de herramientas del compilador GCC.

    
pregunta Void Star

2 respuestas

1

ARM realmente no tiene nada que ver con esto, muchos / la mayoría de los conjuntos de instrucciones tienen formas de usar direcciones fijas y direcciones relativas. Luego se trata de pedirle a las herramientas que lo hagan de una manera u otra o escribir su código de una manera u otra.

ARM tiene muchas instrucciones diferentes para hacer las cosas, definitivamente es compatible con las cadenas de herramientas y esas cadenas de herramientas pueden construir una posición dependiente o independiente de la posición.

Si hubiera ejecutado su programa gcc con --help, vería algunas opciones de línea de comandos que se aplicarían a lo que está tratando de hacer. En realidad, cuando ejecute con --help verá que realmente quiere

arm-whatever-gcc -v --help
    
respondido por el old_timer
4

El conjunto de instrucciones ARM es completamente reubicable, aunque es posible crear código que no lo sea haciendo referencia a direcciones absolutas (por ejemplo, a datos de posición relativa). Es una de las principales características de diseño del conjunto de instrucciones desde las primeras versiones a finales de los 80.

Otra consideración es la protección de la memoria, esto depende completamente de la plataforma de hardware. En algunas plataformas de hardware, no todos los rangos de direcciones se pueden usar para ejecutar código, estos rangos solo se pueden usar para datos (o memoria asignada de E / S). Consulte la hoja de datos de su chip (conjunto).

    
respondido por el jippie

Lea otras preguntas en las etiquetas