7 votos

Ejecución del ejecutable desde la SRAM externa

Tengo una placa de desarrollo STM32 con una SRAM externa. Me gustaría ejecutar mi código desde esa SRAM externa, pero mi procesador sólo admite el arranque desde la Flash, la SRAM interna o la memoria del sistema (una parte de la SRAM interna).

¿Cuál es la forma más fácil de ejecutar código desde una SRAM externa?

Notas: Cargo el código con OpenOCD a través de JTAG, y uso GDB.

15voto

Alex Angas Puntos 20408

Antes de que puedas empezar a ejecutar código desde la RAM externa, tienes que inicializar primero el FSMC y copiar tu código en esa RAM, así que tienes que arrancar desde la flash de todos modos. Un linker script correctamente escrito (con una sección de código adicional enlazada en la dirección correcta pero colocada en flash, como la sección .data) ayudará mucho. Podrás marcar las funciones que necesites colocadas en la RAM con un correcto atributo de sección . Después de inicializar el FSMC, copie esa sección en la RAM de la misma manera que se copian los datos en su código de inicio. Todo lo que queda es llamar a sus funciones de RAM de manera normal.

Hay que tener en cuenta dos problemas serios con la ejecución desde una SRAM externa:

  1. Va a ser lento. Como 6...8 veces más lento que si se ejecuta desde la flash o incluso desde la SRAM interna según este . Esta arquitectura de microcontrolador simplemente no está optimizado para este tipo de uso .

  2. Algunos chips STM32 tienen un error de silicio en el que el acceso a FSMC por parte de dos maestros de bus bloquea el chip. Esto básicamente le impedirá utilizar DMA. Esto afecta al STM32F103 revisión Y, probablemente a otros chips también.

Así que yo no haría esto personalmente. Una vez más tengo que repetir en este sitio web que microcontrolador != CPU incluso si es un ARM.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X