内容8--DSP-BIOS的应用v2.0
DSP_BIOS实时操作系统介绍

DSP/BIOS实时操作系统介绍DSP/BIOS是一个简易的嵌入式操作系统,主要是为需要实时调度、同步以及主机-目标系统通讯和实时监测的应用而设计的。
DSP/BIOS集成在CCS中,不需要额外的费用,但不提供源码,它是 TI公司倡导的 eXpressDSP 技术的重要组成部分。
DSP/BIOS本身只占用很少的资源,而且是可裁减的,它只把直接或间接调用的模块和API连接到目标文件中,最多为6500字,因此在多数应用中是可以接受的。
它提供底层的应用程序接口,支持系统实时分析、线程管理、调用软件中断、周期函数与后台运行函数(idel函数)以及外部硬件中断与多种外设的管理。
利用DSP/BIOS编写代码,借助CCS提供的多种分析与评估工具,如代码执行时间统计、显示输出、各线程占用CPU的时间统计等,可以直观地了解各部分代码的运行开销,高效地调试实时应用程序,缩短软件开发时间,而且DSP/BIOS是构建于已被证实为有效的技术之上的,创建的应用程序稳定性好,软件标准化程度高,可重复使用,这也减少了软件的维护费用。
DSP/BIOS组件由以下3部分组成:1. DSP/BIOS实时多任务内核与API函数使用DSP/BIOS开发程序主要就是通过调用DSP/BIOS实时库中的API(应用程序接口)函数来实现的。
所有API都提供C语言程序调用接口,只要遵从C语言的调用约定,汇编代码也可以调用DSP/BIOS API。
DSP/BIOS API被分为多个模块,根据应用程序模块的配置和使用情况的不同,DSP/BIOS API函数代码长度从500字到6500字不等。
CCS FOR C6000 V2。
2提供的DSP/BIOS主要的API模块包括以下几种:CLK模块、HST模块、HWI模块、IDL模块、LOG模块、MEM模块、PIP模块、PRD模块、RTDX模块、STS模块、SWI模块、DEC模块、SIO模块、MBX模块、QUE模块与SEM模块。
DSP-BIOS的应用v2.1.1

DSP/BIOS 的 API模块
电子科技大学
◆STS模块:用于状态统计管理,可以在CCS下查看这 些统计参数。 ◆SWI模块:用于管理软件中断。CCS将运行队列中 的软件中断,并可以设置15个优先级,但都比硬件中 断低。 ◆SIO模块:流式I/O管理模块,可用于设备驱动模块 与任务或软件中断之间的数据交换。 ◆MXB模块:管理邮箱,实现任务间同步或通讯。 ◆QUE模块:用于任务或线程的队列管理。 ◆SEM模块:旗语管理,用于任务或线程间的同步。
后台线程(IDL线程) • 任务(TSK模块) • 软件中断(SWI模块) • 硬件中断(HWI模块)
•
DSP/BIOS 的线程类型
HWI
硬件中断
电子科技大学
HWI 的优先级由硬件中断决定 每个硬件中断提供一个ISR SWI 有14个优先级 同一优先级可以有多个SWI线程. TSK 有15个优先级 同一优先级可以有多个TSK线程. IDL 线程包括多个IDL函数 这些函数会连续反复调用.
SWI
Priority
软件中断
TSK
线程
IDL
后台线程
HWI 线程由硬件中断触发 ! IDL 为后台运行的线程.
线程选择的一般原则
电子科技大学
严格的实时性 :如果线程的执行需要
严格的实时性,而线程执行需要的时间 又很少时,你可以使用硬件中断或时钟 函数来完成。CLK时钟函数也是在硬件中 断中执行的。
部分实时性:执行时间较长,使用 SWI软件中断或TSK任务线程来完成 一些非实时性的处理任务。这样可 以减少中断的潜伏期,提高响应实 时性请求的能力。
线程选择的一般原则
电子科技大学
周期性的服务:需要周期性或在固定的
实时操作系统DSP BIOS

1、严格的实时性
若线程执行需要严格的实时性,而线程的执 行时间又比较短,可以选用硬件中断HWI或 时钟中断CLK; DSP 内部TIMER
2、部分实时性
一部分线程执行要求有严格的实时性,其余 部分执行时间太长且对处理时间没有太多要 求,这时,仅仅用HWI显然是不理想的。 一般情况下,要求严格实时性的处理都是由 硬件中断触发,所以会使用硬件中断服务程 序响应此类中断,以满足实时性要求。更为 通用的做法是,增加SWI软件中断或TSK任 务线程来完成一些非实时性的任务处理。
BIOS优势
所有的DSP/BIOS对象都可以在配置工具中静态建立; 实时监测数据在主机端做格式化处理; API函数是模块化的,只有应用程序用到的API模块才 会和应用程序链接在一起; 为达到最快的运行速度,大部分函数用汇编语言编写; 目标处理器和主机分析工具之间的通信在后台空闲循环 中完成,这样不会影响应用程序的运行。如果CPU太忙, 不能执行后台任务,DSP/BIOS分析工具会停止从目标 处理器接收信息。
DSP/BIOS组成
DSP/BIOS实时内核和API(参见DSP BIOS 模块的API函数.doc) DSP/BIOS实时分析工具 DSP/BIOS配置工具
DSP/BIOS配置工具
DSP/BIOS分析工具
DSP/BIOS开发程序过程
用配置工具建立应用程序要用到的对象; 保存配置文件,保存的同时会生成在编译和链接应 用程序时所包括的文件; 为应用程序编写一个框架,可以使用C、C++、汇编 语言或这些语言的任意组合; 在CCS环境下编译并链接程序; 使用仿真器(或硬件平台原型)和DSP/BIOS分析工 具来测试应用程序; 重复上述步骤,直至程序调试正确; 当正式产品硬件开发好之后,修改配置文件来支持 产品硬件并测试。
DSP/BIoS在数字监测接收机中的应用

机 通 过周 期 地 扫 描 给 定 频 段 , 利用 频 谱 分 析 测 量 频 谱 占用
度 、 率 发 射 类 型 、 宽 和 载 干 比 等 参 数 , 实 现 自 动 频 带 并
测量。
2 数 字 监 测接 收 机 系统
2 1 数 字 监 测 接 收机 系统 分 析 .
数 字 监 测 接 收 机 工 作 原 理 如 图 1所 示 。数 字 监 测 接
l l
_
_
DS / I P B oS在 数 字 监 测 接 收 机 中 的 应 用
杨 磊 , 会 勇 李
( 电子 科 技 大学 电子 工 程 学 院 , 都 6 1 3 ) 成 1 7 1
助 。实 时 分 析 工 具 主要 包 含 两 方 面 的 内容 : 时 数 据 交 换 实
引 言
} 过口 l fl ! 通I制 l II P 三 园 鹭躯 接 } s控 计 远 算 堡 程 机 塑
控制与 数据分析
中频 数 字 信 号 处 理 器 是 系统 的核 心 部 件 , 责 对 宽 带 负
1 1 多线 程 实 时 内核 .
DS / 1 P B 0S设 计 的 主 要 目的 是 降 低 存 储 器 需 求 的 空 间和 CP 响应 时 间 。 这 种 设 计 有 利 于 缩 减 程 序 代 码 量 , U 提 高 系 统 模 块化 程 度 , 降低 指 令 的执 行 周 期 以 及实 现后 台
I 测 试 等 工作 。 TU DS P需 要 利 用 D P B OS操作 系 统实 现 以下 功 能 : S /I 接
库 。多 线 程 实 时 内核 维 护 调度 多线 程 的运 行 , 责 任 务 负 的调 度 及 时 问 轮 询算 法 的实 现 ; 时 分 析 工 具 提 供 线 程 算 实 法 实 时 运 行 的情 况 , 便 用 户 验 证 系 统 设 计 的 正确 性 和 可 方 靠 性 ; 片 支 持 库 负 责 管 理 外 设 资 源 , 用 图形 工 具 便 可 芯 利 完 成 复 杂 的 外设 寄存 器 初 始 化 配置 。
DSP-BIOS使用入门

