TI C66x DSP ETB功能
来源:互联网 发布:nginx日志分析 编辑:程序博客网 时间:2024/05/01 23:46
TMS320TCI6618每个corePac(4个core)均有一个ETB(embedded trace buffer)模块,它包含dsp crash后最后时刻的程序执行记录,因此这些信息对调查dsp crash信息非常有用。
每个core的ETB size是4kb,TMS320TCI6618有四个core,因此共有16kb的空间可记录执行的程序。
Corrected the size of TETBs for the 4 cores from 16k to 4k,TI 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)];来保存上述各个cpu的ETB数据。如在发生内存保护,访问非法内存,或者程序中调用error2、callFatalerror函数时,在进入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)
- TI C66x DSP ETB功能
- TI C66x DSP 指令集 -之- ADDKPC
- TI C66x DSP中断类型及其优先级
- TI C66x DSP硬件信号量 - 1
- TI C66x DSP硬件信号量 - 2
- TI C66x DSP平台向APP提供callBack函数注册
- TI C66x DSP 系统events及其应用 - 1
- TI C66x DSP QM queue的reserve方法
- TI C66x DSP 系统events及其应用 - 2
- TI C66x DSP 系统events及其应用 - 3
- TI C66x DSP 指令集 -之- 跳转指令B
- TI C66x DSP 指令集 -之- 操作码(opcode)详解
- TI C66x DSP 指令集 -之- Conditional Operations
- TI C66x DSP 四种内存保护问题
- TI C66x DSP 系统events及其应用 - 5.3(Interrupt)
- TI C66x DSP硬件信号量 - 3(Direct Semaphore)
- TI C66x DSP硬件信号量 - 4(Semaphore moudle)
- TI C66x DSP 系统events及其应用 - 5.6(INTMUX)
- hadoop2.3.0安装配置
- 输入,输出数据——java
- 排序算法之插入排序
- 【QuickSort】
- 常见面试之机器学习算法思想简单梳理
- TI C66x DSP ETB功能
- Android Fragment 使用详解
- Unable to load configuration. - [unknown location]
- Collections.sort() 对 List 排序
- ThreadLocal详解
- android.os.NetworkOnMainThreadException 异常处理
- Struts2复习(二)类型转换详解
- java web系统级初始化工作
- android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)