Part Number:IWR1443BOOST
我在对ti\Others\mmwave_industrial_toolbox_3_6_1\labs\lab0003-4k-fft 这一demo进行修改的添加的时候,先是将PONG操作删除后,添加了自己的内容可以正常运行,但是将PONG操作添加回来后,在运行BIOS_start();的时候,会进入 Task_SupportProxy_swap((Ptr)&prevTask->context,(Ptr)&Task_module->curTask->context);这个函数,然后就会出现“Break at address "0xee68" with no debug information available, or outside of program code.”
这个错误,想问一下这个该怎么解决。
谢谢。
Nancy Wang:
Mu Yifei 说:Break at address "0xee68" with no debug information available, or outside of program code.
您是全速运行的时候出现问题的吗?
这个提示看不出来问题,调试器只是告诉您目标停止在没有关联调试符号信息的地址。如果您只是连接到目标而不加载程序,或者如果加载的程序可执行文件没有调试符号,这个提示都是正常的。
,
Mu Yifei:
非常抱歉您说的有些问题我不是很理解。
全速运行是指不加断点,直接运行到结束么?我是直接运行后发现有这个问题,然后再一条一条代码运行找到产生这个错误提示的代码的。
您说的[连接到目标而不加载程序]是Task_creat的问题么
这是我这部分的代码。
还有就是您提及的调试符号是什么。
,
Nancy Wang:
我的意思是这个提示他不是一个报错,调试符号就是symbol。
可能还是与添加了代码有关,具体添加了什么内容?试试看加大堆栈。
,
Mu Yifei:
我自己添加了一些对HWA输出的fft结果进行处理的代码后,是可以运行的,但添加下面的代码后就出现了问题
添加的部分首先是HWAutil_configRangeFFT()函数内添加了PONG的部分
/**********************************************************************************************************************************/ /***********************/ /* PONG DUMMY PARAMSET */ /***********************/ paramsetIdx++; hwaParamCfg[paramsetIdx].triggerMode = HWA_TRIG_MODE_DMA; hwaParamCfg[paramsetIdx].dmaTriggerSrc = dmaTriggerSourcePong; //in demo this will be second EDMA Src channel id hwaParamCfg[paramsetIdx].accelMode = HWA_ACCELMODE_NONE; //dummy errCode = HWA_configParamSet(handle, paramsetIdx, &hwaParamCfg[paramsetIdx], NULL); if (errCode != 0) { //System_printf("Error: HWA_configParamSet(%d) returned %d\n",errCode,paramsetIdx); //MmwDemo_debugAssert(0); return; }
/***********************/ /* PONG PROCESS PARAMSET */ /***********************/ paramsetIdx++; hwaParamCfg[paramsetIdx] = hwaParamCfg[pingParamSetIdx1]; //hwaParamCfg[paramsetIdx].source.srcAddr = ADDR_TRANSLATE_CPU_TO_HWA(MMW_HWA_1D_OUT_PONG_M3_M1); hwaParamCfg[paramsetIdx].dest.dstAddr = ADDR_TRANSLATE_CPU_TO_HWA(MMW_HWA_1D_OUT_PONG_M1_M3); //hwaMemDestPongOffset;
errCode = HWA_configParamSet(handle, paramsetIdx, &hwaParamCfg[paramsetIdx], NULL); if (errCode != 0) { //retCode = HWA_TEST_ERROR; System_printf("Error: HWA_configParamSet(%d) returned %d\n", errCode, paramsetIdx); return; }
/***********************/ /* PONG PROCESS PARAMSET Step 2*/ /***********************/ paramsetIdx++; hwaParamCfg[paramsetIdx] = hwaParamCfg[pingParamSetIdx2]; hwaParamCfg[paramsetIdx].source.srcAddr = ADDR_TRANSLATE_CPU_TO_HWA(MMW_HWA_1D_OUT_PONG_M1_M3); hwaParamCfg[paramsetIdx].dest.dstAddr = ADDR_TRANSLATE_CPU_TO_HWA(MMW_HWA_1D_OUT_PONG_M3_M2); //hwaMemDestPongOffset; errCode = HWA_enableParamSetInterrupt(handle, paramsetIdx, ¶mISRConfig); if (errCode != 0) { //System_printf("Error: HWA_enableParamSetInterrupt(PING DMA) returned %d\n",errCode); //MmwDemo_debugAssert(0); return; } /**********************************************************************************************************************************/ /* enable the DMA hookup to this paramset so that data gets copied out */ paramISRConfig.interruptTypeFlag = HWA_PARAMDONE_INTERRUPT_TYPE_DMA; paramISRConfig.dma.dstChannel = dmaDestChannelPing; //TODO sync this define EDMA channel to trigger to copy the data out //paramISRConfig.cpu.callbackArg = paramSetSem;//TODO check if NULL is required errCode = HWA_enableParamSetInterrupt(handle, paramsetIdx, ¶mISRConfig); if (errCode != 0) { //System_printf("Error: HWA_enableParamSetInterrupt(PING DMA) returned %d\n",errCode); // MmwDemo_debugAssert (0); return; }
然后在函数demo_config1D_EDMA()内加入了PONG的部分
errorCode = EDMAutil_configHwaTranspose(handle,
MMW_EDMA_1D_PONG_CH_ID, //chId,
MMW_EDMA_1D_PONG_SHADOW_LINK_CH_ID, //linkChId,
MMW_EDMA_1D_PONG_CHAIN_CH_ID, //SR_DBT_xxx //chainChId,
(uint32_t *)SOC_translateAddress((uint32_t)MMW_HWA_1D_OUT_PONG, SOC_TranslateAddr_Dir_TO_EDMA, NULL), //*pSrcAddress,
(uint32_t *)SOC_translateAddress((uint32_t)(obj->radarCube + obj->numRxAntennas), SOC_TranslateAddr_Dir_TO_EDMA, NULL), //*pDestAddress,
obj->numRxAntennas, //numAnt,
obj->numRangeBins, //numRangeBins,
obj->numChirpsPerFrame, //numChirpsPerFrame,
true, //isIntermediateChainingEnabled,
true, //isFinalChainingEnabled,
true, //isTransferCompletionEnabled
demo_EDMA_transferCompletionCallbackFxn, //transferCompletionCallbackFxn
(uintptr_t)obj);
和HWA_getDMAconfig(obj->hwaHandle, MMW_HWA_DMA_TRIGGER_SOURCE_1D_PONG, &dmaConfig);
errorCode = EDMAutil_configHwaOneHotSignature(handle,
MMW_EDMA_1D_PONG_CHAIN_CH_ID, //chId,
false, //isEventTriggered
(uint32_t *)SOC_translateAddress(dmaConfig.srcAddr, SOC_TranslateAddr_Dir_TO_EDMA, NULL), //pSrcAddress
(uint32_t *)SOC_translateAddress(dmaConfig.destAddr, SOC_TranslateAddr_Dir_TO_EDMA, NULL), //pDestAddress
dmaConfig.aCnt,
dmaConfig.bCnt,
dmaConfig.cCnt,
MMW_EDMA_1D_PONG_ONE_HOT_SHADOW_LINK_CH_ID); //linkChIdif (errorCode != EDMA_NO_ERROR)
{
goto exit;
}
最后在demo_dataPathTrigger1D()函数内加了PONG的部分
errCode = HWA_setDMA2ACCManualTrig(obj->hwaHandle, MMW_HWA_DMA_TRIGGER_SOURCE_1D_PONG);
if (errCode != 0)
{
//System_printf("Error: HWA_setDMA2ACCManualTrig(1) returned %d\n",errCode);
//MmwDemo_debugAssert(0);
demo_printf("Error: HWA_setDMA2ACCManualTrig(0) returned %d\n", errCode);
return;
}以上是我在代码里加上然后就无法继续DEBUG的部分
我尝试将堆栈加大,但是好像没有改善
,
Chris Meng:
你好,
你除了修改c代码外,是否有修改过cmd文件?
,
Mu Yifei:
您好
我没有修改过cmd文件,只是改了.c文件以及.h文件中定义的函数。
,
Chris Meng:
你好,
不好意点错了TI认为已经解决。
对你的问题,你能否在原始的demo基础上重新做一下修改。提供一个可以简单复现问题的例程?
,
Mu Yifei:
好的 我尝试一下
,
Mu Yifei:
您好 这是我目前复现出来的程序demo_test.zip
,
Chris Meng:
你好,
你提供的复现问的程序,不是基于lab0003-4k-fft 而是level sensing demo的。
请问在你提供的复现问题的测试,是在init_Task里的修改就可以导致Break at address "0xee68" 的问题了么?
,
Mu Yifei:
嗯是的 抱歉我之前说的有问题,这个是以level sensing demo为模板,将4k-fft的功能移植进去。
嗯,我是在demo.c中修改了关于Pong的部分导致出现问题的
,
Ken Zhang:
Hi Yifei
我在CCS 11.0中 尝试运行了你提供的代码,代码正常运行,没有复现出上文的错误,
使用的环境如图:
在ROV的结果看,BIOS成功启动了,demo_mmWaveCtrlTask为Block状态 程序一直在运行Idle_task
,
Mu Yifei:
您好这是我的环境
但我用IWR1443BOOST进行仿真的时候会出现这个报错
,
Ken Zhang:
取消断点进行调试,若出现错误,尝试Load Symbols