DSP

TI C66x DSP ETB功能

2019-07-13 12:28发布

    TMS320TCI6618每个corePac4core)均有一个ETBembedded trace buffer)模块,它包含dsp crash后最后时刻的程序执行记录,因此这些信息对调查dsp crash信息非常有用。     每个coreETB size4kbTMS320TCI6618有四个core,因此共有16kb的空间可记录执行的程序。     Corrected the size of TETBs for the 4 cores from 16k to 4kTI data manual显示的ETB的片上内存地址,以及size   Logical 32 bit Address      Physical 36 bit Address Start            End                Start                 End              Bytes  Description   027D 0000 027D 3FFF 0 027D 0000 0   027D 3FFF 16K     TI embedded trace buffer (TETB) - CorePac0 027D 4000 027D FFFF 0 027D 4000 0   027D FFFF 48K     Reserved 027E 0000 027E 3FFF 0  027E 0000 0    027E 3FFF  16K    TI embedded trace buffer (TETB) - CorePac1 027E 4000 027E FFFF 0  027E 4000 0    027E FFFF  48K    Reserved 027F 0000 027F 3FFF 0  027F 0000 0    027F 3FFF  16K    TI embedded trace buffer (TETB) - CorePac2 027F 4000 027F FFFF 0  027F 4000 0    027F FFFF  48K    Reserved 0280 0000 0280 3FFF 0   0280 0000 0    0280 3FFF   16      TI embedded trace buffer (TETB) - CorePac3             我们自己可以定义一个DDR上的全局变量,如 u32 gEtbDrainDataBuffer[(4 * 4096/ 4)]; 来保存上述各个cpuETB数据。如在发生内存保护,访问非法内存,或者程序中调用error2callFatalerror函数时,在进入errorDriver中执行的时候,把片上ETB中的数据保存到DDR上面。从下面解析的内容看,最后的指令就是在ErrorDriver中执行的。 发生了vector1中断,我们因此怀疑问题可能出现在SetPrachFftcTxDescriptorInfo函数,这样就能方便定位问题。      下面是根据导出的ETB数据,以及程序out file解析出的部分程序,当运行某个函数中的指令的时候,它会保存函数编译后的名字。  1182a730:_ZN20ChannelizerInterface21CChannelizerInterface18SrsSymEdmaCallBackEv  (offset = 00000250)
 824f42c0:_ZN24ChannelizerBufferManager28CChannelizerMemBufferManager17GetChanIntFaceDbgEv  (offset = 00000000)
 11829db8:_ZN20ChannelizerInterface21CChannelizerInterface28SetPrachFftcTxDescriptorInfoEj  (offset = 00000018) 
 1182a540:_ZN20ChannelizerInterface21CChannelizerInterface18SrsSymEdmaCallBackEv  (offset = 00000060)
 82472e00:QmQueuePop                                  (offset = 00000000)
 11829dec:_ZN20ChannelizerInterface21CChannelizerInterface28SetPrachFftcTxDescriptorInfoEj  (offset = 0000004c)  
 11800020:_vector1                                    (offset = 00000000)
 11800200:platform_interrupt_vector_extension_code    (offset = 00000000)
 118002f8:jumpToExceptionHandling                     (offset = 00000000)
 82436860:platform_ErrorDriver_code                   (offset = 00000000)
 82434540:ExceptionHandlerEsr                         (offset = 00000000)
 8243b4f0:ExceptionHandlerEnableSingleEventException  (offset = 000001d0)
 118228a0:__c6xabi_push_rts                           (offset = 00000000)
 82434544:ExceptionHandlerEsr                         (offset = 00000004)
 8243b4c0:ExceptionHandlerEnableSingleEventException  (offset = 000001a0)
 11805a20:AaSysTimeBcnGet                             (offset = 00000000)
 11815340:AifTimer_PhyTimeGet                         (offset = 00000000)
 11805a60:AaSysTimeBcnGet                             (offset = 00000040)
 824345d0:ExceptionHandlerEsr                         (offset = 00000090)
 8243afe0:ErrorDriverStopTrace                        (offset = 00000000)
 824e4aa0:AET_release                                 (offset = 00000000)
 8243b024:ErrorDriverStopTrace                        (offset = 00000044)
 824edd20:AET_claim                                   (offset = 00000000)
 8243b028:ErrorDriverStopTrace                        (offset = 00000048)
 824ea960:DSPTrace_setState                           (offset = 00000000)