
UEIT调试协议栈的步骤.docx
3页本文格式为Word版,下载可任意编辑UEIT调试协议栈的步骤 UEIT调试协议栈的步骤 我们知道,运行UEIT时,实际上运行的是BSSIM和MSSIM一般在最初调试脚本和后期测试case时,实际上是同时起的BSSIM和MSSIM但是假设协议栈代码有问题,导致case fail(要保证脚本没问题)或者MSSIM Assert,就需要调试协议栈下面简朴介绍一下UEIT调试协议栈的步骤 首先,调试协议栈一个主要的思想是:BSSIM由UEIT启动,而MSSIM就是我们实际编译好的code,UEIT启动后,会操纵编译好的code运行(据hao.xu说这是UEIT的精华,他也不领会怎么能自动操纵编译好的code运行据说只有junbo.han、jason.gao等少数人知道,而且这是个“不能说的机要”)正由于如此,在运行tRunner时,要设置Start-up为“Only BSSim(”见下图,一般在最初调试脚本和后期测试case时,要选择“Both BSSim and MSSim”) 然后,开启VC工程:\\\\P_TianJi2\\TDPS_UEIT\\Project\\TDPS_UEIT_TIANLONG.dsw,由于模块好多,所以开启需要一段时间。
开启后先做一些设定:Project -> Settings -> Dedug,Excutable for debug session里面输入MSSIM的可执行文件所在的路径:\\\\P_TianJi2\\TDPS_UEIT\\UEITTools\\Bin\\MSSIM_S\\MSSim_S.exe;Program arguments里面输入tRunner运行时的端口(MS Port):(4680) 在开启的VC工程里,左边可以看到好多模块的代码,如:DM_PS、Layer1、MSDevKernel、RTOS等其中,以tdd开头的模块,只有tdd_nas对我们是有用的,其它不用关注,W也不会跑到那里面右击MSDevKernel模块,勾选“Set as Active Project”假设我们要在代码里加断点,首先要对相应的模块举行编译编译前先把指定目次下相关模块的库文件取消“只读”权限库文件在:\\\\P_TianJi2\\Project\\TD_PS\\Bin\\ 里编译好相关模块后再编译MSDevKernel模块然后就可以在相应模块的代码里加断点了 以我刚测出来的一个assert问题为例。
在RTOS模块下,threadx_assert.c代码里,win32_sci_Assert这个函数开头加个断点(这是SCI_ASSERT的出口,一旦展现PS的assert,就可以看到相应的函数调用栈,可以将这个断点始终设上),然后F5 Go,同时运行tRunner一段时间后会展现assert,同时程序会停在win32_sci_Assert这个函数的开头,右下角会有一些assert信息,点进去看看,可以看到发生assert的地方Stop Debug,然后可以简朴地分析一下,或者直接找对应模块的开发负责人在这里,发生assert的理由是WRRC回给GRR的WDM_GSM_RAT_CHANGE_TO_WCDMA_CNF里带的ho_type的值(6)和预期的WDM_GSM_RAT_CHANGE_TO_WCDMA_REQ里带的rr_dm_rat_chg_type的值(12)不一样导致的新建一个SourceInsight工程,把2G和3G的代码都包含进去,跳到定义的地方,可以看到ho_type定义为6表示Cell Reselect,12表示Fast Return 当然,assert算是对比好分析和调试的,假设case fail(脚本没有问题),就要熟谙相关的协议和代码了,要找到fail的地方不太轻易。
这时可以直接找模块负责人来看现场,或者骚扰一下TA下面是一些模块的负责人: 2G 孙宇(2624) / 麻鹏(2106) W L1SIM/Meas 庄云腾(1562) W L2 林亦桐(1583) W RRC 王国锐(2118) NAS 潘枫春(3138) — 3 —。












