《5_基于CCS的嵌入式软件开发与调试(已套模板)》由会员分享,可在线阅读,更多相关《5_基于CCS的嵌入式软件开发与调试(已套模板)(36页珍藏版)》请在金锄头文库上搜索。
1、The successs road基于CCS的 嵌入式实时系统 软件开发与调试 远见品质实时调试的挑战vDSP程序常见的错误 程序跑飞,死机程序跳转不正确 数据被修改指针问题、堆栈溢出 vDSP实时程序的特点:与通用OS的应用程 序比较 (1)至少存在一个中断,即有时限 (2)DSP系统是嵌入式系统,用户管理 memory map。 (3)数据IO程序+数据处理程序:并行v可能的硬件平台的问题给软件带来的麻烦远见品质v调试:debug调试就是通过理解系统行为(运行),让系统实现其正确 的功能的过程。 v在调试时,我们试图根除导致系统出现未预期行为的 根本原因。为了理解其根本原因,我们需要理解系
2、统 的运行情况。 v我们需要理解系统在做什么-不是我们认为系统应该 做什么, 也不是另外什么人说系统在做什么-而是系 统实际上在做什么。 v如果我们不理解系统,就不能指望改动系统让它完成 我们想做的事情。而且,我们所做的任何改变系统行 为的事情,都有破坏另外一些事情的危险;也可能因 为改动而带来了更多的bug。什么是“调试”输入输出远见品质 调试的过程v调试的一般过程 (1)识别问题(加断点对timer计数的影 响) (2)收集信息logging:(收集什么信息 ?造成输出错误的直接输入信息,逐级 tracing) (3)分析收集的数据,定位bug; (4)修改bug。 v可控性 16个中断,
3、每个中断的8条指令;v二次跳转: 中断服务程序的任务实现超过8条指令时,跳转到真正 处理中断的子程序 _INT4: .asg 4, vecstw .d2 b0, *-b15| mvk (_isr_jump_table + vec * 4), b0mvkh (_isr_jump_table + vec * 4), b0ldw .d2 *b0, b0nop 4b .s2 b0| ldw .d2 *b15+, b0nop 5远见品质C6000的中断(3)v二次跳转的实现: (1)中断跳转表:isr_jump_table 全局变量 (2) “挂”中断: void intr_hook(void (*fp
4、)(void),int cpu_intr);v 来源: tic6000evm6xdsp 库函数,头 文件,源文件 v1.2 有; v2.0 只含头文件远见品质C6000的中断(4)v中断嵌套 进入中断后,GIE0 允许中断嵌套的设置v中断重入 打乱时序关系,应该 尽量避免IRPBak = GET_REG(IRP); CSRBak = GET_REG(CSR); IERBak = GET_REG(IER); INTR_DISABLE(CPU_INT6); INTR_GLOBAL_ENABLE(); . INTR_CLR_FLAG(CPU_INT6); INTR_GLOBAL_DISABLE();
5、 SET_REG(IRP, IRPBak); SET_REG(CSR, CSRBak); SET_REG(IER, IERBak);远见品质写C6000中断程序v一般来讲,嵌入式系统是中断驱动的系统,另外还有数据流驱动的嵌 入式系统(Windows:事件驱动) 典型的结构:main函数中初始化While循环等待中断到来,在中断处 理程序中进行真正的数据处理v中断之间的关系: 同步关系:中断的触发次数成比例 异步关系:。 因果关系:一个中断触发其他中断,可看作是同步关系中的一种 特例v基于以上关系的中断间的数据共享模式: 乒乓模式:采数中断处理中断, 同步中断关系 圆周buffer:串口中断处理
6、中断,异步中断关系 共享memory:传数中断DMA结束中断,因果关系远见品质C6000的DMA(1)vC6000的DMA控制器在CPU结构中的位置,确 定DMA的数据链路:编程时考虑效率 XB, PBC, EMIF, DMC, PMC *其中和PMC的连接是单向的,只能向程序 存储空间写入(723数采例子,软硬件bug定位) v4个DMA通道1个辅助DMA(HPI/XB) C6711/C6211/C64XX,16 EDMA通道v复杂的传输模式:满足不同的数据传输应用 单通道分割,多帧传输,自动初始化,传输完 毕后触发中断. 远见品质 C6000的DMA(2)v由于DMAC的位置,某些存储区之
7、间的数据搬移要通过中间 的buffer(一般为IDRAM)实现,否则时间消耗大。 如双口和SBSRAM的数据传输,2次DMA的时间小于一 次直接DMA的时间;2次DMA传输中的第二次传输的启动一 般是靠第一次DMA完成后产生的软件中断触发的v用DMA实现MemoryCopy和MemorySet; 片内的MemorySet可以有更快的方法,优化vDMA的优先级:可设,但默认DMA0最高 如果高优先级DMA启动时,低优先级DMA没有完成时 ,要将低优先级DMA的操作挂起,等完成高优先级DMA后 ,继续完成。所以系统中有几个DMA同时发生时,要 根据数据的重要性和数据传输处理的顺序选择合适的DMA通
8、 道。vDMAC通用管脚在调试中的使用:发光二极管远见品质C6000的TimervDSP时间的最细刻度:主频v利用时钟(中断)为系统提供的各种时间 , 起到计时器的作用 中断发生的间隔时间可设:1ms 计算时间间隔精度:1usv利用计时器防止等待超时vTIMER测试程序时间的两种方法: 中断法;直接计数法(无中断开销)。远见品质 一个AD板的例子Q路视频信号双口中断内PRT中断AD_IAD_QI路视频信号EPLD + FIFO开关 网络C6202_1C6202_2控制信号256K*32bit SBSRAM256K*32bit SBSRAM16K*32bit双 口RAM16K*32bit双 口R
9、AMVTIDP中断GRIDP中断外PRT 中断双口中断C P C I 总 线图1 AD板硬件简要框图清FIFO信号远见品质 AD板的中断小结远见品质调试经验1v可中断程序的编写:应用条件 -核循环的并行指令数不小于6SPRA534 Writing Interruptible Looped Code For The TMS320C6x v调试中数据的存储和显示: 系统级调试 中的重要性 CCS的显示工具,Matlabv定点DSP实现浮点运算的考虑远见品质调试经验2 一次新增的调试代码不能过长:便于新的bug定位 防御式编程: 例:723解模糊程序边界条件 对感兴趣的事件做记录: 放到片外ram;
10、某些计数记录在halt运行后更新时可能有/1的误差 CCS添加断点的注意:run前,running中 if( Cnt1000) nop_debug(); audioaudio例子运行时,设置断点的现象例子运行时,设置断点的现象 窗口刷新的影响:application的非实时 随时关心程序运行时间: 使用timer测量时间,中断法/非中断法 注意数组的越界和指针的使用: 中断向量表被修改,程序就会跑飞远见品质调试经验3 关于全局变量和局部变量: bug例:723程序,MTD子函数设置256字的大数组,修改中断向量表 volatile 关键字:其它任务中可能修改 const关键字:编译器保证数据不
11、被修改,但是运行时用指针可 以修改;没有用?! 关于中断嵌套 观察中断间的同步关系 程序跑飞: 不要惧怕程序“死了”、“跑飞”,万事皆有原因;对编程环境的基础知识 熟悉 程序跑飞绝大多数是中断向量表被修改 “快”与“慢”,“大”与“小”:远见品质 调试经验4v选择高级的优化不会造成程序错误,如果有错误 ,是自己程序的问题。 (例:最初接dqy的 DSP板 程序,局部变量-全局变量,堆栈)v设计小实验进行某些验证: 语法,设想。例子:PM数据改变,怀疑硬件问题,结果设计DMA 改写PM,不排除软件的bug; 培养工程动手能力,想一想-试一试,vFar型数据:truncated错误vCCS不支持中
12、文目录v节拍节拍节拍:处理帧、时间粒度v改变某部分后出了问题,就是改的部分有bug:远见品质调试经验5vRestart go main跑飞和reloadgo main跑飞的 原因: (1)GIE为1和IER的某些位为1 (2)发生了某些中断或IFR某些位为1 (3)中断向量表未初始化。要运行run time load 后才初始化。发生中断后,读取中断向量表的值 是乱数。 (联系那个 设置大数组的 调试例子) v中断处理的超时错误计数器在停止(halt命令) 后加1JTAG对实时时序的影响远见品质调试小结 v应用工程师:实现层次 程序员在调试时医生与警察 v未能实现功能观察现象(错误的结果 )v
13、注重相关的基础知识的掌握:编程环境错误结果原因并非一目了然正确 结果定位监测记录改正往往不难实现硬 软远见品质硬件平台的测试v自己开发的硬件平台,在交付软件 开发工程师之前,应该做测试。以 便于硬件bug和软件bug的定位。v主要的测试内容: 数据IO,数据处理v测试方法: (1)时间足够长,1hour以上 (2)数据IO:DMA,CPU核和各 个外设通讯 (3)数据处理:FFT,充分使用各 个运算单元远见品质 关于TI DSP软件开发的学习 CCS:Turorial 和Users Guide C 的运行环境 CPU结构和汇编语言 硬件知识远见品质Ending v要客观世界可“控制”,可“利用
14、”,你需要 先深刻地理解客观世界的运行规律。然后 ,在种种规律(也可理解为“限制”)的前 提下实现你的想法。v调试例子解析远见品质华清远见DSP相关培训课程vDSP开发高级项目实战班vC6000 DSP 系统开发培训班 DSP/FPGA信号处理系统设计班v视频压缩技术与MPEG标准班远见品质 C6000 DSP 系统开发培训班课程内容v一. DSP技术概述v二. C6000 体系结构和汇编语言v三. TI DSP开发工具-CCSv四. C6000 C 运行时环境v五. 嵌入式实时系统软件开发与调试v六. C6000程序的优化v七. TI的实时操作系统:DSP/BIOSv八. C6000 DSPs系统的设计v九. C6000 DSPs板极设计远见品质让我们一起讨论!谢谢!vThe successs road