JAJAA48 October 2025 TDA4VM
オフセット パリティ エラーは、HWA_OFFSET レジスタでパリティの不一致が検出されたときに発生します。HWA_OFFSET パリティ エラーを注入するには、次の手順を実行します。
__HWA_OFFSET_REG get_corrupted_offset(void)
{
__HWA_OFFSET_REG mma_offset_reg = __gen_HWA_OFFSET_REG();
mma_offset_reg.A_LUT_VAL_1 = 0x01;
return mma_offset_reg; //return the corrupted offset
}
#pragma FUNC_CANNOT_INLINE(offset_parity_test)
#pragma FUNCTION_OPTIONS(offset_parity_test,"--opt_level=0")
void offset_parity_test(void)
{
__HWA_CONFIG_REG_v1 mma_config_reg;
mma_config_reg = __gen_HWA_CONFIG_REG_v1();
mma_config_reg.A_ALUTEN = __MMA_A_CONFIG_LUT2;
mma_config_reg.PARITYCTRL = __MMA_NORMAL;
__HWA_OFFSET_REG offset_reg;
offset_reg = __gen_HWA_OFFSET_REG();
__HWAOPEN(mma_config_reg,offset_reg,__MMA_OPEN_FSM_RESET);
__HWAADV();
__HWAADV();
__HWAADV();
__HWAADV();
__HWA_CONFIG_REG_v1 mma_config_1;
mma_config_1 = __gen_HWA_CONFIG_REG_v1();
mma_config_1.A_ALUTEN = __MMA_A_CONFIG_LUT2;
//Parity computation disabled and parity checking enabled.
mma_config_1.PARITYCTRL = __MMA_PNCM_CK;
__HWA_OFFSET_REG offset_reg2 = get_corrupted_offset(); //This gets the corrupted offset
__HWAADV();
__HWAADV();
__HWAADV();
__HWAADV();
__HWAOPEN(mma_config_1,offset_reg2,__MMA_OPEN_FSM_RESET);
__HWAADV();
__HWAADV();
__HWAADV();
__HWAADV();
__HWAXFER(__MMA_XFER_SRC_HWA_OFFSET);
__HWAADV();
__HWAADV();
__HWAADV();
__HWARCV(0);
__asm(" NOP");
__asm(" NOP");
}