ra8_err_t ra8_cnecc_attach_handler(ra8_cnecc_error_fn_t fn, void *ctx)
Attach a callback for CNECC fault events.
ra8_err_t ra8_cnecc_set_counter_mirror(uint8_t instance, ra8_cnecc_counters_t *mirror)
Attach a BBR-mirrored counter triple for one instance.
ra8_err_t ra8_cnecc_disable_instance(uint8_t instance)
Disable error judgment for one instance only.
void ra8_cnecc_dispatch_overflow(uint8_t instance)
Force-bump the overflow counter (used by the ISR trampoline).
ra8_err_t ra8_cnecc_enter_standby(void)
Software-standby preparation (HUM 42.5.1 p 2876).
ra8_err_t ra8_cnecc_open(void)
One-shot CNECC bring-up using the driver's default config.
ra8_err_t ra8_cnecc_detach_isr(void)
Tear down the ICU vector wiring established by ra8_cnecc_attach_isr.
ra8_err_t ra8_cnecc_get_counters(uint8_t instance, ra8_cnecc_counters_t *out)
Read the cumulative fault counters for one instance.
ra8_err_t ra8_cnecc_inject_fault(uint8_t instance, const ra8_cnecc_inject_t *req)
Run the HUM Ch 42.3.2 fault-injection sequence for one instance.
ra8_err_t ra8_cnecc_enable_instance(uint8_t instance)
Enable error judgment for one instance only.
ra8_err_t ra8_cnecc_test_mode_disable(uint8_t instance)
Force EC710TMC = 0x8000 to leave fault-injection mode.
ra8_err_t ra8_cnecc_init(const ra8_cnecc_config_t *cfg)
Initialise the CNECC driver and configure both instances.
void(* ra8_cnecc_error_fn_t)(void *ctx, uint8_t instance, bool is_2bit, uint16_t err_addr)
CANFD ECC fault callback signature.
ra8_err_t ra8_cnecc_set_correction_permission(uint8_t instance, bool correct_1bit)
Update the 1-bit correction permission for one instance.
ra8_err_t ra8_cnecc_clear_status(uint8_t instance)
Clear the latched ECC fault state for one instance.
ra8_err_t ra8_cnecc_set_irq_enables(uint8_t instance, bool irq_1bit, bool irq_2bit)
Update the IRQ enable bits for one instance without touching any other CTL field.
void ra8_cnecc_dispatch(uint8_t instance, bool is_2bit, uint16_t err_addr)
Dispatch a CNECC fault event to the installed handler.
ra8_err_t ra8_cnecc_reset_counters(uint8_t instance)
Zero the cumulative fault counters for one instance.
ra8_err_t ra8_cnecc_test_mode_active(uint8_t instance, bool *out)
Query whether fault injection is currently armed.
void ra8_cnecc_isr_handler(void *ctx)
Generic ICU trampoline for both CANn_MRAM_ERI vectors.
ra8_err_t ra8_cnecc_verify(uint32_t addr, uint32_t len, uint32_t expected_ecc)
Verify a region's ECC tag matches an expected value.
ra8_err_t ra8_cnecc_deinit(void)
Tear down both CNECC instances and gate the CANFD MSTP bits.
ra8_err_t ra8_cnecc_attach_isr(uint8_t priority)
Wire the CANn_MRAM_ERI ICU vectors to the driver dispatcher.
ra8_err_t ra8_cnecc_exit_standby(void)
Software-standby exit (HUM 42.5.2 p 2876).
ra8_err_t ra8_cnecc_get_status(uint8_t instance, ra8_cnecc_status_t *out)
Snapshot the current ECC state of one CNECC instance.
ra8_err_t ra8_cnecc_compute(uint32_t addr, uint32_t len, uint32_t *out_ecc)
Compute a 32-bit ECC code over a (addr, len) memory region.
CANFD ECC (CNECC) register layout for the RA8D2.
@ k_ra8_cnecc_instance_count
ECCMB0 + ECCMB1.
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
NVIC + ICU IELSR allocator.
Top-level driver configuration.
ra8_cnecc_instance_cfg_t instances[k_ra8_cnecc_instance_count]
Per-instance settings.
Cumulative per-instance fault counters.
uint32_t one_bit_count
Lifetime 1-bit fault count for this instance.
uint32_t two_bit_count
Lifetime 2-bit fault count for this instance.
uint32_t overflow_count
Lifetime ECOVFF count for this instance.
Fault-injection request descriptor.
uint32_t substitute
32-bit value stored in EC710TED.
bool one_bit_flip
true => 1-bit error variant; false => 2-bit.
Per-instance ECC configuration descriptor.
bool enable
true => leave ECERVF set after init.
bool irq_2bit
true => raise IRQ on every 2-bit fault.
bool correct_1bit
true => HW corrects 1-bit faults (clears EC1ECP).
bool irq_1bit
true => raise IRQ on every 1-bit fault.
Snapshot of one CNECC instance, returned by ra8_cnecc_get_status.
uint16_t reserved0
Padding for alignment.
bool overflow
Live ECOVFF: address-capture overflow.
bool err_present
Live ECEMF: present-cycle error.
uint32_t two_bit_count
Cumulative 2-bit fault count.
bool irq2_enabled
Live EC2EDIC.
uint32_t raw_ctl
Live EC710CTL value.
bool addr_is_2bit
true => last_addr was a 2-bit fault.
bool judgment_active
Live ECERVF: judgment currently enabled.
uint16_t raw_tmc
Live EC710TMC value.
bool irq1_enabled
Live EC1EDIC.
uint16_t last_addr
Last captured ECEAD[9:0] RAM offset.
bool err_1bit
Live ECER1F: 1-bit fault latched.
uint32_t one_bit_count
Cumulative 1-bit fault count.
bool addr_is_1bit
true => last_addr was a 1-bit fault.
uint32_t overflow_count
Cumulative ECOVFF count.
bool test_mode
Live ECTMCE: fault-injection currently armed.
bool err_2bit
Live ECER2F: 2-bit fault latched.
bool correct_enabled
true => 1-bit correction enabled (EC1ECP=0).