




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSP BIOS的功能 DSP BIOS是CCS提供的一套工具 用于支持系统实时分析 它本身仅占用极少的CPU资源 使用线程来管理程序 如硬件中断服务子程序 软件中断服务子程序 周期函数 idle函数等 提供多种分析工具 评估代码 如图形化显示各个线程占用的CPU时间等 可以修改各个线程的优先级 一 DSP BIOS的组件 1 DPS BIOS实时库和API运用DSP BIOS的一个基本概念是我们的运行程序是一个多线程的情况 我们通过API 运用程序接口 函数来管理这些线程 我们可以把DSP BIOSAPI分为许多模块 不同的线程属于不同的模块 这些模块包括 DSP BIOS提供的API模块 CLK模块 用于片上的定时器管理 设置定时器中断的间隔时间 HST模块 用于实现主机与目标系统间数据的输入或输出 HWI模块 用于硬件中断管理 可设置相应的中断服务子程序 IDL模块 用于管理idle函数 该类函数具有最低优先级 LOG模块 用于事件的记录显示 例如 你可以通过该API输出调试信息 MEM模块 用于定义目标系统的内存使用 系统根据此信息自动产生 cmd文件 PIP模块 用于管道管理 可以实现线程间的数据交换 PRD模块 用于实现周期性的函数 该类函数的执行频率可以由CLK模块或自己调用PRD tick决定 RTDX模块 用于主机与DSP目标系统间的实时数据传递 STS模块 用于状态统计管理 你可以在CCS下查看这些统计参数 SWI模块 用于管理软件中断 CCS将运行队列中的软件中断 并可以设置15个优先级 但都比硬件中断低 API管理进程的具体方法是通过API函数 这些函数功能非常多 如 建立和删除对象 变换线程优先级等 函数的详细说明 2 DSP BIOS配置工具 API函数不是直接对线程进行管理 而是通过不同模块中建立的对象来实现的 这些对象同各个线程直接连结 不同模块中对象的建立有两种方法 一是通过在源文件中使用API函数调用 可以动态产生 动态删除 一是通过DSP BIOS配置工具产生 是静态产生 不可删除 DSP BIOS配置工具产生对象的优点 图形化的编辑工具 使用更加方便 可以对对象进行各种参数设置 可以建立各种对象 而API函数只能建立部分对象 部分模块的API被执行程序调用和绑定 优化的DSP BIOS的连接库 可以达到汇编语言的执行效率 目标板与插件之间的通信是通过后台IDLE线程循环完成 而IDLE线程实在DSP资源可用的情况才执行 保证了程序的执行效率 提供了具有不同优先级的线程 依次是硬件中断 软件中断 任务 IDEL空闲函数 以及周期函数 且其优先级可配置 线程之间可通过旗语 邮箱等工具进行通信 DSP BIOS配置工具产生对象的缺点 一旦建立 不论程序中是否使用 都有占有一定资源 一旦建立 在程序运行中 不可以删除 3 DSP BIOS插件 完成对运行程序的实时分析 时刻监视CPU的负荷 各个线程的执行情况 各段代码的花费时间等等 DSP通过JTAG口返回到PC数据 这些数据反映我们需要的情况 这些数据的产生是在CPU的空闲状态时产生的 所以 不会对DSP本身的运行产生影响 Programtracing Displayingeventswrittentotargetlogs reflectingdynamiccontrolflowduringprogramexecution Performancemonitoring Trackingsummarystatisticsthatreflectuseoftargetresources suchasprocessorloadandtimingFilestreaming Bindingtarget residentI Oobjectstohostfiles 二 用DSP BIOS创建应用程序 在Project菜单中选 New 新建或 Open 打开一个工程文件 将需要的 h asm c obj lib添加到该工程文件中 将DSP BIOS的配置文件 cdb添加到工程文件文件中 注意 LNK使用的 cmd文件由DSP BIOS配置文件自动产生 在工程文件窗口下用鼠标左键双击配置文件将其打开 展开LOG选项 并用鼠标右键单击 在弹出菜单中选择 InsertLOG 项 修改新增LOG0对象的名称 如trace 使用鼠标右键单击 并在弹出菜单中选择 Property 修改其参数 如将buflen改为512 增加包含的头文件 如std h log h增加变量说明 这些变量由配置工具创立的 如externLOG OBJtrace 增加LOGAPI函数 如LOG printf 该函数可以在DSP BIOS提供的事件记录窗口显示信息 设置相应的编译 连接开关 使用 BulidAll 生成 out文件 注意 Linker选项中的输出文件名应该与工程文件包含的DOS BIOS配置文件一致 使用 File 菜单将生成的OUT文件装入目标系统 选择 Debug 菜单中的 GoMain 运行程序到main 函数 选择 Tools 菜单下的 DSP BIOS 选项 然后选 MessageLog 用鼠标右键单击出现的MessageLog窗口 在弹出菜单中选 PropertyPage 在 name 选项中选择 trace 使得该窗口显示送到trace对象的信息 使用LOG printf trace volume 语句 使用F5运行程序 观察该窗口输出 注意事项 配置文件有program cdbprogramcfg h54programcfg s54programcfg cmd手工添加文件program cdb和programcfg cmdprogramcfg s54自动添加 库文件rst lib不需要 C源文件中要加上各种API头文件 其他源文件同一般的CCS使用一样 三 线程的基本概念 1 什么是线程实时的DSP应用 往往需要把许多看似不相干的功能同时实现 不同的功能通过不同的指令流实现 而我们把这些指令流叫线程 同一个处理器实现多线程的方法是给线程加上优先级 优先级高的线程首先执行 2 线程的种类 硬件中断Hardwareinterrupts HWI includesCLKfunctions软件中断Softwareinterrupts SWI includesPRDfunctions任务Tasks TSK 背景线程Backgroundthread IDL 硬件中断 硬件中断函数与外部中断信号一一对应 一旦中断信号或事件发生 硬件中断函数 也称中断服务程序 就执行 在DSP BIOS应用函数中 中断函数是优先级最高的线程 硬件中断函数执行时间应限定在2到100ms内 频率在200KHz左右 软件中断 软件中断是通过调用在程序SWI函数而被触发的 软件中断的优先级出于硬件中断与后台线程之间 SWIs执行时间较硬件中断函数可宽一些 可在100ms或更长一些 任务Task 其优先级较软中断低 但高于后台线程 任务不同于软中断 软中断一旦执行就必须完成 而任务却可挂起 直到要求的资源满足后才重新执行 DSP BIOS提供了诸如队列 旗语 邮箱等方式用于任务见通信 背景线程 在DSP BIOS程序中执行优先级最低的空闲循环 IdleLoop IDL 在main函数返回后 DSP BIOS为每个模块调用启动线程 然后便进入空闲循环 空闲循环持续不断地运行 当优先级更高的线程启动后才中止 只有没有运行时间限制的功能可设置为背景线程 时钟函数 被片上时钟中断源所触发 执行频率为中断频率 时钟函数是HWI TINT硬件中断 周期函数 执行周期是片上时钟中断或其它事件周期的整数倍 周期函数是一典型的软件中断 3 优先级 硬件中断最高 一个线程可以被挤占 preempt 中途被中断 但是不能被阻塞 block 暂停等待 软件中断较高 又有14个等级 可以被挤占 但是不能阻塞 TASK较低 有15个等级 可以挤占和阻塞 IDL最低 循环执行一定线程 4 线程的保护和挤占 四 硬件中断使用方法 1 中断矢量表在DSP BIOS的运用中 可以不必去建立中断矢量表 只需要在模块MEM中 对VECT的对象进行设置 这个设置是向DSP提供中断矢量表的地址 再通过HWI模块 对需要使用的硬件中断进行中断服务程序的设置就可以了 2 硬件中断的屏蔽 在DSP BIOS的配置工具中不能对那个中断进行屏蔽 但可在程序中通过对寄存器的值的控制来完成对中断的屏蔽 在程序中 调用API函数完成对硬件中断的控制 如函数 HWI enableHWI restoreHWI disable 五 软件中断使用方法 1 软件中断的建立软件中断实际就是把一个已经建立的函数作为一个中断程序 这个中断程序的执行由软件触发 软件中的建立可以通过配置工具 进行静态的建立 软件中断的建立 也可以利用API函数动态的建立 swi SWI create attrs 2 软件中断的优先级 优先级在建立软中断的时候就确定了 如果是使用配置工具 在软件中断的对象属性中设置 如果是使用动态API函数建立 则在建立的时候 可以使用参数来确定他的属性 3 软件中断的邮箱 邮箱是一个32bit的寄存器 可在配置工具中 建立软件中断对象的时候设置其初始值 在程序中 使用下面的API函数来控制一个软件中断的邮箱 从而控制软件中断的执行 SWI andnSWI decSWI incSWI orSWI post 4 邮箱函数 邮箱的API函数在程序中使用 用来控制邮箱值的变换 从而控制软件中断的执行 SWI post直接调用软件中断 不改变邮箱值 SWI inc邮箱值加1 同时调用软件中断 SWI or其所带参数同邮箱值相比特或 同时调用软件中断 SWI dec邮箱值减1 如果减1后为0 调用软件中断 SWI andn其所带参数同邮箱值相比特与 相与后邮箱值为0 调用软件中断 六 TASK使用方法 1 建立方法其建立方法 含义同软件中断是相同的 同软件中断相比 优先级低 同软件中断相比 可以被悬挂 2 任务的特点 同软件中断相比 每个TASK使用自己的堆栈 大小分别设置 而所以软件中断使用相同的堆栈 原因是每个TASK被挤占的可能性非常大 每次被挤占时 都需要保护现场 3 TASK工作状态 running whichmeansthetaskistheoneactuallyexecutingonthesystem sprocessor ready whichmeansthetaskisscheduledforexecutionsubjecttoprocessoravaila bility blocked whichmeansthetaskcannotexe cuteuntilaparticulareventoccurswithinthesystem Whenataskisblocked itisoftenbecausethetaskispendingonasemaphorewhichisunavailable terminated whichmeansthetaskis termi nated anddoesnotexecuteagain 4 状态间的转换和函数 5 TASK间通信 线程一般通过软件中断 SWI模块 来实现 利用TSK yield函数实现同等优先级的任务之间的切换 TASK间的通信通过旗语 Semphore 和邮箱 MailBox 旗语和邮箱在配置工具中都可以建立 实现TSK yield 函数的例子 打开工程文件tsktest mak 创立三个同优先级的任务 task0 task1 task2 实现TSK yield 函数的例子 Voidmain Voidtask Intid Inti for i 0 i NLOOPS i LOG printf 哪个结果是正确的 利用旗语完成任务间的同步 旗语可以完成任务之间的通讯 还可以同步同优先级的任务的执行 当一个任务等待旗语时 其它任务可以执行 参见semtest mak 来说明旗语的使用 共创建五个任务 initTsk reader0 writer0 writer1 writer2 利用旗语同步任务 任务initTsk 动态建立两个队列 QUE对象 该任务优先级最高 最先被执行 任务reader0 循环等待旗语 然后输出队列信息 任务writer0 writer1 writer2 处理队列信息 然后发送旗语 利用旗语同步任务 任务reader0代码 Voidreader Msgmsg Inti for i 0 ival msg id QUE put 任务writer0 1 2代码 Voidwriter Intid Msgmsg Inti for i 0 iid id fillinvalue msg val i 利用邮箱在任务间交换信息 利用邮箱在任务间交换信息 Mbxtest mak为例子 任务reader0代码 Voidreader Void MsgObjmsg Inti for i 0 i waitformailboxtobepostedbywriter if MBX pend 任务writer0 1 2代码 Voidwriter Intid MsgObjmsg Inti for i 0 i NUMMSGS i fillinvalue msg id id msg val i NUMMSGS Int a enqueuemessage
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 61000-4-11:1994+AMD1:2000 CSV EN-D Electromagnetic compatibility (EMC) - Part 4-11: Testing andmeasurement techniques - Voltage dips,short interruptions and voltage v
- 【正版授权】 IEC 60601-1:2025 SER EN-FR Medical electrical equipment - ALL PARTS
- 北京高尔夫球童培训知识课件
- 北京食品安全知识培训课件
- 趣味体态测试题及答案
- 安装预算考试题及答案
- 跆拳道裁判员技术考试试题及答案
- 精神问题测试题及答案
- 福田物业面试题及答案
- 探伤防护考试题及答案
- 小儿泄泻(小儿腹泻病)中医临床路径
- 免疫05-第五章-免疫凝集试验
- 2025年中国东方航空集团招聘笔试参考题库含答案解析
- C919机组培训-导航系统
- 高考地理易错题专练:地球运动易错突破(4大易错)含答案及解析
- 2025年上半年上海海港综合经济开发区招考易考易错模拟试题(共500题)试卷后附参考答案
- 2024ESC心房颤动管理指南解读
- 2024年度礼品设计创新研发合同3篇
- 树木砍伐用工合同模板
- 小学班主任资料-家校联系本
- 氧化铝制取全套教学教程整套课件全书电子教案
评论
0/150
提交评论