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 computada. La forma en que la documentación sugiere que se haga esto es cargar un blob de configuración de restablecimiento modificado de tal manera que la ejecución se "retiene" en el momento del arranque. Esto le da suficiente tiempo para utilizar JTAG para establecer los registros de interés antes de liberar manualmente la CPU.
Sin embargo, mi problema es que mientras la CPU está en reset no soy capaz de conectarme y leer los valores de los registros. El dispositivo JTAG que estoy utilizando es el ARM DSTREAM junto con su entorno de desarrollo DS5. Mientras está en reinicio, el conjunto de herramientas identifica el dispositivo como "mantenido en reinicio", pero todos los intentos de utilizar la función de "navegador de memoria" no devuelven ningún resultado.
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
¿Pueden leerse los valores de los registros/el contenido de la memoria de una CPU a través de JTAG cuando el núcleo se mantiene en estado de reinicio?
EDITAR
Algunos de los detalles de cómo configurar el dispositivo para que se mantenga apagado en el arranque son muy específicos de este dispositivo, pero los núcleos se mantienen en un estado de reinicio 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 a la habilitación del estado de retención se establece como la configuración de BOOT_HO=1 en la palabra de configuración de reinicio.
Todo lo que veo al intentar leer de la memoria mientras los núcleos se mantienen en reset es lo siguiente, independientemente de la dirección que se lea: