Por qué mis dos núcleos Cortex-A9 no son coherentes en caché

Fuentes: Why aren't my two Cortex-A9 cores cache coherent?

En una entrada publicada el 22 de agosto de 2026 en su blog personal, el desarrollador conocido como JP relata su experiencia al retomar, tras siete años guardada, la placa de desarrollo Terasic DE0-Nano-SOC, un kit lanzado hacia 2015 que combina un SoC Altera Cyclone-V con FPGA (40 000 elementos lógicos), dos procesadores ARM Cortex-A9, 1 GiB de DDR3, Ethernet, ranura SD y puertos USB, entre otros. La placa carece de disipador activo y se calienta al tacto, por lo que el autor añadió un ventilador de 80 mm.

El artículo describe el proceso de arranque: el Boot ROM carga un preloader desde sectores específicos de la tarjeta SD en la OCRAM, que inicializa la DDR3 y eleva a U-Boot 2013.01.01, desde el cual el autor eliminó el kernel Linux para detenerse en el prompt de U-Boot y comunicarse por puerto serie con minicom.

A continuación, JP explica cómo escribió un binario Rust para AArch32 desde cero, apoyándose en la crate aarch32-rt: un script de enlace memory.x que ubica el código en la dirección 0x0010_0000 (para evitar el Boot ROM y la zona usada por U-Boot), reservas de pila para los distintos modos del procesador y un controlador minimalista de UART 16550 que reutiliza la configuración dejada por U-Boot en UART0. El texto incluye volcados reales del arranque con velocidades de reloj (MPU a 925 MHz, DDR a 400 MHz) y fragmentos de código fuente, y deja entrever como hilo conductor la pregunta del título: por qué los dos Cortex-A9 del SoC no se comportan como un sistema cache-coherent y qué implicaciones tiene esa característica para el software de bajo nivel.