DSP-BIOS使用入门从环境说到搭建第一个工程请注意,此文默认读者已经对DSP及CCS V3.3环境有一定的了解了,知道cmd文件的配置,知道新建工程,编译并连接仿真器下载!如果你对这些还都不熟悉,请先熟悉这些!当然,最好要有操作系统的基本概念——任务、调度、中断!第一个问题:DSP/BIOS(好吧,我们一般这样写)是什么?是TI公司专门为DSP开发的嵌入式实时操作系统,既然是TI公司为自己的DSP开发的——官方的,当然性能是杠杠的了(当然,我还在入门,这点也是道听途说,没有实际体会)。
既然说到实时操作系统,那还有哪些嵌入式实时操作系统呢?Linux是吗——不是,VxWorks——是,哦,还有一个小的开源系统——uCOS II也是。
问题二:要使用DSP/BIOS,需要安装什么环境呢?本文为CCS v3.3,默认就安装上DSP/BIOS,版本为V5.31.2(可以通过Help->About...菜单查看版本)。
当然,如果需要其它版本(可以同时安装多个版本),可以到TI官网下载,链接:/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/dspbios/index.htm l请注意:DSP处理器型号、CCS版本、DSP/BIOS版本之间存在兼容性,请注意选择!下载后安装到CCS所在目录,通过Help->About...中的Manager选择使用的BIOS版本!本文使用的是CCS V3.3默认的DSP/BIOS版本,即V5.31.2。
无特殊说明,本文的例子运行在TI的CCS 3.3软件仿真模式下,仿真环境配置如下(使用C6713处理器仿真):问题三:如何建立第一个BIOS工程?先建立一个普通工程,Project->New...,如下:File->New->DSP/BIOS Configuration...新建DSP/BIOS配置文件,保存一下,配置文件的后缀为*.tcf.将配置文件和由配置文件自动生成的cmd文件添加到工程,新建一个main.c文件,把main.c添加到工程(总是忘记这个然后还到处找问题),写个最简单的代码吧,int main(void){return 0;}编译一下工程,此时出现错误提示:js: "./bios_first.tcf", line 11: Heaps are enabled, but the segment for DSP/BIOS Objects (MEM.BIOSOBJSEG) is not set correctly. Please create a heap in one of your data segments and set MEM.BIOSOBJSEG to it.没关系,在下一小节将看到怎么去掉该错误!DSP/BIOS的配置方法系统配置在Global Setting上右键属性,设置DSP目标板时钟,CLKOUT时钟以及大小端模式。
灵活的DSP/BIOSⅡ设备驱动程序

