展讯平台软件调试介绍

上传人:工**** 文档编号:570154817 上传时间:2024-08-02 格式:PPT 页数:58 大小:1.30MB
返回 下载 相关 举报
展讯平台软件调试介绍_第1页
第1页 / 共58页
展讯平台软件调试介绍_第2页
第2页 / 共58页
展讯平台软件调试介绍_第3页
第3页 / 共58页
展讯平台软件调试介绍_第4页
第4页 / 共58页
展讯平台软件调试介绍_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《展讯平台软件调试介绍》由会员分享,可在线阅读,更多相关《展讯平台软件调试介绍(58页珍藏版)》请在金锄头文库上搜索。

1、Spreadtrum8/2/2024展讯平台软件调试介绍展讯平台软件调试介绍8/2/20242Proprietary and Confidential Information培训目的培训目的能够使用展讯提供的调试工具对开发中的问题进行调试能够分析几种常见ASSERT8/2/20243Proprietary and Confidential Information主要内容主要内容F展讯调试工具简介展讯调试工具简介F调试方法8/2/20244Proprietary and Confidential Information展讯调试工具简介展讯调试工具简介DownloaderNVEditorChann

2、el ServerLogelPhone TesterDSP Log主要的调试工具有:8/2/20245Proprietary and Confidential InformationDownloader (1)功能:下载程序8/2/20246Proprietary and Confidential InformationDownloader (2)设置界面:双击可以选择双击可以选择下载文件路径下载文件路径选择端口选择端口选择项目选择项目选择下载速率选择下载速率制作打包文件制作打包文件选择选择是否是否下载下载8/2/20247Proprietary and Confidential Inform

3、ationNand Flash下载配置:Downloader (3)大小页选择大小页选择分区策略选择分区策略选择分区策略始终分区出现不兼容分区时停止下载出现不兼容分区,使用Flash中原有分区进行下载出现不兼容分区,使用FDL中的分区方式进行分区注:此配置项只对NAND FLASH有效8/2/20248Proprietary and Confidential InformationDownloader (4)备份信息配置:将将NV保存到本地保存到本地选择需要保留的信息选择需要保留的信息8/2/20249Proprietary and Confidential InformationDownlo

4、ader (5)正在下载:下载成功:下载失败:8/2/202410Proprietary and Confidential InformationDownloader (4)打包文件特别说明:展讯升级工具中使用打包文件来进行升级操作,打包文件中不仅包含了所有的下载文件,还包含了下载项目的地址信息,这样可以降低产线升级工具配置出错的可能性,同时简化了操作。打包文件的制作方法:DloadeR在配置好所有的配置项后,点击左图中的按钮,然后按照提示即可完成打包文件的制作。点击这个按钮点击这个按钮进行打包操作进行打包操作8/2/202411Proprietary and Confidential Inf

5、ormationDownloaderNVEditorChannel ServerLogelPhone TesterDSP Log展讯调试工具简介展讯调试工具简介8/2/202412Proprietary and Confidential InformationNVEditor (1)功能:对fixed NV参数进行读取,编辑,保存,下载擦除NV从手机中读出NV Item8/2/202413Proprietary and Confidential InformationNVEditor (2)8/2/202414Proprietary and Confidential Information修改

6、某项数据:NVEditor (3)8/2/202415Proprietary and Confidential Information选择菜单Filesave image保存并生成二进制数据文件:NVEditor (4)8/2/202416Proprietary and Confidential Information选择菜单FileSave to phone直接下载到手机中 手机需要在下载模式如果需要保留校准参数如果需要保留校准参数需要选择上需要选择上NVEditor (5)8/2/202417Proprietary and Confidential Information获取手机NV数据:

7、NVEditor (6)选择菜单FileLoadFromPhone(boot mode)来获取数据在下载模式下从保留区域处获取下载的nvitem数据。某些nvitem可能会被修改并被存储到数据区,如果需要获取这些最新的数据,则用LoadFromPhone(normal mode)。此时手机应在正常开机状态,并且没有进入deep sleep。8/2/202418Proprietary and Confidential Information读Flash:该地址为下载模式下该地址为下载模式下flash的地址空间,的地址空间,地址一定要是有效地址。地址一定要是有效地址。NVEditor (7)选择菜

8、单FacilityRead Flash(NAND Flash选择Read NAND Flash)。手机需要在下载模式。8/2/202419Proprietary and Confidential Information擦除某区域的Flash:NVEditor (8)选择菜单FacilityErase Flash (Nand Flash选择Erase Nand Flash)。手机需要在下载模式8/2/202420Proprietary and Confidential InformationDownloaderNVEditorChannel ServerLogelPhone TesterDSP

9、Log展讯调试工具简介展讯调试工具简介8/2/202421Proprietary and Confidential Information功能:Channel Server (1)管理其它工具与手机通讯。它通过Socket与其它工具通讯,通过串口与手机连接。消息存储转发消息字节顺序转换消息记录8/2/202422Proprietary and Confidential Information运行ChannelServer.exe:变绿代表成功变绿代表成功连接连接串口或虚拟串串口或虚拟串口端口号口端口号波特率设置波特率设置由于展讯平台由于展讯平台使用大端,这使用大端,这里要勾上里要勾上Chann

10、el Server (2)单击右下角托盘中的ChannelServer小图标,在弹出的对话框中的进行配置(成功后,小图标变绿色)8/2/202423Proprietary and Confidential InformationDownloaderNVEditorChannel ServerLogelPhone TesterDSP Log展讯调试工具简介展讯调试工具简介8/2/202424Proprietary and Confidential InformationLogel (1)功能:实时诊断和监控手机运行状况,解决、分析问题Trace 功能,Layer 3的空中消息,应用窗口的消息流手

11、机出错时的信息的收集、记录回放功能 8/2/202425Proprietary and Confidential Information消息包消息包的解析的解析线程间的线程间的消息消息利用利用SCI_TRACE_XXX打打印的字符串印的字符串先将手机与Channel Sever连接上,打开Logel,连接Channel ServerLogel (2)8/2/202426Proprietary and Confidential InformationDownloaderNVEditorChannel ServerLogelPhone TesterDSP Log展讯调试工具简介展讯调试工具简介8/

12、2/202427Proprietary and Confidential Information注意:注意:使用PhoneTester时,如果手机进入DeepSleep,操作会失败;有的平台中,使用的是Mobile Tester,功能与使用方法都同Phone Tester类似。Phone Tester (1)功能:读写内存/寄存器值RF校准Audio设置8/2/202428Proprietary and Confidential Information点击使之与channel server相连Phone Tester (2)8/2/202429Proprietary and Confident

13、ial Information寄存器寄存器/内存地址内存地址需读取的大小需读取的大小如果寄存器的读取,如果寄存器的读取,mode应设为应设为DWORDPhone Tester (3)8/2/202430Proprietary and Confidential InformationDownloaderNVEditorChannel ServerLogelPhone TesterDSP Log展讯调试工具简介展讯调试工具简介8/2/202431Proprietary and Confidential Information功能:抓取DSP LogDSP Log(1)8/2/202432Propr

14、ietary and Confidential Information使用之前,需要在NV中将DSP Log打开:DownloadParam/log_switch_struct设置为0x1DSP Log(2)8/2/202433Proprietary and Confidential Information选择菜单ActionSetting,设置串口参数,以及LOG文件保存路径DSP Log(3)8/2/202434Proprietary and Confidential Information单击工具栏图标 连接单击图标 开始抓取LOG详细使用方法,请参考相应工具的使用手册DSP Log(4

15、)8/2/202435Proprietary and Confidential Information主要内容主要内容F展讯调试工具简介F调试方法调试方法8/2/202436Proprietary and Confidential Information调试方法调试方法LOG分析断言(ASSERT)信息通过PhoneTester实时查看寄存器、内存信息8/2/202437Proprietary and Confidential InformationLOG (1)利用平台提供的LOG接口,可以将字符串通过Logel工具在PC上打印出来,使得开发人员可以跟踪程序的运行,接口是 SCI_TRACE

16、_LOW8/2/202438Proprietary and Confidential InformationLOG (2)使用LOG的注意事项:尽量避免在会频繁调用的函数或者循环中调用SCI_TRACE_LOW,会影响程序的效率某些栈空间很小的线程中,调用SCI_TRACE_LOW会导致堆栈溢出,要特别注意,一般如果栈空间小于1K Bytes就不能调用了中断处理中不能调用SCI_TRACE_LOW8/2/202439Proprietary and Confidential InformationLOG (3)需要特别说明的是log工具需要和软件版本配套。8/2/202440Proprietar

17、y and Confidential Information调试方法调试方法LOG分析断言分析断言(ASSERT)信息信息通过PhoneTester实时查看寄存器、内存信息8/2/202441Proprietary and Confidential InformationASSERT (1)在开发的过程中,合理的利用ASSERT检查程序的合法性是非常必要的。例如,我们一般会在函数入口利用ASSERT检查参数合法性。8/2/202442Proprietary and Confidential Information ASSERT (2)这是发生这是发生assert时时弹出的弹出的assert提示

18、提示窗口。窗口。8/2/202443Proprietary and Confidential InformationASSERT (3)Assert产生时连着Logel工具:Assert时Logel会自动弹出Assert Frame,并显示提示信息,ChannelServer显示红色;选择LogelAssertOpen Map File打开相应的Map文件;按照提示信息,依次输入18保存相应的信息;关闭Assert Frame,信息会保存在LogelBinHistory目录下的文件中,文件名中包含时间信息。Assert产生时未连着Logel工具:通过串口连接线将手机和PC相连,运行Channe

19、lServer、Logel,并进行必要的设置;点击 LogelAssertOpen Assert Frame ,在弹出的Frame中反复输入字符0,直至Frame中显示提示信息、ChannelServer显示红色;按照上面的 、 、 步操作。遇到ASSERT时需要保留的信息:8/2/202444Proprietary and Confidential InformationASSERT (4)Print help infoPrint assert info,包括Assert时的软硬件版本信息,产生Assert的位置(文件名,行号),当前线程(或中断服务程序)的信息Print important

