Skip to content

GR712RC reference (for users)

A user-facing reference for the GR712RC SoC Lince models: the memory map, the peripheral instances and their bases, and the IRQ assignments. The full datasheet map is reproduced below for orientation; the What Lince actually models section shows the subset that gr712rc_config() instantiates today — that is the machine you get when you run --soc gr712rc or call the recipe.

Bases and IRQs here are exactly those wired by gr712rc_config() and declared in soc_family.hpp. For the GR740 quad-core map use --soc gr740 / gr740_config(); for how peripherals are declared and wired generally, see the peripheral reference.

What Lince actually models

gr712rc_config() builds these PeripheralSpec entries (in order), plus RAM and PROM. Everything else in the datasheet tables below exists on the silicon but is not instantiated by the recipe (you can add your own via add_peripheral / a custom PeripheralSpec).

Instance Base IRQ line(s) Notes
irqmp 0x80000200 — (the controller) Multiprocessor interrupt controller; created first so later specs can allocate IRQ bridges. EIRQ funnel for sources 16–31 (default level 12).
memctrl 0x80000000 FTMCTRL memory controller registers.
gptimer0 0x80000300 8 General-purpose timer unit (the recipe wires the shared timer IRQ 8). Programs the 1 MHz RTEMS tick.
apbuart0 0x80000100 2 Console UART → character_devices[0].
apbuart1 0x80100100 17 (EIRQ) character_devices[1].
apbuart2 0x80100200 18 (EIRQ) character_devices[2].
apbuart3 0x80100300 19 (EIRQ) character_devices[3].
apbuart4 0x80100400 20 (EIRQ) character_devices[4].
apbuart5 0x80100500 21 (EIRQ) character_devices[5].
grgpio0 0x80000900 1–15 GPIO port 1 (all 15 APB lines declared; interrupts masked at reset).
grgpio1 0x80000A00 1–15 GPIO port 2.

SoC-level recipe parameters: num_cores = 2, cpu_clock_hz = 80 MHz, ram_base = 0x40000000, ram_size = 16 MiB (the hello-gr712rc example bumps this to 64 MiB), prom_base = 0x0, prom_size = 32 MiB. Secondary core boots in power-down (released by software via the IRQMP). Use gr712rc_uniprocessor_config() for the same layout with one core.


Datasheet memory map and IRQ assignments

Reference tables built strictly from the GR712RC datasheet:

  • §1.3 / TABLE 1 — Internal memory map
  • §1.4 / TABLE 2 — Interrupt assignment (mirrored in §8.2.3 / TABLE 40)

Memory regions

Region Address range Bus Notes
FTMCTRL — PROM area 0x00000000 – 0x20000000 AHB External PROM via ROMSN[1:0], up to 32 MiB
FTMCTRL — I/O area 0x20000000 – 0x40000000 AHB Memory-mapped I/O via IOSN
FTMCTRL — SRAM/SDRAM area 0x40000000 – 0x80000000 AHB External SRAM (RAMSN[1:0]) and/or SDRAM (SDCSN[1:0])
APBCTRL-1 (APB bridge) 0x80000000 – 0x80100000 AHB Bridge to APB1
APBCTRL-2 (APB bridge) 0x80100000 – 0x80200000 AHB Bridge to APB2
DSU3 0x90000000 – 0xA0000000 AHB Debug support unit
FTAHBRAM (RAM area) 0xA0000000 – 0xA0100000 AHB On-chip 192 KiB RAM with EDAC
AHB plug&play 0xFFFFF000 – 0xFFFFFFFF AHB AMBA plug&play

APB1 peripherals (0x80000000 – 0x80100000)

