Ejecutar código de RAM y no usar FLASH (ARM)

3

Tengo una aplicación para mi ARM7 que generalmente se graba en FLASH, y luego, en ejecución, se copia en la RAM (para ejecutarse un poco más rápido). Pero recuerdo que mi profesor una vez dijo que debería ejecutar mi programa desde la memoria RAM porque solo puedes grabar el FLASH muchas veces. Entonces, mi pregunta es: ¿existe alguna forma especial de grabar el programa para que pueda ejecutarse directamente desde la RAM (no mediante la copia desde FLASH)? Sé que podría usar un gestor de arranque personalizado, pero esa no es una opción. Puedo usar el cargador SAM-BA pero, según tengo entendido, se usa para actualizar el dispositivo, no se puede usar para ejecutar ningún código desde la RAM, y si pudiera, ¿es posible escribir directamente en la RAM?

    
pregunta Bart

1 respuesta

1

SAM-BA es un gestor de arranque, por lo que si tienes samba no necesitas reinventar otro. Sólo úsalo. Jtag generalmente funciona igual de bien para poder cargar programas en RAM y ejecutarlos. Eventualmente, aunque asumo que su aplicación deberá ejecutarse desde flash una vez que lo convierta en un proyecto / gadget o lo que sea. No se requiere pero se supone. podría envolver su versión de ram con una copia pequeña al programa de ram.

Le recomiendo que use sam-ba o lo que sea para borrar la memoria flash del usuario para que Samba no intente cargar eso y asegurarse de que el chip se encuentre en un estado conocido. No estoy seguro de Samba, pero es posible que una vez que el gestor de arranque no detecte un programa en flash, pueda que los relojes o los periféricos de configuración (uart) no se puedan tener si se hubiera copiado el flash, por lo que aún podría terminar en una situación. su programa probado en ram funciona pero una vez que lo copie desde un programa basado en flash o lo ejecute desde flash, es posible que no funcione. algunos ciclos de flash pueden ser necesarios para terminar la prueba. o puedes hacer tu propio gestor de arranque que ejecuta samba y entonces estás en un estado conocido. Mi preferencia es una cosa tonta de xmodem, el gestor de arranque hace lo suficiente para configurar el uart y comenzar a esperar una descarga de xmodem, luego se descarga a una dirección conocida en el ram. a continuación, reemplace el descargador xmodem con la copia a ram y ejecute. De esa manera no hay sorpresas.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas