已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSP BIOS实时操作系统 王辉 培训内容 了解DSP BIOS操作系统的基本概念了解DSP BIOS操作系统的模块组成了解DSP BIOS操作系统的线程类型了解DSP BIOS操作系统的应用 什么是RTOS RTOS称为实时多任务操作系统 Real TimeOperatingSystem 是嵌入式应用软件的基础和开发平台 它是一段嵌入在目标代码中的软件 用户的其它应用程序都建立在RTOS之上 RTOS还是一个可靠性和可信性很高的实时内核 将CPU时间 中断 I O和定时器等资源都包装起来 留给用户一个标准的API接口 并能根据各个任务的优先级 合理地在不同任务之间分配CPU时间 用RTOS有什么好处 RTOS是针对不同处理器优化设计的高效率实时多任务内核 据专家预测 在优秀RTOS上跨处理器平台的程序移植只需要修改1 5 的内容 它的引入解决了嵌入式软件开发标准化的难题 基于RTOS开发出来的程序具有较高的可移植性 引入RTOS相当于引入了一个新的管理模式 可减少重复劳动 提高知识创新效率 在RTOS基础上可以编写各种硬件驱动程序 专家库函数 行业库函数以及产品库函数 然后可以和通用性的应用程序一起形成产品 促进行业内的知识产权交流 DSP BIOS概述 DSP BIOS在实质上是一个RTOS内核 它主要是为需要实时调度和同步以及主机 目标系统通信和实时监测的应用而设计的 它提供底层的应用函数接口 可用于支持系统实时分析 线程管理 调度软件中断 周期函数和Idle函数 后台运行函数 以及外部硬件中断与各种外设的管理 DSP BIOS是CCS提供的一套工具 本身占有极少的资源 使用DSP BIOS编写代码后 CCS可以提供多种分析和评估代码工具 如图形化显示各个线程占用的CPU时间 代码执行时间统计 显示输出信息等 这时可以很方便地了解系统开销情况 续 使用DSP BIOS开发DSP软件有两个重要特点 一 所有与硬件有关的操作都必须借助DSP BIOS本身提供的函数完成 开发者应避免直接控制硬件资源 如定时器 DMA控制器 串口 中断等 二 带有DSP BIOS的程序与传统程序执行有所不同 在传统开发过程中 用户自己的程序完全控制DSP 程序按顺序依次执行 在使用DSP BIOS后 由DSP BIOS控制DSP 用户的应用程序建立在DSP BIOS基础之上 用户的程序也不是按编写依次执行 而是在BIOS的调度下按任务 中断的优先级排队等待执行 BIOS优势 所有的DSP BIOS对象都可以在配置工具中静态建立 实时监测数据在主机端做格式化处理 API函数是模块化的 只有应用程序用到的API模块才会和应用程序链接在一起 为达到最快的运行速度 大部分函数用汇编语言编写 目标处理器和主机分析工具之间的通信在后台空闲循环中完成 这样不会影响应用程序的运行 如果CPU太忙 不能执行后台任务 DSP BIOS分析工具会停止从目标处理器接收信息 DSP BIOS组成 DSP BIOS实时内核和API 参见DSPBIOS模块的API函数 doc DSP BIOS实时分析工具DSP BIOS配置工具 DSP BIOS配置工具 DSP BIOS分析工具 DSP BIOS开发程序过程 用配置工具建立应用程序要用到的对象 保存配置文件 保存的同时会生成在编译和链接应用程序时所包括的文件 为应用程序编写一个框架 可以使用C C 汇编语言或这些语言的任意组合 在CCS环境下编译并链接程序 使用仿真器 或硬件平台原型 和DSP BIOS分析工具来测试应用程序 重复上述步骤 直至程序调试正确 当正式产品硬件开发好之后 修改配置文件来支持产品硬件并测试 运行时支持库 配置工具产生的链接命令文件可以自动生成指令来搜索必要的库文件 包括DSP BIOS库 RTDX库和运行时支持库 运行时支持库是由rts src建立的 rts src包含了所有的运行支持函数 DSP BIOS库中也定义了一部分存储器管理函数 包括malloc free memalign calloc和realloc函数 因为DSP BIOS库中包含了与运行时支持库相同的函数 所以DSP BIOS链接命令文件包含了一个特殊版本的运行时支持库rtsbios rtsbios不包括以下文件 续 rtbios库中未包括的运行支持函数 DSP BIOS启动序列 1 初始化DSP DSP BIOS程序从入口点c int00开始运行 复位中断向量指向c int00地址 2 用 cinit段中的记录来初始化 bss段 3 调用BIOS init初始化DSP BIOS模块 BIOS init执行基本的模块初始化 然后调用MOD init宏分别初始化每个用到的模块 4 处理 pinit表 pinit表包含了初始化函数的指针 5 调用应用程序主程序main函数 在所有DSP BIOS模块初始化之后 调用main函数 此时硬件中断和软件中断都是禁止的 应用程序可以在这里添加自己的初始化代码 6 调用BIOS start启动DSP BIOS BIOS start负责使能DSP BIOS模块并为每一个用到的模块调用MOD startup宏使其开始工作 7 执行空闲循环 调用IDL loop引导程序进入DSP BIOS空闲循环 此时硬件和软件中断可以抢占空闲循环的执行 空闲循环控制着和主机的通信 所以此时主机和目标之间的数据传输就可以开始了 BIOSInstumentation BIOS实时分析工具提供了显示和隐示两种方式进行实时分析 BIOS提供下面4种API函数实现实时监测数据的采集 LOG 事件记录管理器 STS 统计对象管理器 HST 主机通道管理器 TRC 跟踪控制器 显示和隐式监测 监测API可以让应用程序显示调用 LOG STS的API也可被DSP BIOS内部使用来收集程序执行的信息 这些内部调用提供对程序隐式监测的支持 隐式DSP BIOS监测 执行图 ExecutionGraph CPU负荷图 CPULoad 硬件中断计数和最大堆栈深度中断次数被记录在STS对象数据结构的count域 如果选择监测堆栈指针 则STS对象的maxvalue域反映了系统堆栈的最大位置 这些信息可以用来判断系统对堆栈的最大需求 监测变量中断响应延迟 事件记录管理器 LOG 模块 这个模块用来管理LOG对象 可以使用执行图或者通过配置工具建立的LOG对象来获取时间信息 用户定义的记录对象中包含了应用程序调用LOG event和LOG printf记录的信息 通常用LOG printf函数替代标准C语言中的printf函数 以便更快地在CCS中显示需要打印的信息 用户可以在DSP BIOS分析工具MessageLog窗口中实时观测这些信息 系统记录对象 systemlog 是系统创建配置文件时自动生成的 系统信息可以通过执行图获得 也可以通过MessageLog窗口 查看ExecutionGraphDetails项获得 统计对象管理器 STS模块 统计对象用于记录一个任意32位数据的统计信息 它为每一个统计对象定义了一个数据结构 包括 CountTotalMaximumAverage这些项都可利用StatisticsVies工具观察 续 STS模块 在DSP目标系统上 STS模块不断更新统计数据 但受到目标系统存储空间的限制 统计数据是以32位精度累计的 但在主机上 统计数据则是以64位精度累计的 当主机从目标系统上读取实时统计数据后 目标系统上的统计数据会进行复位 主机则保持统计数据的累加 这样 可以减小目标系统的存储空间需求并可以进行长时间的记录 跟踪管理器 TRC TRC模块管理着一系列统计跟踪打开或关闭的控制位 这些控制位能通过事件日志 LOG 和统计累加器 STS 完成对程序信息的实时捕捉 显示检测控制if TRC query TRC USER0 0 LOGorSTSopertaion TRC query函数用于监测对应的跟踪屏蔽位是否被设置 若屏蔽位设置则返回0 执行以上代码将只花费几条指令 对程序的影响是很小的 如果程序空间允许 可以在最终产品中保留这部分代码以便于现场测试 对隐式检测控制 TRC通过一系列的跟踪屏蔽位来控制记录对象和统计对象对隐式监测数据的采集 目标系统只在使能跟踪时才保存记录或统计信息 以最大程度提高效率 屏蔽位对于LOG printf LOG envent STS add等显示调用不起作用 所有目标代码对屏蔽位的改动都反映在主机上的RTA控制面板上 所有的跟踪常量都可直接使用TRC enable TRC disable来允许或禁止跟踪屏蔽位 DSP BIOS里的线程 概述 许多实时DSP应用都需要同时执行许多不相关的功能 这些功能一般是对外部事件的响应 称为线程 不同系统对线程定义不同 在DSP BIOS中将线程定义为任何独立的指令流 DSP BIOS系统使应用程序按线程结构化设计 每个线程完成一个模块化的功能 多线程程序中允许高优先级线程抢占低优先级线程以及线程间的同步和通信 DSP BIOS线程类型 按从高到低的优先级分类 线程类型有以下几种 硬中断HWIspecial CLK函数也属于HWI 软中断SWIspecial PRD函数也属于SWI任务TSK后台线程IDL 各种线程类型特点 见各种线程类型的特点和比较 doc 线程选用的原则 对线程选用原则应基于以下几点 这个线程是否具有严格的实时性 线程必须在严格的时间段内结束 以及不允许抢占 该线程执行时间相对其它部分来说是否少许多 1 严格的实时性 若线程执行需要严格的实时性 而线程的执行时间又比较短 可以选用硬件中断HWI或时钟中断CLK DSP内部TIMER 2 部分实时性 一部分线程执行要求有严格的实时性 其余部分执行时间太长且对处理时间没有太多要求 这时 仅仅用HWI显然是不理想的 一般情况下 要求严格实时性的处理都是由硬件中断触发 所以会使用硬件中断服务程序响应此类中断 以满足实时性要求 更为通用的做法是 增加SWI软件中断或TSK任务线程来完成一些非实时性的任务处理 续 我们可将代码分为多个线程 只要求有严格实时性的处理任务放到HWI硬件中断中完成 其余处理都放到SWI或TSK中完成 这些线程都具有如下特点 1 能完成实时处理任务 但运行处理时间相对较长 2 允许被其它线程抢先 任务线程与软件中断的区别 任务在执行时可以被挂起 直到条件 例如数据准备好 信号同步等 得到满足 才可以继续运行 在任务被挂起时 即任务处于暂停或阻塞 Blocked 状态 其它任务线程得到执行 而软件中断做不到这点 DSP BIOS内部提供了一组用于任务间通信和同步的内部结构 包括旗语 邮箱 队列和资源锁 而这些数据结构无法用于软件中断的同步和通信 每个任务都有自己的堆栈区 而软件中断使用共享的系统堆栈 当任务被创建 删除 退出或切换时 都可用调用特殊函数 钩子函数 这些钩子函数可以用于保存任务的环境而不仅仅是CPU寄存器 任务线程的优先级比软件中断低 而比后台IDL线程高 任务内部又被划分为16个优先级 其中0级内核保留给LOOP循环使用 用户可使用1 15优先级 周期性服务 特殊应用 需要周期性地处理某类任务 且处理间隔比处理任务所需的时间要长得多 对于这种要求 建议使用DSP BIOSPRD周期函数来完成 周期性函数属于软件中断中的PRD swi对象 所有的周期性函数具有同样的SWI软件中断优先级 因此一个周期函数是不能抢先其它周期函数的 为了保证所有PRD函数正常运行 除了尽量缩短周期函数本身的处理时间外 还需要提高整个PRD函数的优先级 以保证周期函数在系统时钟触发时能够抢占那些低优先级的线程 不需要实时性 有时线程只需要在后台进行一些无关紧要的处理 比如收集统计信息 与PC交换数据 这时 建议使用IDL线程 该循环是一个无限循环 它不停地调用IDL后台对象中的所有函数 每个函数在前一个函数结束后依次运行 DSP目标系统与主机的DSP BIOS分析工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届海南省北师大万宁附中高二上化学期中达标检测模拟试题含解析
- 2025年煤焦化验室试题题库及答案
- 2025年工程伦理考试题库及答案
- 2025年超市组长面试题库及答案
- 江苏省溧中、省扬中、镇江一中、江都中学、句容中学2026届化学高三第一学期期末达标测试试题含解析
- 2025年伦理学罗国杰题库及答案
- 2025福建厦门港务贸易有限公司社会招聘1人备考题库及答案详解一套
- 2025中国人民健康保险股份有限公司临沧中心支公司招聘9人备考题库含答案详解(典型题)
- 线段直线射线和角公开课教案(2025-2026学年)
- 开学安全教育教案(2025-2026学年)
- GB/T 6609.22-2004氧化铝化学分析方法和物理性能测定方法取样
- GB/T 4117-2008工业用二氯甲烷
- 风能系能源公司风电场备品备件储备管理标准
- GB/T 11313.4-2007射频连接器第4部分:外导体内径为16mm(0.63in)、特性阻抗为50Ω、螺纹连接的射频同轴连接器(7-16型)
- (完整版)输血科生物安全手册(规范装订册)
- 五年级数学七单元植树问题课件
- 静脉曲张日间手术的治疗方案课件
- 钢结构焊接工艺评定
- 单管正激式开关稳压电源的设计
- 矿井“三铁”管理制度及考核办法
- 食堂食材配送整体实施方案及应急保障方案
评论
0/150
提交评论