欢迎光临
我们一直在努力

【回眸】CANTATA常见错误分析及解决方案

目录

错误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
{
&REG_HRTIM2_COMMON,
&REG_HRTIM2_TIMERA
},
{
&REG_HRTIM2_COMMON,
&REG_HRTIM2_TIMERB
},
{
&REG_HRTIM2_COMMON,
&REG_HRTIM2_TIMERC
},
{
&REG_HRTIM2_COMMON,
&REG_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;

解决方案:

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

赞(0)
未经允许不得转载:171主机测评 » 【回眸】CANTATA常见错误分析及解决方案
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址