- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于CCS的嵌入式实时系统软件开发与调试田黎育 实时调试的挑战 DSP程序常见的错误程序跑飞,死机?程序跳转不正确数据被修改?指针问题、堆栈溢出 DSP实时程序的特点:与通用OS的应用程序比较(1)至少存在一个中断,即有时限(2)DSP系统是嵌入式系统,用户管理memory map。(3)数据IO程序+数据处理程序:并行 可能的硬件平台的问题给软件带来的麻烦 什么是“调试” 调试:debug调试就是通过理解系统行为(运行),让系统实现其正确的功能的过程。 在调试时,我们试图根除导致系统出现未预期行为的根本原因。为了理解其根本原因,我们需要理解系统的运行情况。 我们需要理解系统在做什么----不是我们认为系统应该做什么, 也不是另外什么人说系统在做什么----而是系统实际上在做什么。 如果我们不理解系统,就不能指望改动系统让它完成我们想做的事情。而且,我们所做的任何改变系统行为的事情,都有破坏另外一些事情的危险;也可能因为改动而带来了更多的bug。 调试的过程 调试的一般过程(1)识别问题(加断点对timer计数的影响)(2)收集信息logging:(收集什么信息?造成输出错误的直接输入信息,逐级tracing)(3)分析收集的数据,定位bug;(4)修改bug。 可控性 可观测性 :来自软件工程的概念,其中可观测性是软件、硬件调试的基石。 调试的手段 静态调试: 单步执行;设置断点;观察变量;观察寄存器和存储器值;修改变量、寄存器和存储器的值;运行一段程序;“必须掌握的基本技能” 动态调试:实时记录、观察数据;RTDX条件断点; 论述“调试”的书籍 The Science of Debugging, Matt Telles.程序调试思想与实践,中国水力水电出版社---bug 是系统逻辑的奴隶 Debugging Application , John Robbins ,Microsoft Press ,2000 主要针对windows程序调试中文名: 应用程序调试技术 软件调试思想 : Robert Charles Metzger 嵌入式实时系统程序的分类 简单地,可以分为(1)数据处理的程序: 各种算法的实现;与硬件相对无关(2)数据传输的程序: 与硬件紧密相关; 中断、DMA: 提高数据传输效率的 两种“古老”而有效的手段 两种程序的开发时间: 数据链路层次(1)CPU核 DSP的寄存器和运算单元之间的数据链路多 数据链路层次(2)DSP 片内存储器 片外存储器接口:EMIF, HPI/XBUS DMA 中断 其它外设:时钟,串口 数据链路层次(3)板级 数据链路层次(4)板间 数据链路层次(5)系统间 C6000的中断(1) 三个概念: (1)中断源(Interrupt source):即中断事件,32个(2)中断选择号(Interrupt Selection Number):5bit(3)中断(Interrupt):12个可屏蔽+NMI(No.1) +RESET(No.0)+ RTDX(No.3) 中断寄存器的设置:中断源通过中断选择子(Interrupt Selector) “映射”到CPU的中断上,并可通过外中断极性设置寄存器设置EXT_INT4?EXT_INT7的中断极性(即中断地触发时刻) C6000的中断(2) 中断服务程序:map1:IDRAM 0x000~0x200 0x200 = 16 * 32 ; 16个中断,每个中断的8条指令; 二次跳转: 中断服务程序的任务实现超过8条指令时,跳转到真正处理中断的子程序 C6000的中断(3) 二次跳转的实现:(1)中断跳转表:isr_jump_table 全局变量 (2) “挂”中断: void intr_hook(void (*fp)(void),int cpu_intr); 来源:ti\c6000\evm6x\dsp\… 库函数,头文件,源文件v1.2 有; v2.0 只含头文件 C6000的中断(4) 中断嵌套-进入中断后,GIE=0-允许中断嵌套的设置 中断重入-打乱时序关系,应该尽量避免 写C6000中断程序 一般来讲,嵌入式系统是中断驱动的系统,另外还有数据流驱动的嵌入式系统(Windows:事件驱动)典型的结构:main函数中初始化?While循环等待中断到来,在中断处理程序中进行真正的数据处理 中断之间的关系:-同步关系:中断的触发次数成比例-异步关系:。。。-因果关系:一个中断触发其他中断,可看作是同步 关系中的一种特例 基于以上关系的中断间的数据共享模式:-乒乓模式:采数中断+处理中断
文档评论(0)