请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TDA2HG 当我使用 link_control()函数将64位数据从 IPU 发送到 DSP 时,为什么会丢失32位数据?
如果在 IPU 和 DSP 之间传输的数据只能在32位范围内进行控制、为什么64位阵列的总大小可以准确地传输到 DSP?
此外、在日常调试中、日志丢失问题经常出现、我想问为什么、是否有任何改进方法?
下面是验证代码和相应的日志:
HMIManager.c
Void HMIManager_linkTskMain(struct Utils_TskHndl_t * pTsk, Utils_MsgHndl * pMsg)
{
UInt64 num;
UInt8 numArray[6] = {0,1,8,100,200,255};
.......
.......
.......
//test num
num = 0X13572468abcddbca;
HM_LogD("HMIMANAGER sizeof(long) = %d\n", sizeof(long));
HM_LogD("HMIMANAGER sizeof(UInt64) = %d\n", sizeof(UInt64));
HM_LogD("HMIMANAGER sizeof(num) = %d\n", sizeof(num));
HM_LogD("HMIMANAGER num p= %p\n", num);
HM_LogD("HMIMANAGER num x= %x\n", num);
HM_LogD("HMIMANAGER num lx= %lx\n", num);
HM_LogD("HMIMANAGER num llx= %llx\n", num);
memcpy(buf32, &num, sizeof(num));
HM_LogD("HMIMANAGER buf32[0],buf32[1]= %x, %x\n", buf32[0],buf32[1]);
status = System_linkControl(CMS_LinkId(CMS_LINK_ID_HMIRENDERER),
HM_CMD_TURNTO,
&num,
sizeof(num),
TRUE);
Utils_tskAckOrFreeMsg(pMsg, status);
HM_LogD("%s: HMIMANAGER send Cmd: HM_CMD_TURNTO TO hmirenderer\n", __FUNCTION__);
Task_sleep(50);
/* test: send cmd to hmi renderer linktsk*/
for(i = 0; i < 6; ++i){
HM_LogD("HMIMANAGER numArray[%d] p= %p \n",i , numArray[i]);
HM_LogD("HMIMANAGER numArray[%d] x= %x \n\n",i , numArray[i]);
}
status = System_linkControl(CMS_LinkId(CMS_LINK_ID_HMIRENDERER),
HM_CMD_OPENDOOR,
numArray,
sizeof(numArray),
TRUE);
Utils_tskAckOrFreeMsg(pMsg, status);
HM_LogD("%s: HMIMANAGER send Cmd: HM_CMD_OPENDOOR TO hmirenderer\n", __FUNCTION__);
.......
.......
.......
}
HMIRenderer.c
Void HMIRenderer_linkTskMain(struct Utils_TskHndl_t * pTsk, Utils_MsgHndl * pMsg)
{
UInt8 *numArray = NULL;
UInt32 buf32[2];
UInt32 i;
......
......
......
case HM_CMD_TURNTO:
HR_LogD("HMIRenderer sizeof(long) = %d\n", sizeof(long));
HR_LogD("HMIRenderer sizeof(UInt64) = %d\n", sizeof(UInt64));
HR_LogD("HMIRenderer sizeof(num) = %d\n", sizeof(num));
num = *(UInt64 *)Utils_msgGetPrm(pMsg);
Utils_tskAckOrFreeMsg(pMsg, status);
HR_LogD("HMIRenderer num p= %p\n", num);
HR_LogD("HMIRenderer num x= %x\n", num);
HR_LogD("HMIRenderer num lx= %lx\n", num);
HR_LogD("HMIRenderer num llx= %llx\n", num);
memcpy(buf32, &num, sizeof(num));
HR_LogD("HMIRenderer buf32[0],buf32[1]= %x, %x\n", buf32[0],buf32[1]);
++num;
HR_LogD("HMIRenderer num p= %p\n", num);
HR_LogD("HMIRenderer num x= %x\n", num);
HR_LogD("HMIRenderer num lx= %lx\n", num);
HR_LogD("HMIRenderer num llx= %llx\n", num);
num -= 2;
HR_LogD("HMIRenderer num p= %p\n", num);
HR_LogD("HMIRenderer num x= %x\n", num);
HR_LogD("HMIRenderer num lx= %lx\n", num);
HR_LogD("HMIRenderer num llx= %llx\n", num);
break;
case HM_CMD_OPENDOOR:
numArray = (UInt8*)Utils_msgGetPrm(pMsg);
/* ACK message */
for(i = 0; i < 6; ++i){
HR_LogD("HMIRenderer numArray[%d] p= %p \n",i , numArray[i]);
HR_LogD("HMIRenderer numArray[%d] x= %x \n\n",i , numArray[i]);
}
// /* ACK message */
Utils_tskAckOrFreeMsg(pMsg, status);
break;
.....
.....
.....
}
[HOST] [IPU1-0] 61.712743 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER sizeof(long) = 4 [HOST] [IPU1-0] 61.712865 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER sizeof(UInt64) = 8 [HOST] [IPU1-0] 61.712956 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER sizeof(num) = 8 [HOST] [IPU1-0] 61.713078 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER num p= abcddbca [HOST] [IPU1-0] 61.713170 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER num x= abcddbca [HOST] [IPU1-0] 61.713292 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER num lx= abcddbca [HOST] [IPU1-0] 61.713414 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER num llx= 13572468abcddbca [HOST] [IPU1-0] 61.713536 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER buf32[0],buf32[1]= abcddbca, 13572468 [HOST] [IPU1-0] 61.714024 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIManager_linkTskMain: HMIMANAGER send Cmd: HM_CMD_TURNTO TO hmirenderer [HOST] [IPU1-0] 61.763740 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[0] p= 0 [HOST] [IPU1-0] 61.763862 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[0] x= 0 [HOST] [IPU1-0] 61.763984 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[1] p= 1 [HOST] [IPU1-0] 61.764106 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[1] x= 1 [HOST] [IPU1-0] 61.764198 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[2] p= 8 [HOST] [IPU1-0] 61.764320 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[2] x= 8 [HOST] [IPU1-0] 61.764442 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[3] p= 64 [HOST] [IPU1-0] 61.764564 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[3] x= 64 [HOST] [IPU1-0] 61.764686 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[4] p= c8 [HOST] [IPU1-0] 61.764808 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[4] x= c8 [HOST] [IPU1-0] 61.764930 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[5] p= ff [HOST] [IPU1-0] 61.765021 s: [DEBUG][HM]:HMIManager_linkTskMain: HMIMANAGER numArray[5] x= ff [HOST] [DSP1 ] 61.713810 s: [DEBUG][HR]:: HMIRenderer sizeof(long) = 4 [HOST] [DSP1 ] 61.713841 s: [DEBUG][HR]:: HMIRenderer sizeof(UInt64) = 8 [HOST] [DSP1 ] 61.713871 s: [DEBUG][HR]:: HMIRenderer sizeof(num) = 8 [HOST] [DSP1 ] 61.713932 s: [DEBUG][HR]:: HMIRenderer num p= 0 [HOST] [DSP1 ] 61.713932 s: [DEBUG][HR]:: HMIRenderer num x= 0 [HOST] [DSP1 ] 61.713963 s: [DEBUG][HR]:: HMIRenderer num lx= 0 [HOST] [DSP1 ] 61.713993 s: [DEBUG][HR]:: HMIRenderer num llx= abcddbca00000000 [HOST] [DSP1 ] 61.714024 s: [DEBUG][HR]:: HMIRenderer buf32[0],buf32[1]= 0, abcddbca [HOST] [DSP1 ] 61.714024 s: [DEBUG][HR]:: HMIRenderer num p= 1 [HOST] [DSP1 ] 61.714054 s: [DEBUG][HR]:: HMIRenderer num x= 1 [HOST] [DSP1 ] 61.714085 s: [DEBUG][HR]:: HMIRenderer num lx= 1 [HOST] [DSP1 ] 61.714085 s: [DEBUG][HR]:: HMIRenderer num llx= abcddbca00000001 [HOST] [DSP1 ] 61.714115 s: [DEBUG][HR]:: HMIRenderer num p= ffffffff [HOST] [DSP1 ] 61.714146 s: [DEBUG][HR]:: HMIRenderer num x= ffffffff [HOST] [DSP1 ] 61.714146 s: [DEBUG][HR]:: HMIRenderer num lx= ffffffff [HOST] [DSP1 ] 61.714207 s: [DEBUG][HR]:: HMIRenderer num llx= abcddbc9ffffffff [HOST] [DSP1 ] 61.774141 s: [DEBUG][HR]:: HMIRenderer numArray[0] p= 0 [HOST] [DSP1 ] 61.774202 s: [DEBUG][HR]:: HMIRenderer numArray[0] x= 0 [HOST] [DSP1 ] 61.774232 s: [DEBUG][HR]:: HMIRenderer numArray[1] p= 1 [HOST] [DSP1 ] 61.774263 s: [DEBUG][HR]:: HMIRenderer numArray[1] x= 1 [HOST] [DSP1 ] 61.774293 s: [DEBUG][HR]:: HMIRenderer numArray[2] p= 8 [HOST] [DSP1 ] 61.774293 s: [DEBUG][HR]:: HMIRenderer numArray[2] x= 8 [HOST] [DSP1 ] 61.774324 s: [DEBUG][HR]:: HMIRenderer numArray[3] p= 64 [HOST] [DSP1 ] 61.774354 s: [DEBUG][HR]:: HMIRenderer numArray[3] x= 64 [HOST] [DSP1 ] 61.774385 s: [DEBUG][HR]:: HMIRenderer numArray[4] p= c8 [HOST] [DSP1 ] 61.774385 s: [DEBUG][HR]:: HMIRenderer numArray[4] x= c8 [HOST] [DSP1 ] 61.774415 s: [DEBUG][HR]:: HMIRenderer numArray[5] p= ff [HOST] [DSP1 ] 61.774446 s: [DEBUG][HR]:: HMIRenderer numArray[5] x= ff