a pplc ton i a i de l ve opme b s pa a i t e ofw a e o pon nt f om ha dwa e et l .Thi nt y e r tng h s t r c m e s r r r d ais s
p o o e o t a e r us m o r m t s s f w r e e, dul r de i , nd c de el pm e f h r a s gn a o v o nto a dw a e a of w a e. hi ot r nd s t r T s n e
DM A 的 实 例 。
限 制 对 I0 服 务 或 线程 类 型 的选 择 。 /
Fl x b e De ie Drv s f rDSP/ OS Ⅱ e i l v c i er o Bl
M i ut g , t a nY an e l
( e to n o ma in. u z o g u ie st f ce c n tc n lg W u a 3 0 4 Elcr n if r to H a h n nv ri o sin ea d e h oo y, h n 4 0 7 ) y
i r a —i DS a p ia in n e lt me P p l to wrte wih h DS BI I r a —i k r e .Th Ex mp e c itn t t e P/ OS e ltme e n 1 e a l
DSPBIOS使用总结
DSPBIOS使用总结1 DSP/BIOS 实现实时数据调试和交换摘要:本文介绍了基于TI公司DSP/BIOS实现实时数据调试和交换的方法----数字信号处理技术已成为目前最广泛的应用技术之一,TI 公司在不断推出各种新型高速低功耗DSP的基础上,提出了基于DSP的微型实时操作系统BIOS的概念.----DSP所面临的系统越来越复杂,诸如多任务处理,烦琐的硬件设备管理,实时数据处理及传送等等,传统的DSP编程越来越难以胜任.----TI公司推出的BIOS可以支持以上功能,它提供了众多的模块及面向用户的API接口,包括多优先级多任务系统调度,内存管理,硬件DRIVER抽象,以及数字信号处理所独特的实时数据调试及交换的支持.1 .1B IOS中的图形化管理界面----先介绍一下BIOS中的图形化管理界面:DSP/BIOS CONFIGURATION TOOLS。
在CCS 集成开发环境中打开FILE -> NEW -> DSP/BIOS CONFIGURATION,就可以看到DSP/CONFIGURATION TOOLS,在这里用图形化的界面集中管理所有的BIOS模块,包括硬中断,软中断,任务,时钟,管道等,在每个模块下都可以添加新的对象以及编辑它的属性,添加完对象会在工程中自动生成相应的代码,用户程序中只需声明此对象,然后调用它的API函数就可以了。
----下面主要介绍数字信号处理所独特的实时数据调试及交换----在通常的软件调试中如何去观察变量?很简单,我们会单步运行或者设置断点,然后在WATCH窗口中观察变量的值.这种经典的调试方法在数字信号处理中捉荆见拙,因为我们面对的是实时任务,程序的停顿会使我们面对的系统面目全非.DSP/BIOS的解决方案是提供LOG模块,在目标DSP内,LOG对象将要监控的信息实时的捕捉存放在DSP 的特定缓冲LOGBUFFER中,在DSP进入空闲的时刻通过JTAG接口传回主机,主机端的CCS集成环境将接受数据并显示在打开的LOG观察窗口中,从而不打断正常的程序运行情况下,获取必要的调试信息。
《CCS及DSP、BIOS的原理及其应用》
• 数据的图形显示工具,可绘制时域/频域波形、眼图、星座 图、图象等,并可自动刷新
• 提供GEL工具,用户可以编写自己的控制面板/菜单,方便 直观地修改变量,配置参数等
• 装载该“.out”文件:File “ load program” ” 所建的 工程目录” “debug” “volume.out” 打开
• CCS装载完毕该.out文件后,会自动弹出disassembly窗 口,显示构成源代码的反汇编指令。
建造完毕的CCS窗口及.out文件的装载 “.out”文件的存放目录
• DSK入门开发套件(DSK)
代码开发工具,包括基于TMS320C6000DSPs的板卡,软硬件仿真 环境可以与 PC通信,很适合初步接触DSP的学习者入门和进一步 熟悉提高
CCS(Code Composer Studio)功能简介
• CCS是一个基于Windows的DSP集成开发环境;加 速和提高程序员创建与测试实时嵌入式信号处理 系统的开发过程
是一种先进的编程接口协助编程者开发、测试C6x的C程序以及汇 编程序,也是C6x simulator 和emulator 的接口。 调试器通过图形界面直观地将代码、数据和命令分开显示。动态 的性能分析工具提供了对代码执行进行统计的手段,可以直接反 馈程序的性能进而确定和解决代码瓶颈。
• Simulator
通过模拟DSP硬件对代码的执行,方便用户进行软件的开发和调 试。用户可以在没有目标板的情况下编写软件,有限的模拟一些 硬件功能。
• Emulator
基于边界扫描协议的系统仿真工具,用于系统集成阶段的软件和 硬件联调。通过JTAG接口,可以访问DSP器件的全部内存和寄存 器,方便有效的硬件对软件执行的调试工作。
实时操作系统DSP/BIOS在DSP开发中的应用
能 力 , 对不 同 的应用 , 计 了通 用 针 设
图 lV 5 0 C 4 2全系统结构框图
… - 1. ▲ … 一
l F L l A S 用 H
一 一
维普资讯
\
\I 元 器 件 Cs
O— — 呲一 一 —— 一 一一 呲 OO 呲呲0 OO 呲呲
主 机 交互 接 口( p t tu) I u/ p t n Ou 提 供 DS P实时 运 行 时 与 主机 通 过
DS / I S 一 个 用 户可 剪裁 的 仿 真 口和 C S交互 数 据 的机 制 ; PB O 是 C 实时 操 作 系统 ,主要 由三 部分 组 成 :
/
R1 4 0
A S U2 8
以根 据 需要 剪 裁 。 实际 应 用 中需要 的 定 制 算 法 作 为 一 个 线 程 插 入 Ds / P BO 的调 度 队列 , IS 由D PB O 进 行 S/IS
0
VDD
l 2 3
4
C H0 C l 丑 c H2 C H3 C H4 C 珏5
根据 T 公 司提 供 的对 比数 据 , I 价 格仅5 美元 的 T 30 C 4 2 片实 MS 2 V 50 芯 时 信 号 处 理 能 力 相 当 于 主 频 为
硬 型 件模
r L 、
u r ^ ' '
空 间
ቤተ መጻሕፍቲ ባይዱ
D S P
程序 数据空间 引脚
控 制
电源
\
荫
D
濂
秀 ≯ 拳
。 睦 _
犬 】 ,1 向 凰 tH
I 弓木 呆 司 烈 茜
理
系统结构,有着广泛的工程应用前
DSP_BIOS简单实例教程
Code Composer Studio 教程(二)——开发一个DSP/BIOS程序在此教程中,通过使用DSP/BIOS来优化hello程序。
此教程需要一个目标板,而且不可以用一软件模拟器来实现。
同时,此教程需要CCS的DSP/BIOS部分。
步骤1:创建一个配置文件另一种实现hello程序的方法是使用配有DSP/BIOS API的LOG模块(API——应用程序接口)。
你可以在加载入的程序中使用DSP/BIOS来提供基本的运行时间服务。
API模块使实时DSPs进行最优化。
不同于C库调用如puts(),DSP/BIOS在不暂停目标硬件的情况下进行实时分析。
另外,API代码占用更小的空间,同时比C标准的I/O运行更快。
一个程序可使用一个或更多的DSP/BIOS模块。
在此,修改hello 文件以使用DSP/BIOS API。
为应用DSP/BIOS API,一个程序必须拥有一个程序所使用的定义了DSP/BIOS对象的配置文件。
1)打开项目myhello.mak。
(在D:\han\study2目录下)2)File ——> New ——> DSP/BIOS Config。
3)选择对DSP板的类型,确定。
此时弹出一界面窗口。
4)右击LOG-Event Log Manager,并选择Insert LOG,这样建立一个名为LOG0的LOG对象。
5)右击LOG0,选择Rename,改名为“trace”。
6)File ——> Save。
保存于工作目录下,配置文件名为myhello.cmd。
保存此配置直接产生以下文件:①myhello.cdb:保存配置的设置。
②myhellocfg.cmd:连接器命令文件。
③myhellocfg.s62:汇编语言源文件。
④myhellocfg.h62:包含在myhellocfg.s62中的汇编语言头文件。
尽管这些文件拥有.s62和.h62的扩展名,它们也可应用在TMS320C6701中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学
任务线程的特点
所有任务线程的优先级都低于硬件中断 和软件中断。 任务线程和软件中断不同的是:一个任 务线程可以中断自己的运行,转而运行 其它的任务。当某些条件满足后又恢复 继续执行。 任务的切换不是任何情况下都被允许, 只有在中断发生(有更高优先级的线程 要运行),或某些任务模块的API函数调 用时才会发生。
DSP/BIOS 的 API模块
电子科技大学
◆CLK模块:用于片上的定时器管理,设置定时 器中断的间隔时间。 ◆HST模块:用于实现主机与目标系统间数据的输 入或输出。 ◆HWI模块:用于硬件中断管理,可设置相应的 中断服务子程序。 ◆IDL模块:用于管理后台idle函数,该类函数具 有最低优先级。 ◆LOG模块:用于事件的记录显示。例如,可以 通过该API输出调试信息。
等待。。。
Call G723_code()
存储器
电子科技大学
使用DSP/BIOS时的程序结构
Main(){}
INT
HWI_AD
PIP,SIO,DEV
DSP/BIOS内核
post swi
存储器
SWI_G723_decode IDL模块
Real-time scheduling
main () { for (;;); } ISR1() { algorithm1(); } ISR2() { algorithm2(); }
硬件中断管理
电子科技大学
硬件中断管理器包含了所有的硬件中断, 这些硬件中断根据具体的目标系统按照优 先级从高到低的顺序排列。 通过这个硬件中断管理器,能够为每个DSP 中的硬件中断配置中断服务程序(ISR)。 需要特别提醒的是若使用DSP/BIOS内核开 发应用程序,用户便不能随意修改中断向 量表的位置 推荐使用DSP/BIOS的硬件中断调度功能。
DSP/BIOS应用程序的结构
DSP/BIOS API提供可伸缩的实时核,还提 供了有优先级的多线程处理。它是专为那 些需要实现实时调度、同步以及通讯的应 用程序而设计。在一个包含DSP/BIOS内核 的应用程序按优先级从低到高有四种主要 线程:
后台线程(IDL线程) • 任务(TSK模块) • 软件中断(SWI模块) • 硬件中断(HWI模块)
任务的通讯和同步
电子科技大学
MBX邮箱管理模块 :两个任务线程可以通 过邮箱来完成数据的交换。 SEM旗语管理模块 :DSP/BIOS内核提供 的旗语实际上是信号量旗语,该旗语管 理模块通过对旗语的计数来完成任务线 程的同步和相互作用。 QUE队列管理模块 :在任务间或任务与软 件中断、硬件中断间共用队列
实时调试集成环境 DSP/BIOS的应用
讲演: 管庆
主要内容
电子科技大学
DSP/BIOS的概述- Introduction DSP/BIOS的实时调度-Real Time Scheduling DSP/BIOS提供的实时分析工具- Real Time Analysis Tools DSP/BIOS高级应用:通讯、同步、硬件
创建DSP/BIOS配置
电子科技大学
从已有的DSP/BIOS配置文件中修改获 得 在“File”菜单中新建配置文件,CCS 提供了许多摸板共选择 将创建的配置文件保存到你的工作目 录下 将创建的配置文件(*.cdb)添加到 prject工程文件中。
创建DSP/BIOS配置
电子科技大学
配置工具将自动创建下面的文件(‘C6000为例): – 当保存配置文件(如my.cdb) mycfg.s62 mycfg_c.c mycfg.h mycfg.h62 Assembly file C file Header file for C Header file for assembly
void main (void) { /* Put all your setup code here return; /*DSP BIOS starts after }
Putting it all together…
*/ the return */
/* Hardware Interrupt */ void timerIsr (void) { /* Put your code here */ SWI_post (&SWI_for_algorithm_1); SEM_post (&taskOneSem); } /*Software Interrupt */ void algorithm_1 (void) { /* Put your code here */ } /* Task */ void ProcessTask (void) { while (1) { SEM_pend (&taskOneSem, SYS_FOREVER); /* Insert your code here */ } }
•
DSP/BIOS 的线程类型
HWI
硬件中断
电子科技大学
HWI priorities set by hardware One ISR per interrupt. 14 SWI priority levels Multiple SWIs at each level. 15 TSK priority levels Multiple TSKs at each level. Multiple IDL functions Continuous loop.
DSP/BIOS的组件
抢先式多任务内核 配置工具 实时分析工具
电子科技大学
DSP/BIOS API : 提供近200个DSP/BIOS API给用户。
继续
DSP/BIOS 配置工具
电子科技大学
返回
实时分析工具
电子科技大学
DSP/BIOS 实时分析工具
返回
图形界面的静态配置工具
电子科技大学
设定DSP/BIOS库中的各种参数 DSP/BIOS的裁减控制 创建目标应用程序使用的对象 (object),以便使用DSP/BIOS提供的 API函数。 使用CSL配置外设 对目标系统的初始化配置
SWI 或 TSK 的区别
SWI start SWI_post TSK
电子科技大学
SEM_post
SEM_pend “run to completion”
block
start
end
SWI 不能被挂起( pend). SWI 一般总是由该线程函数返回.
end
TSK 仅在任务线程结束是返回, 或者是一个无限循环 !
Real-time scheduling
电子科技大学
看下面这个例子 系统要求: – 算法1和算法2不同步 – 假定算法1有更高的优先级 – 算法2在执行时可以允许被打断 实际在运行时,我们只有一个CPU资源,所以会出 现下面的情况:
CPU processing Algorithm 1 MISSED!
DSP/BIOS 的 API模块
电子科技大学
◆STS模块:用于状态统计管理,可以在CCS下查看 这些统计参数。 ◆SWI模块:用于管理软件中断。CCS将运行队列 中的软件中断,并可以设置15个优先级,但都比硬 件中断低。 ◆SIO模块:流式I/O管理模块,可用于设备驱动模 块与任务或软件中断之间的数据交换。 ◆MXB模块:管理邮箱,实现任务间同步或通讯。 ◆QUE模块:用于任务或线程的队列管理。 ◆SEM模块:旗语管理,用于任务或线程间的同
Algorithm 1 Algorithm 2
CPU processing Algorithm 2
Real-time scheduling
解决方法1: 将算法分解:
电子科技大学
– 算法可以分解为几个部分 – 当CPU不处理算法1的时候可以运行算法2的各
个部分 algorithm2
();
function1(); function2(); function3();
解决方法2: 借助操作系统 Advantages: – 便于编程 (算法可以独立编写). – 便于维护和修改 (操作系统负责完成算 法的调度). – 软件开发周期短. 如何选择 operating system? – The processor being used. – The DSP platform (single/multi processors).
Real-time scheduling: DSP/BIOS
所有的 TI DSPs 都可以使用 DSP/BIOS,它包括: – 很小的 real-time library. – 使用 API 函数调用库 – 方便使用的 configuration工具. – Real-time 实时分析 工具. DSP/BIOS的调度功能包括: – 固定优先级(Fixed-priority) 的抢 先式调度. – 多种线程 类型.
DSP/BIOS 的 API模块
电子科技大学
◆MEM模块:用于定义目标系统的内存使用。 系统根据此信息自动产生.cmd文件。 ◆PIP模块:用于数据管道管理,可以实现线程 间的数据交换。 ◆PRD模块:用于实现周期性的函数。该类函 数 的 执 行 频 率 , 可 以 由 CLK模 块 或 自 己 调 用 PRD_tick函数决定。 ◆RTDX模块:用于主机与DSP目标系统间的实 时数据传递。 ◆DEC模块:设备驱动程序接口。
电子科技大学
先看下面我们经常遇到的例子:算法1和算法2 分别在不同的两个函数中调用:
下面一些情况下,可能会有问题
(1) 算法执行的频率不一样 (2) 一个算法可能会覆盖另一个算法 (3) 执行时间不确定 等等。。。
很显然,一旦进入ISR1或ISR2,算法1或算法2将执行完成 ,然后才能切换到另外一个算法中。
– “mycfg.cmd”也会自动生成,但需要手工添加到工
程文件中。 注意:用户需要自己将 *.cdb 和 *.cmd 添加到工程文件中。