Trace32分析Threadx系统

1.简介

本wiki页主要是备份Trace32 分析展讯RTOS(适用展讯UIX8910,展讯W307等平台,操作系统使用ThreadX) dump文件。

 1. 用于系统产生死机dump时,定位系统问题

 2. 用于分析系统在一些场景下,预判系统设定分配资源是否合理

例如当系统处于高负荷状态(视频通话等),此时触发其它操作,例如:定位等,可以通过手动触发dump,来查看,开发中分配的

queue,thread优先级等等,是否合理。

2.Trace32 使用

Trace32 simulator安装完毕后。分析前,请准备好需要分析的dump文件,以及对应的axf文件,如果

是正常发生的dump,最好可以获取到dump前,屏幕或者log提示的信息,以便定位问题。

2.1 分析dump调用栈

  示例:死机发生时,屏幕提示: queue full,一般加载完成,会自动显示当前调用栈。

2.2 分析当前系统变量或函数

发生dump时,有时需要分析到当前的全局变量函数值等信息。

2.2.1 查看当前系统中的全局变量

通过Trace分析当前的全局变量或函数,通过菜单【View → symbol → browse】,然后再红色框内输入具体变量名称,例如:gps_uart_fifo。

此时,可以双击address,调出详细内容。可以看到该环形队列内部具体信息,此时,可以看到buf数据地址 0x80E905EC 进行查看buf 地址(0x80E905EC)内部数,通过命令行输入: 

data 0x80E905EC

上面是,0x80E905EC 这个地址上具体的数据情况,【备注:list 0x80E905EC   是查看这一地址空间的数据】

2.3 分析当前的ThreadX相关内容

ThreadX相关的内容主要有,Thread , queue, timer,signal等等资源。分析ThreadX的状况 下面以分析queue为示例记录,发生死机时,屏幕提示: queue full

2.3.1 查看当前系统中queue的使用状况

在菜单中【ThreadX → Display Queues】,可以查看到当前系统中queue中消息等情况,示例中,可以看到Q_P_APP,这个queue capacity 为500,当前enqueued已经是500,肯定是会产生full消息。

2.3.12查看当前系统中thread的使用状况

同样,也是打开菜单【ThreadX → Display Threads】