目录
错误1:
原因及解决方案:
报错2 :
解决方案:
报错3:
解决方案:
报错4:
解决方案:
报错5:
解决方案:
报错6:
解决方案:
报错7:
解决方案:
错误1:

IT_pwm_drv_bb_input01/IT_pwm_drv_bb_input01.c:53: error: I9070 – incomplete type "struct pwm_bb_register_pointers [4]" is not allowed
typedef struct expected_pwm_drv_bb_av_struct { enum pwm_bb_phase ref_pwm_bb_phase_map_hrtim[4]; u_32 ref_pwm_bb_OENR_bits[4]; u_32 ref_pwm_bb_ODISR_bits[4]; struct pwm_bb_register_pointers ref_pwm_bb_reg_ptrs[4]; } expected_pwm_drv_bb_av_struct;
原因及解决方案:
原因:没找到struct pwm_bb_register_pointers
解决方案:
PRIVATE const struct pwm_bb_register_pointers
{
volatile struct HRTIM_COMMON_tag * common;
volatile struct HRTIM_TIMER_tag * tim;
} pwm_bb_reg_ptrs[PWM_BB_HRTIM_PHASE_COUNT] =
{
#ifndef CANTATA_TESTING
{
®_HRTIM2_COMMON,
®_HRTIM2_TIMERA
},
{
®_HRTIM2_COMMON,
®_HRTIM2_TIMERB
},
{
®_HRTIM2_COMMON,
®_HRTIM2_TIMERC
},
{
®_HRTIM2_COMMON,
®_HRTIM2_TIMERE
}
#else
{
&Cantata_REG_HRTIM2_COMMON,
&Cantata_REG_HRTIM2_TIMERA
},
{
&Cantata_REG_HRTIM2_COMMON,
&Cantata_REG_HRTIM2_TIMERB
},
{
&Cantata_REG_HRTIM2_COMMON,
&Cantata_REG_HRTIM2_TIMERC
},
{
&Cantata_REG_HRTIM2_COMMON,
&Cantata_REG_HRTIM2_TIMERE
}
#endif
};
报错2 :
c:/qa_systems/cantata/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: IT_pwm_drv_bb_input01/IT_pwm_drv_bb_input01.o:IT_pwm_drv_bb_input01.ci.sm.c:(.text+0x82b): undefined reference to `ACCESS_FUNCTION_pwm_drv_bb_PWM_BB_ConfigureHRTIM'
collect2.exe: error: ld returned 1 exit status

解决方案:
这个说明无法直接测试PWM_BB_ConfigureHRTIM函数,需要通过其他方法测试。比如说搜索PWM_BB_ConfigureHRTIM函数,看其他函数是否调用该函数。
报错3:
ITPortOutput01/ITPortOutput01.c:271: error: I9144 – a value of type "int" cannot be used to initialize an entity of type"PortConfigType" (aka "struct PortConfigTypedef") PortConfigType portcfg = PORTPINOUT; ^C:\\qasystems\\cantata\\inc\\cppth.h:884: warning: I9223 – function "ACCESSFUNCTIONPortPortAssembleGPIOConfig" declared implicitly ACCESSFUNCTION##file####func ^ in expansion of macro "CPPTHACCESSFUNCTION" at line 2754 in expansion of macro "ACCESSFUNCTION" at line 281 of "ITPortOutput01/ITPortOutput01.c" returnValue = ACCESSFUNCTION(Port, PortAssembleGPIOConfig)(portcfg); ^ITPortOutput01/ITPortOutput01.c:281: error: I9513 – a value of type "int" cannot be assigned to an entity of type "structgpiopinconfig" returnValue = ACCESSFUNCTION(Port, PortAssembleGPIOConfig)(portcfg); ^ITPortOutput01/ITPortOutput01.c:272: warning: I9550 – variable "returnValue" was set but never used struct gpiopinconfig returnValue; ^Fatal Error I1112: Coverage Instrumentation failed
解决方案:
PortConfigType portcfg 初始值不对
报错4:
IT_Port_Output01/IT_Port_Output01.c:292: error: I9513 – a value of type "int" cannot be assigned to an entity of type "struct
gpio_pin_config"
returnValue = ACCESS_FUNCTION(Port, Port_Assemble_GPIO_Config)(port_cfg);

解决方案:
说明该函数无法直接测试,搜索代码里是否有包含该函数的内容
报错5:
c:/qa_systems/cantata/mingw/lib/gcc/mingw32/8.2.0/include/stddef.h:406: error: I9144 – a value of type "void *" cannot be used to initialize an entity of type "const
Port_ConfigType"
#define NULL ((void *)0)
^
in expansion of macro "NULL" at line 300 of
"IT_Port_Output01/IT_Port_Output01.c"
const Port_ConfigType ConfigPtr = NULL;
^
Fatal Error I1112: Coverage Instrumentation failed
make[3]: *** [IT_Port_Output01/test.mk:127: IT_Port_Output01/IT_Port_Output01.o] Error 2
Converting CTR file to HTML

解决方案:
NULL指针和 (void*)0一样
报错6:
^
C:\\qa_systems\\cantata\\inc\\cppth.h:870: error: I9154 – expression must have struct or union type but it has type "struct nvm_state_def
*"
(*(av_##file.ref_##var))
^
in expansion of macro "CPPTH_ACCESS_VARIABLE" at line 2747
in expansion of macro "ACCESS_VARIABLE" at line 613 of
"IT_NvM_Input01/IT_NvM_Input01.c"
ACCESS_VARIABLE(NvM, nvm_states [0].read_state) = NVM_STATE_READ_IDLE;
^
C:\\qa_systems\\cantata\\inc\\cppth.h:870: error: I9154 – expression must have struct or union type but it has type "struct nvm_state_def
*"
(*(av_##file.ref_##var))
^
in expansion of macro "CPPTH_ACCESS_VARIABLE" at line 2747
in expansion of macro "ACCESS_VARIABLE" at line 615 of
"IT_NvM_Input01/IT_NvM_Input01.c"
ACCESS_VARIABLE(NvM, nvm_states [0].write_state) = NVM_STATE_READ_IDLE;

解决方案:
ACCESS_VARIABLE(NvM, nvm_states [0].read_state) = NVM_STATE_READ_IDLE;
这样写不对,修改后:
ACCESS_VARIABLE(NvM, nvm_states)[0].read_state = NVM_STATE_READ_IDLE;
报错7:
IT_Nvm_Input02/IT_Nvm_Input02.c:311:45: error: assignment of member 'flags' in read-only object
ACCESS_VARIABLE(NvM, nvm_config_flash)[0].flags = 0x0400U;

解决方案:
这个错误说明赋值的这个变量其实是常量,无法更改,要么曲线救国,要么屏蔽

![[通信与计算]高速数字设计:信号完整性、接口与工程实践-171主机测评](https://www.171host.com/wp-content/uploads/2026/09/20260907131217-6a9eb831e2c6b-220x150.png)


