¿Puede un gestor de arranque modificar la palabra de configuración al programar el código de usuario en la MCU?

2

En estos días estaba probando un gestor de arranque (AN1157.PDF) en un pic24fj256gb110 ¡El gestor de arranque puede descargar el código de la aplicación de usuario a través de uart y está funcionando bien!

Pero hay una pregunta: la palabra de configuración del gestor de arranque debe ser la misma que la palabra de configuración del código de la aplicación del usuario. Cuando cambio la palabra de configuración del código de la aplicación y la descargo a través del gestor de arranque, la palabra de configuración no se puede escribir en el mcu. ¿Se puede cambiar la palabra de configuración cuando se está ejecutando la MCU? (No protegí ningún código)

    
pregunta user41614

2 respuestas

4

Depende del dispositivo PIC24 específico, pero en el caso del PIC24FJ256GB110, se pueden reprogramar. Esto se debe a que los bits de configuración se implementan en la memoria volátil a partir de 0xF80000 y se copian desde otro conjunto de ubicaciones llamadas palabras de configuración de Flash cada vez que se reinicia el dispositivo. Si su gestor de arranque modifica estas palabras de configuración de Flash y luego realiza un restablecimiento, el código de la aplicación utilizará los nuevos valores.

La ubicación de las palabras de configuración de Flash varía según el tamaño de la memoria flash, pero para el PIC24FJ256GB110 son:

Configuration Word 1: 0x2ABFE
Configuration Word 2: 0x2ABFC
Configuration Word 3: 0x2ABFA

Supongo que estas ubicaciones deben programarse utilizando las instrucciones de escritura de tabla que probablemente ya esté utilizando en el cargador de arranque.

De la segunda referencia citada a continuación:

Como se mencionó anteriormente, los cambios en los bits de configuración del dispositivo real durante el tiempo de ejecución provocar un restablecimiento de configuración no coincidente. Esto no evita cambios en la configuración de Flash. Palabras durante el funcionamiento normal. Esto también hace posible que una aplicación cambie su configuración de hardware escribiendo nuevos datos en estas palabras de configuración de Flash, y luego ejecutando un comando RESET, lo que resulta en la recarga de los nuevos valores.

Referencias:

Sección 25.0 (CARACTERÍSTICAS ESPECIALES) de la PIC24FJ256GB110 Familia Hoja de datos

Sección 32. Integración de dispositivos de alto nivel

    
respondido por el tcrosley
2

Generalmente no.

La "palabra de configuración" se suele llamar "fusibles". Porque en los viejos tiempos, las tesis eran fusibles reales que se quemaban una vez que se programaban externamente. Y este no fue un proceso reversible.

En las MCU reales, los fusibles generalmente no están hechos de fusibles reales, pero su significado sigue siendo el mismo. Normalmente se utilizan para configurar cosas como:

  • Tipo de oscilador para usar en el arranque
  • desde qué memoria arrancar (interna o externa)
  • Código de protección
  • ¿Se permite el depurador?

Este es el tipo de cosa que debe configurarse antes de ejecutar la primera línea de código.

Imagina una MCU sin ningún oscilador interno. Por lo tanto, tiene que configurar el controlador del oscilador externo correctamente o el oscilador no se iniciará y usted estará bloqueado. El software no puede hacer esto porque todavía no tiene un oscilador ... Se usan fusibles.

Ahora imagine que puede cambiar el fusible de su software. ¿Qué pasa si comete un error en su código? ¿Si hay una falla en el tiempo de ejecución y modifica la configuración de su oscilador de inicio? Su dispositivo está roto.

Bueno, las MCU modernas generalmente tienen un oscilador interno y la configuración del oscilador ya no está en los fusibles. Puede ejecutar su código usando el oscilador interno de inicio predeterminado y luego configurar el resto en su código. Las cosas han evolucionado. Ese fue solo un ejemplo de la utilidad de tener algo que no se puede cambiar en el tiempo de ejecución.

Otra razón: seguridad y protección IP. Imagina que es posible cambiar la protección de lectura o el bit de habilitación del depurador: Uno podría forzar fácilmente a tu MCU a habilitar esos bits y robar tu binario que contiene tu IP.

Una vez que haya quemado el fusible de protección de lectura, debe asegurarse de que no haya forma de volver atrás y leer el contenido del chip.

En conclusión, generalmente no es posible reprogramar los bits de configuración en tiempo de ejecución. De lo contrario, habrían sido registros de configuración regulares.

    
respondido por el Blup1980

Lea otras preguntas en las etiquetas