No es frecuente que necesite / pueda hacer algo útil modificando el archivo de inicio del dispositivo que está usando. El archivo de inicio contiene las cosas que se ejecutan ANTES de que se inicie la función principal (utilizando la nomenclatura C), y hace cosas como:
> Establecer la pila y el tamaño del montón
> Definir débilmente las rutinas de servicio de interrupción por defecto
> Copie los datos de la ROM (Flash en la mayoría de los microcontroladores) a la RAM que debe estar en la RAM ANTES de que se inicie la ejecución principal.
- Desde una perspectiva científica, ¿cuánto es demasiado para aprender a la vez?
- Al aprender a programar, ¿cómo superar la brecha entre principiante e intermedio?
- ¿Cuáles son las mejores maneras para que un principiante completo aprenda el arte de escribir?
- Solo me quedan 2 semanas para volver a abrir la escuela. Hasta entonces, estoy planeando aprender programación. ¿Qué tipo de codificación debo aprender?
- ¿Cómo aprende un niño superdotado a leer muy temprano solo?
Modificar estos archivos es complicado y peligroso, ya que los archivos de inicio normalmente se escriben en ensamblaje y, por lo tanto, son específicos de la arquitectura y de la cadena de herramientas. En general, no debería necesitar modificar el archivo de inicio de su proyecto para obtener la funcionalidad que necesita.
Dicho esto, aquí hay algunas razones legítimas que he encontrado para modificar el archivo de inicio de un proyecto:
> Creación de un nuevo nombre de sección de memoria y rango para el ensamblado de GCC. Que yo sepa, esto solo puede hacerse en el archivo de inicio.
> Tomar decisiones en tiempo de ejecución sobre cómo manejar múltiples instancias del mismo ISR exacto. Como ejemplo, imagine un proyecto en el que tanto el cargador de arranque como el código de la aplicación en una MCU utilizan USB. Para reducir el tamaño del código, las funciones de control USB se almacenan en una parte especial de la ROM para que tanto el cargador de arranque como el código de la aplicación puedan usar la misma instancia del código de control USB. Esto significa que tendrá 2 versiones de ISR USB: una en el cargador de arranque y otra en la aplicación. Modificar el ISR de USB predeterminado en el archivo de inicio es una forma de manejar esto; puede verificar un indicador para determinar si la interrupción ocurrió mientras se ejecutaba el cargador de arranque o la aplicación, y llamar a la función apropiada para manejar la interrupción del USB.
Realmente no puedo pensar en ningún otro escenario en el que este archivo deba modificarse. En mi experiencia, esto no es una cosa común.
Por cierto, si realmente necesita hacer algo antes de que la función principal comience a ejecutarse, una opción sería usar el preprocesador.
#pragma startup
Hará esto, y no es necesario modificar el archivo de inicio.