请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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