The MCU32 / 32BIT_MCU (also called MHEG5 / VD_MHEG5 respectively) blocks are used to control the underlying CPU (usually the OpenRISC one) and control some aspects of their integraion with the rest of the system.
The MCU32 / MHEG5 is also referred to as “AEON”.
This block allows to:
This block usually can be seen at these RIU addresses:
reg80:
b0 = "NCDRAMPOSTW" - NC write DRAM post write and merge
b1 = "IOWINORDER" - Writes to IO/MIU are in-order
b4 = "WRPROTEN" - Write protection region enable
reg92:
??
*
* If the address masked by DRAMx_MASK matches DRAMx_BASE,
* the write will be ignored in case WRPROTEN is set.
* - i.e. write_enable = wr & !(WRPROTEN && ((addr & DRAMx_MASK) == DRAMx_BASE))
*
* The comparsion is done with the upper 16 bits of the address (i.e. bits 16-31)
*
regC0-C1:
b0~b15 = DRAM1_BASE
regC2-C3:
b0~b15 = DRAM1_MASK
regC4-C5:
b0~b15 = DRAM2_BASE
regC6-C7:
b0~b15 = DRAM2_MASK
*
* All relating to the mapping of the MIU into the instruction bus.
* No idea why it's all scattered around..
*
regE2-E3:
b8~b15 = Code Memory MIU base address [27:20]
regE4-E5:
b0~b15 = Code Memory MIU base address [19:4]
regE6-E7:
b0 = <cleared>
b1 = <set>
b2 = <set>
b8~b9 = Code Memory MIU base address [29:28]
*
* When (addr & QMEM_DMASK) == QMEM_DADDR evaluates to true,
* the QMEM is going to be accessed on the data bus.
*
* The QMEM is 4 KiB long on AEON and is 8 KiB long on VPU.
*
regE8-EB:
b0~b31 = QMEM_DMASK
regEC-EF:
b0~b31 = QMEM_DADDR
regF0:
b0 = Enable the CPU
b1 = Software reset (0 = assert)
b2 = Instruction bus bridge endian swap
b3 = Data bus bridge endian swap (doesn't seem to work?)
b4 = MIU read priority
b5 = MIU write priority
b6 = Force instruction access from SPI flash
b7 = Force instruction access from MIU
regF2-F3:
b0~b15 = DBG_SEL
* setting b8~b15 to 0xDB enables debug, apparently.
*
* Offset within MIU to the start of the area seen by the CPU
* in the units of the MIU words (which are usually 8 bytes long)
* Note that this is for the MIU mapping on the data bus, for the instruction
* bus mapping refer to regE2-E7 above.
*
regF4-F7:
b0~b31 = SDR_BASE (MIU address [:3])
*
* Base address of the register bus, bits [31:16]
* In case of the VPU, that's some VPU specific bus, otherwise it's an ordinary RIU bus.
*
regF8-F9:
b0~b15 = REG32_BASE
regFA-FD:
b0~b31 = SDR_MAP
*
* Base address of the SPI flash mapping, bits [31:16]
*
* On AEON only the top 8 bits (i.e. address bits [31:24]) are effective,
* while VPU indeed can only access the first 64 KiB of SPI flash.
*
regFE-FF:
b0~b15 = SPI_BASE