20、 registers,包括SVC, IRQ, ABORT, UNDEFINED模式下的R13,R14,SPSR,以及当前模式下的所有寄存器Dump all memory to a file,内容包括External Ram, Internal Ram, Shared Memory, ARM Registers。Dump完成之后会保存为*.mem文件。Print memory allocated info,列出通过动态分配、到当前还没有被释放的内存信息。包括分配的序列号(No.),长度(Size),分配的位置(FileName (Line)Print memory pools info,列出各个

21、内存池的使用信息Print tasks info,列出各个线程的ID,控制块地址,当前运行地址,消息队列的使用情况Print stack info,列出各个线程的堆栈使用情况Print callback function list,列出所有线程的函数调用情况Read memory,实时的读取输入地址的内存内容ASSERT Frame框选项:8/2/202445Proprietary and Confidential InformationASSERT (5)相应的软、硬件版本产生断言条件(在什么环境下、如何操作)的说明必须有相应的文件: *.bin, *.axf, *.map, *.memLo

22、g信息也是需要的。相对应的全部log文件分析ASSERT需要的其他信息:8/2/202446Proprietary and Confidential InformationASSERT (6)配合map文件可以对各个全局变量进行分析结合 *.axf文件,载入ADS的AXD中进行分析通过Task Switch,可以查看Assert之前的一段时间内系统运行的情况,对分析有些任务长时间得不到运行的问题很有帮助Mem文件的使用:8/2/202447Proprietary and Confidential InformationASSERT (7)分别介绍几类常见ASSERT的debug方法:普通ASS

23、ERTQueue FullStack OverflowNo Memory其他一些ASSERT8/2/202448Proprietary and Confidential InformationASSERT (8)普通ASSERT:指开发人员在程序中加的ASSERT。该类ASSERT最容易分析,通过1: Print assert info,查看ASSERT产生的行号,通过8: Print callback function list,查看程序调用流程,再利用LOG信息,很容易判断出错误来源8/2/202449Proprietary and Confidential InformationASSE

24、RT (9)Queue Full ASSERT: 第一步,查看6: Print tasks info,找出Queue Full的线程 表面原因是线程的消息队列已满,内部原因大致有: 线程内部有死循环,导致线程无法处理消息 被其他线程抢占,或存在死锁,导致线程长时间得不到运行 线程消息队列大小设置过小 增大Queue即可通过LOG信息结合代码,推测出在运行哪段程序,检查相应代码是否存在死循环的可能可以通过mem和Task Switch工具查看ASSERT前一段时间内的TASK以及中断的运行情况,判断出被抢占的原因,比如是由于优先级设置不合理造成,还是无法获得资源等等8/2/202450Propr

25、ietary and Confidential InformationASSERT(10)Stack Overflow,栈溢出: 第一步,通过7: Print stack info找出发生Overflow的线程 发生Stack Overflow一般有以下原因: 线程中,有不合理的函数嵌套调用,递归调用: 函数设计不够优良,局部变量使用栈空间过多: 线程Stack大小设置过小: 增大该线程的栈空间通过8: Print callback function list查看对应线程的函数调用情况,看是否重复的在调用某些函数通过8: Print callback function list查看对应线程的函

26、数调用情况,在代码中查找这些函数,看是否局部变量过大8/2/202451Proprietary and Confidential InformationASSERT (11)No memory:第一步,通过5: Print memory pools info查看被分配光的Pool产生的表面原因:在动态申请内存时,无法申请到而产生的ASSERT,实际原因有以下: 内存泄漏: 通过4: Print memory allocated info,检查未释放的空间 申请的内存空间大小不合理,过大通过8: Print callback function list,查找代码中申请内存的语句参数是否正确8/2

27、/202452Proprietary and Confidential InformationASSERT (12)其他一些ASSERT:一些EXCEPTION ASSERT 会遇到一些exception,这都是一些异常引起的。但是原因各不相同,这需要具体分析了。Busmonitor assert 我们平台会在code区域做一些保护。Busmonitor assert就是用来判断对code区域进行写的操作。8/2/202453Proprietary and Confidential InformationASSERT (13)我们调试时可以用SCI_ASSERT(_exp)来根据条件判断程序是

28、否运行在我们设计的流程下。如果不满足条件会发生assert。还可以用SCI_PASSERT(_exp,PRINT_STR)多加一些信息。PRINT_STR就是可以在屏幕上显示的字符串。这样可以更直观的知道一些错误的发生。 8/2/202454Proprietary and Confidential Information调试方法调试方法LOG分析断言(ASSERT)信息通过通过PhoneTester实时查看寄存器、内存信息实时查看寄存器、内存信息8/2/202455Proprietary and Confidential InformationPhone TesterPhone Tester可

29、以在手机开机状态下,实时查看和修改寄存器或全局变量的值。调试的时候,使用Phone Tester会非常方便。Phone Tester的使用方法请参考本文档前几章。8/2/202456Proprietary and Confidential Information回顾回顾调试工具的使用方法几种常见ASSERT的分析总结:ASSERT的原因是多种多样的,前面只是介绍了一小部分原因。而介绍的debug方式也仅是抛砖引玉,debug的方式是多种多样的,需要在实际开发中去学习,积累。对于MMI的问题,尽量使用我们提供的Simulator来调试,利用好VC强大的调试功能。利用好前面介绍的调试工具,可以使debug效率事半功倍。8/2/202457Proprietary and Confidential Information

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号