Acceso a los registros de la CPU mientras se reinicia con DSTREAM y DS5

2

El problema que tengo actualmente es que deseo probar SecureBoot en un dispositivo sin modificar permanentemente un conjunto de registros de seguridad internos con información de hash calculada. La forma en que la documentación sugiere que haga esto es cargar un blob de configuración de restablecimiento modificado para que la ejecución se "retenga" en el momento del arranque. Esto le da suficiente tiempo para usar JTAG para configurar los registros de interés antes de liberar manualmente la CPU.

Sin embargo, mi problema es que, mientras la CPU se reinicia, no puedo conectarme y leer los valores de registro. El dispositivo JTAG que estoy usando es el ARM DSTREAM junto con su entorno de desarrollo DS5. Durante el reinicio, el conjunto de herramientas identifica el dispositivo que debe "mantenerse en reinicio", pero todos los intentos de usar la función "navegador de memoria" no arrojan resultados.

Esto funciona bien, por supuesto, si la CPU está primero en estado de ejecución y yo interrumpo manualmente la ejecución antes de intentar leer la memoria.

tl; dr

¿Se pueden leer los valores de registro / contenido de memoria de una CPU a través de JTAG cuando el núcleo se mantiene en reinicio?

EDIT

Algunos de los detalles específicos sobre cómo configurar el dispositivo para que se mantenga en espera durante el arranque son muy específicos de este dispositivo, pero los núcleos se mantienen en estado de restablecimiento cuando están habilitados. El SoC es un QorIQ LS1043A de NXP. Este chip es una variante de cuatro núcleos del LS1021, que tiene una nota de aplicación para este aquí . La referencia para habilitar el estado de espera se indica como el ajuste BOOT_HO = 1 en la palabra de configuración de restablecimiento.

Todo lo que veo cuando intento leer de la memoria mientras los núcleos se mantienen en reinicio es lo siguiente, independientemente de la dirección que se lea:

    
pregunta sherrellbc

1 respuesta

2

El DS-5 admite el acceso a los registros del procesador mientras la lógica de no depuración del núcleo se mantiene en reinicio después de un reinicio en caliente. Esto se describe en términos generales en la Guía de configuración de hardware de depuración

Para este caso de uso específico, depende de cómo se secuencia el proceso de arranque para lograr esto internamente, y si el arranque en caliente es suficiente para proporcionar el acceso de depuración de una manera genérica. Con el hold reset bit establecido, el estado del procesador se mantiene después de que se restablezca el restablecimiento, hasta que se borre el bit.

Promoviendo un detalle a partir de los comentarios:

  

Resulta que tuve que decirle a DS5 que usara el espacio de nombres de la depuración   hardware. Este SoC específico tenía una interfaz AHB, por lo que el comando era   prefijado como tal. p.ej. AHB_0: < addr >

    
respondido por el Sean Houlihane

Lea otras preguntas en las etiquetas