94typedef enum : uintptr_t {
112typedef enum : uint32_t {
131typedef enum : uint32_t {
153typedef enum : uint8_t {
166typedef enum : uint8_t {
183typedef enum : uint8_t {
198typedef enum : uint64_t {
218typedef enum : uint16_t {
239typedef enum : uint8_t {
259typedef enum : uint32_t {
283typedef enum : uint8_t {
295typedef enum : uint8_t {
310typedef enum : uint8_t {
332typedef enum : uint8_t {
352typedef enum : uint8_t {
378typedef enum : uint16_t {
406typedef enum : uint32_t {
424typedef enum : uint32_t {
439typedef enum : uint32_t {
462typedef enum : uint16_t {
474typedef enum : uint8_t {
547 volatile uint8_t
_r0[0x010];
600 const uintptr_t base = (uintptr_t)regs;
614 const uintptr_t base = (uintptr_t)regs;
static volatile uint8_t * ra8_sram_eccrgn_ptr(volatile r_sram_regs_t *regs, uint8_t bank)
Indexed write helper: SRAMECCRGNn slot.
ra8_sram_eccrgn_value_t
SRAMECCRGNn.ECCRGN field encodings.
@ k_ra8_sram_eccrgn_384kb
011b – first 384 KB of bank.
@ k_ra8_sram_eccrgn_512kb
100b – whole 512 KB bank.
@ k_ra8_sram_eccrgn_off
000b – no ECC target region.
@ k_ra8_sram_eccrgn_field_msk
ECCRGN[2:0] bit mask.
@ k_ra8_sram_eccrgn_128kb
001b – first 128 KB of bank.
@ k_ra8_sram_eccrgn_256kb
010b – first 256 KB of bank.
ra8_sram_esr_bit_t
SRAMESR / SRAMESCLR bit positions for each bank.
@ k_ra8_sram_err_all_2bit
Union of all 4 2-bit flags.
@ k_ra8_sram_err_bank3_1bit
ERR30 – SRAM3 1-bit.
@ k_ra8_sram_err_bank0_1bit
ERR00 – SRAM0 1-bit.
@ k_ra8_sram_err_bank3_2bit
ERR31 – SRAM3 2-bit.
@ k_ra8_sram_err_bank0_2bit
ERR01 – SRAM0 2-bit.
@ k_ra8_sram_err_bank1_2bit
ERR11 – SRAM1 2-bit.
@ k_ra8_sram_err_all_mask
Union of all 8 error bits.
@ k_ra8_sram_err_bank1_1bit
ERR10 – SRAM1 1-bit.
@ k_ra8_sram_err_bank2_1bit
ERR20 – SRAM2 1-bit.
@ k_ra8_sram_err_bank2_2bit
ERR21 – SRAM2 2-bit.
@ k_ra8_sram_err_all_1bit
Union of all 4 1-bit flags.
ra8_sram_wtsc_mask_t
SRAMWTSC bit masks.
@ k_ra8_sram_wtsc_wten
Insert one wait state on SRAM access.
@ k_ra8_sram_wtsc_msk
All R/W bits in SRAMWTSC.
ra8_sram_addr_t
Memory-mapped base addresses for the SRAM windows.
@ k_ra8_sram_data_base_ns
Non-Secure SRAM data alias.
@ k_ra8_sram_base_addr
Secure SRAM control window.
@ k_ra8_sram_base_addr_ns
Non-Secure SRAM control window.
@ k_ra8_sram_data_base_addr
Secure SRAM data alias (bank 0).
@ k_ra8_sram_cpscu_base_addr
Secure CPSCU SRAM window.
@ k_ra8_sram_cpscu_base_ns
Non-Secure CPSCU SRAM window.
ra8_sram_ecc_word_t
Granularity of ECC-protected SRAM accesses.
@ k_ra8_sram_ecc_word_bytes
64-bit ECC word width (bytes).
@ k_ra8_sram_ecc_word_shift
log2(word bytes), for size>>shift loops.
static volatile uint8_t * ra8_sram_cr_ptr(volatile r_sram_regs_t *regs, uint8_t bank)
Indexed write helper: SRAMCRn slot.
ra8_sram_sabar_limit_t
Boundary-address limits per bank for SRAMSABARn.
@ k_ra8_sram_sabar_field_mask
b20..b13 are the SA boundary.
@ k_ra8_sram_sabar_bank1_full
Whole SRAM1 Secure.
@ k_ra8_sram_sabar_bank0_full
Whole SRAM0 Secure.
@ k_ra8_sram_sabar_align_mask
b12..b0 must be 0.
@ k_ra8_sram_sabar_bank2_full
Whole SRAM2 Secure.
@ k_ra8_sram_sabar_bank3_full
Whole SRAM3 Secure.
ra8_sram_ecc_region_off_t
Per-bank offsets into the SRAM ECC syndrome alias.
@ k_ra8_sram_ecc_bank012_sz
64 KB ECC syndrome region.
@ k_ra8_sram_ecc_bank1_off
SRAM1 ECC region @ 0x221B_0000.
@ k_ra8_sram_ecc_bank2_off
SRAM2 ECC region @ 0x221C_0000.
@ k_ra8_sram_ecc_bank3_off
SRAM3 ECC region @ 0x221D_0000.
@ k_ra8_sram_ecc_bank3_sz
16 KB ECC syndrome region for B3.
@ k_ra8_sram_ecc_bank0_off
SRAM0 ECC region @ 0x221A_0000.
ra8_sram_bank_offset_t
Per-bank offsets into the SRAM data alias.
@ k_ra8_sram_bank2_data_off
SRAM2 starts at 0x2210_0000.
@ k_ra8_sram_bank1_data_off
SRAM1 starts at 0x2208_0000.
@ k_ra8_sram_bank012_size
512 KB per bank for 0/1/2.
@ k_ra8_sram_bank3_size
128 KB for SRAM3.
@ k_ra8_sram_bank3_data_off
SRAM3 starts at 0x2218_0000.
@ k_ra8_sram_bank0_data_off
SRAM0 starts at 0x2200_0000.
ra8_sram_cr_mask_t
SRAMCRn bit masks (HUM Ch 58.2.7, p 3532).
@ k_ra8_sram_cr_mask_eccmod
ECCMOD[1:0] @ [3:2].
@ k_ra8_sram_cr_mask_e1stsen
E1STSEN bit 4.
@ k_ra8_sram_cr_mask_all
Union of the four R/W bits above.
@ k_ra8_sram_cr_mask_tstbyp
TSTBYP bit 7.
@ k_ra8_sram_cr_mask_oad
OAD bit 0.
ra8_sram_iclk_threshold_t
ICLK frequency thresholds where SRAMWTSC.WTEN must flip to 1.
@ k_ra8_sram_iclk_threshold_250mhz
250 MHz max -> 125 MHz threshold.
@ k_ra8_sram_iclk_threshold_150mhz
150 MHz max -> 75 MHz threshold.
@ k_ra8_sram_iclk_threshold_200mhz
200 MHz max -> 100 MHz threshold.
@ k_ra8_sram_iclk_max_default
Default RA8D2 max ICLK = 250 MHz.
static volatile r_sram_cpscu_regs_t * ra8_sram_cpscu_regs(void)
Get pointer to the (Secure) CPSCU SRAM security register block.
ra8_sram_cr_bit_t
SRAMCRn bit positions.
@ k_ra8_sram_cr_bit_eccmod0
ECCMOD low bit.
@ k_ra8_sram_cr_bit_oad
Operation after error detection.
@ k_ra8_sram_cr_bit_tstbyp
ECC test bypass.
@ k_ra8_sram_cr_bit_eccmod1
ECCMOD high bit.
@ k_ra8_sram_cr_bit_e1stsen
1-bit error status enable.
ra8_sram_prcr_key_t
SRAMPRCR_S/NS half-word values for unlock / lock.
@ k_ra8_sram_prcr_lock
KW=0xA5, PR=0 – writes blocked.
@ k_ra8_sram_prcr_pr_msk
PR write-enable bit.
@ k_ra8_sram_prcr_kw
KW field bits (15:8).
@ k_ra8_sram_prcr_unlock
KW=0xA5, PR=1 – writes enabled.
ra8_sram_indexed_t
Stride / base offsets for sparse SRAMCR / SRAMECCRGN slots.
@ k_ra8_sram_sparse_stride
Stride between sparse slots.
@ k_ra8_sram_eccrgn_base_off
SRAMECCRGN0 byte offset.
@ k_ra8_sram_cr_base_off
SRAMCR0 byte offset.
ra8_sram_esar_bit_t
SRAMESAR bit positions.
@ k_ra8_sram_esar_writable
Union of defined bits.
@ k_ra8_sram_esar_bit_esa
SRAMESA – ECC region Non-Secure.
ra8_sram_cr_self_test_t
SRAMCRn values used by the ECC decoder self-test sequence.
@ k_ra8_sram_cr_self_test_phase_write
ECCMOD=10, all others 0.
@ k_ra8_sram_cr_self_test_phase_bypass
TSTBYP=1, ECCMOD=00.
@ k_ra8_sram_cr_self_test_phase_verify
ECCMOD=11, E1STSEN=1.
ra8_sram_sar_bit_t
SRAMSAR bit positions.
@ k_ra8_sram_sar_bank_msk
SRAMSA0..SRAMSA3 union.
@ k_ra8_sram_sar_bit_wtsa
SRAMWTSC Non-Secure.
@ k_ra8_sram_sar_bit_sa1
SRAM1 register set Non-Secure.
@ k_ra8_sram_sar_bit_sa3
SRAM3 register set Non-Secure.
@ k_ra8_sram_sar_bit_sa2
SRAM2 register set Non-Secure.
@ k_ra8_sram_sar_writable
Union of all defined bits.
@ k_ra8_sram_sar_bit_sa0
SRAM0 register set Non-Secure.
ra8_sram_pad_t
Reserved-byte gap sizes used inside the SRAM control register block and CPSCU window.
@ k_ra8_sram_cpscu_pad_after_sabar
+0x410..+0x50F gap (bytes).
@ k_ra8_sram_pad_wtsc_to_cr
+0x09..+0x0F gap (bytes).
@ k_ra8_sram_pad_eccrgn_sparse
+0x34..+0x3F sparse RGNn.
@ k_ra8_sram_pad_cr_sparse_bytes
+0x14..+0x1F sparse SRAMCRn.
@ k_ra8_sram_cpscu_pad_sramsar
+0x014..+0x3FF gap (bytes).
static uint32_t ra8_sram_bank_size_bytes(uint8_t bank)
Per-bank data-region size in bytes.
static volatile uint64_t * ra8_sram_bank_data_ptr(uint8_t bank)
Per-bank data window helper: pointer to the start of the data alias.
ra8_sram_ear_pair_t
Number of error-address registers per bank (1-bit + 2-bit).
@ k_ra8_sram_ear_pair_count
[bank][1-bit, 2-bit].
@ k_ra8_sram_ear_slot_1bit
SRAMEARn0 – first 1-bit error.
@ k_ra8_sram_ear_slot_2bit
SRAMEARn1 – first 2-bit error.
ra8_sram_bank_count_t
Number of SRAM banks (SRAM0..SRAM3).
@ k_ra8_sram_bank_count
SRAM0, SRAM1, SRAM2, SRAM3.
static uint32_t ra8_sram_bank_ecc_size_bytes(uint8_t bank)
Per-bank ECC syndrome region size in bytes.
ra8_sram_cr_eccmod_t
Encoded SRAMCRn.ECCMOD field values (already shifted to [3:2]).
@ k_ra8_sram_eccmod_disabled
00b<<2 = 0x00 (ECC off).
@ k_ra8_sram_eccmod_no_check
10b<<2 = 0x08 (ECC, no check).
@ k_ra8_sram_eccmod_with_chk
11b<<2 = 0x0C (ECC + checking).
static volatile r_sram_regs_t * ra8_sram_regs(void)
Get pointer to the (Secure) SRAM control register block.
ra8_sram_fill_pattern_t
Fill word for the deterministic zero-init pass.
@ k_ra8_sram_zero_init_word
Default fill pattern.
Memory layout of the CPSCU SRAM security window.
volatile uint32_t SRAMSAR
+0x010 SRAM register security.
volatile uint8_t _r2[k_ra8_sram_cpscu_pad_after_sabar]
+0x410..+0x50F Reserved.
volatile uint32_t SRAMSABAR[k_ra8_sram_bank_count]
+0x400..+0x40F Bank boundary.
volatile uint32_t _r3
+0x514 Padding to round size.
volatile uint8_t _r1[k_ra8_sram_cpscu_pad_sramsar]
+0x014..+0x3FF Reserved.
volatile uint8_t _r0[0x010]
+0x000..+0x00F Reserved.
volatile uint32_t SRAMESAR
+0x510 ECC region security.
Memory layout of the SRAM control window.
volatile uint16_t SRAMESR
+0x40 ECC error status.
volatile uint16_t _r0
+0x02 Padding.
volatile uint8_t _r3[k_ra8_sram_pad_cr_sparse_bytes]
+0x14..+0x1F Pad for sparse CR slots.
volatile uint16_t SRAMPRCR_S
+0x00 Secure write-protect.
volatile uint8_t _r7[4]
+0x44..+0x47 Reserved.
volatile uint8_t _r2[k_ra8_sram_pad_wtsc_to_cr]
+0x09..+0x0F Padding.
volatile uint8_t SRAMWTSC
+0x08 Wait-state control.
volatile uint8_t _r9[4]
+0x4C..+0x4F Reserved.
volatile uint16_t _r1
+0x06 Padding.
volatile uint16_t _r8
+0x4A Padding.
volatile uint32_t SRAMEAR[k_ra8_sram_bank_count][k_ra8_sram_ear_pair_count]
+0x50..+0x7F Error addresses.
volatile uint8_t _r5[k_ra8_sram_pad_eccrgn_sparse]
+0x34..+0x3F Padding for sparse RGN slots.
volatile uint16_t SRAMESCLR
+0x48 ECC error status clear.
volatile uint8_t SRAMCR[k_ra8_sram_bank_count]
+0x10..+0x13 (sparse, see _r3).
volatile uint8_t _r4[16]
+0x20..+0x2F Reserved.
volatile uint8_t SRAMECCRGN[k_ra8_sram_bank_count]
+0x30..+0x33 (sparse, see _r5).
volatile uint16_t _r6
+0x42 Padding.
volatile uint16_t SRAMPRCR_NS
+0x04 Non-Secure write-protect.