Core Address range IRQ Function
FTMCTRL 0x80000000 – 0x80000100 Memory controller registers
APBUART-0 0x80000100 – 0x80000200 2 UART0 RX/TX
IRQMP 0x80000200 – 0x80000300 12 Multiprocessor interrupt controller (extended IRQ funnel)
GPTIMER 0x80000300 – 0x80000400 8-11 4-timer general-purpose timer unit (one IRQ per timer)
SPICTRL 0x80000400 – 0x80000500 13 SPI controller (shares IRQ 13 with GRSLINK)
CANMUX 0x80000500 – 0x80000600 CAN bus multiplexer control
GRGPREG 0x80000600 – 0x80000700 General-purpose register
GRSCS 0x80000700 – 0x80000800 Spacecraft clock synchronizer
GRSLINK 0x80000800 – 0x80000900 13 SLINK serial (shares IRQ 13 with SPICTRL)
GRGPIO-1 0x80000900 – 0x80000A00 1-15 GPIO port 1 (IRQs 3 & 4 are GPIO-only)
GRGPIO-2 0x80000A00 – 0x80000B00 1-15 GPIO port 2 (IRQs 3 & 4 are GPIO-only)
GRTM 0x80000B00 – 0x80000C00 29-30 Telemetry encoder (29 = data, 30 = time strobe)
I2CMST 0x80000C00 – 0x80000D00 28 I²C master
CLKGATE 0x80000D00 – 0x80000E00 Clock gating unit
GRETH 0x80000E00 – 0x80000F00 14 10/100 Ethernet MAC (shares IRQ 14 with B1553BRM, GRTC)
AHBSTAT 0x80000F00 – 0x80001000 1 AHB status / EDAC correctable error
APB1 PnP 0x800FF000 – 0x80100000 APB1 plug&play configuration

APB2 peripherals (0x80100000 – 0x80200000)

Core Address range IRQ Function
FTAHBRAM (regs) 0x80100000 – 0x80100100 On-chip RAM configuration register
APBUART-1 0x80100100 – 0x80100200 17 UART1 RX/TX
APBUART-2 0x80100200 – 0x80100300 18 UART2 RX/TX
APBUART-3 0x80100300 – 0x80100400 19 UART3 RX/TX
APBUART-4 0x80100400 – 0x80100500 20 UART4 RX/TX
APBUART-5 0x80100500 – 0x80100600 21 UART5 RX/TX
GRTIMER 0x80100600 – 0x80100700 7 Time-latch general-purpose timer
GRSPW2-0 0x80100800 – 0x80100900 22 SpaceWire link 0
GRSPW2-1 0x80100900 – 0x80100A00 23 SpaceWire link 1
GRSPW2-2 0x80100A00 – 0x80100B00 24 SpaceWire link 2
GRSPW2-3 0x80100B00 – 0x80100C00 25 SpaceWire link 3
GRSPW2-4 0x80100C00 – 0x80100D00 26 SpaceWire link 4
GRSPW2-5 0x80100D00 – 0x80100E00 27 SpaceWire link 5
APB2 PnP 0x801FF000 – 0x80200000 APB2 plug&play configuration

High AHB peripherals

Core Address range IRQ Function
B1553BRM 0xFFF00000 – 0xFFF01000 14 MIL-STD-1553B BC/RT/BM (shared IRQ 14)
GRTC 0xFFF10000 – 0xFFF10100 14 Telecommand decoder (shared IRQ 14)
Proprietary, do not access 0xFFF20000 – 0xFFF20100 Reserved
CANOC core 1 0xFFF30000 – 0xFFF30100 5 OpenCores CAN core 1
CANOC core 2 0xFFF30100 – 0xFFF30200 6 OpenCores CAN core 2

IRQ summary (TABLE 2 / TABLE 40)

IRQ Source(s) Function
1 AHBSTAT, GRGPIO-½ AHB bus error / EDAC correctable; GPIO IRQs 1-15
2 APBUART-0 UART0 RX/TX
3-4 GRGPIO-½ GPIO-only IRQs
5 CANOC core 1 OCCAN core 1
6 CANOC core 2 OCCAN core 2
7 GRTIMER Timer underflow
8-11 GPTIMER One IRQ per timer (4 timers)
12 IRQMP Extended IRQ funnel for sources 16-31
13 SPICTRL, GRSLINK Shared SPI / SLINK
14 B1553BRM, GRETH, GRTC Shared 1553 / Ethernet / Telecommand
15 Reserved (non-maskable on LEON3, use with care)
16 ASCS ASCS interrupt (chained via 12)
17-21 APBUART-1 to APBUART-5 UART RX/TX (chained via 12)
22-27 GRSPW2-0 to GRSPW2-5 SpaceWire RX/TX (chained via 12)
28 I2CMST I²C master (chained via 12)
29 GRTM Telemetry encoder data (chained via 12)
30 GRTM Telemetry encoder time strobe (chained via 12)

Notes: - Interrupts 16-31 reach the CPU as IRQ 12 (extended). Software reads the IRQMP extended-identification register to discover the real source. - IRQ 15 is non-maskable on LEON3 and reserved by most operating systems. - Multiple peripherals on the same IRQ (e.g. 13, 14) require chained handlers.