多核数字信号处理器TMS320C66x应用与开发 课件【ch04】SYSBIOS最入式操作系统_第1页
多核数字信号处理器TMS320C66x应用与开发 课件【ch04】SYSBIOS最入式操作系统_第2页
多核数字信号处理器TMS320C66x应用与开发 课件【ch04】SYSBIOS最入式操作系统_第3页
多核数字信号处理器TMS320C66x应用与开发 课件【ch04】SYSBIOS最入式操作系统_第4页
多核数字信号处理器TMS320C66x应用与开发 课件【ch04】SYSBIOS最入式操作系统_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SYS/BIOS最入式操作系统“电子信息科学与工程类专业规划教材多核数字信号处理器TMS320C66x应用与开发第四章01SYS/BIOS简介SYS/BIOS简介RTOS是专门为嵌入式系统定制的实时操作系统,嵌入式操作系统可以快速响应中断,它的中断响应时间是一致的和确定的,并且不会随着触发次数的变化而变化;嵌入式操作系统可以同时处理多个线程,实现对线程内存的分配和管理,避免产生内存碎片,并且降低线程间切换的时间。使用SYS/BIOS入式操作系统,可以大幅度提高代码的可移植性,并且降低软件的生命周期成本,这对于需要在不同架构(如DSP、基于ARM微控制器系列和MSP430微控制器系列)上运行的入式操作系统尤其重要。SYS/BIOS简介SYS/BIOS提供了多种不同的线程类型,包括硬件中断、软件中断、任务和空闲等,这为用户开发应用程序提供了很大的灵活性。嵌入式系统中外设的应用正在变得越来越复杂,驱动这些外设的代码也会变得越来越复杂。例如,SYS/BIOS为DMA的应用和缓存的使用提供了许多外设驱动服务。另外,SYS/BIOS还提供一个IO模型,便于应用程序通过统一的标准与这些外设交换数据。SYS/BIOS简介SYS/BIOS还提供了一些实时分析工具,可以将调试数据以字符串的形式传递给主机,不需要停止处理器的运行就可以进行调试。SYS/BIOS还提供了其他服务,如帮助开发人员调试应用程序,包括在日志中记录代码发生中断时的执行顺序,以便开发人员了解程序执行时发生的情况。在SYS/BIOS中,经常用到线程这个概念。线程是一组存储在存储器中的代码,一旦代码被加载,CPU就会执行这些代码。线程的关键特性是优先级,调度程序将根据优先级来决定在哪个时刻执行哪个线程。SYS/BIOS简介02如何建立一个SYS/BIOS工程如何建立一个SYS/BIOS工程CCS中可以按照如下步骤创建一个SYS/BIOS工程。(1)打开CCS,单击右上方的

按钮,从菜单中选择File一New-CCSProject。(2)在NewCCSProject对话框中输入一个工程文件名。(3)在Family下拉选项中选择平台类型C6000。(4)在Variant行里,选择TMS320C6678。(5)在Projecttemplatesandexamples中,打开SYS/BIOS,选择Typical(withseparateconfigproject)。如何建立一个SYS/BIOS工程以上创建工程的相应设置如图4-2所示。(6)单击“Next”按钮,弹出“RTSCConfigurationSettings”窗口。(7)确定XDCtools、SYS/BIOS和组件的版本号,默认选择最新的版本号。(8)Target的设置根据前面选择的器件自动产生,Platform可以通过下拉菜单选择Build-profile决定工程连接的库类型,建议选择release。以上设置过程如图4-3所示。(9)单击“Finish”按钮,将创建的工程添加到C/C++工程列表中。如何建立一个SYS/BIOS工程03如何建立SYS/BIOS硬件中断如何建立SYS/BIOS硬件中断SYS/BIOS应用程序会在SYS/BIOS硬件中断中处理硬件中断事务,这些硬件中断将优先于其他线程执行。SYS/BIOS硬件中断管理的核心技术是中断调度技术,中断调度技术可以使硬件中断与系统中的其他SYS/BIOS线程一起正确运行,还可以优化中断代码使其易于使用。当系统产生一个硬件中断时,会在中断向量表寻找相应的入口地址并执行,中断服务程序的地址、中断屏蔽及其他硬件中断参数信息都存储在中断向量表的数据结构中,如果其他中断打断了当前运行的中断,则会在中断堆栈中保存相关的信息。如何建立SYS/BIOS硬件中断使用中断调度技术有许多优点:首先,调度程序是面向所有中断处理的功能代码,有助于降低系统代码所占用的空间;其次,由于任务线程都有自已独立的堆栈,而中断线程使用共用的堆栈,这样就意味着调度程序为所用中断保留的堆栈容量可以更小。中断调度程序遵照SYS/BIOS的调度机制运行,即当运行高优先级中断服务程序时,9以抢断其他低优先级的线程:如果任务或者软件中断的优先级高于当前运行的线程,则较高优先级的线程将会抢断较低优先级线程并运行。如何建立SYS/BIOS硬件中断下面通过图形的方法创建一个硬件中断。(1)打开上一节创建的工程文件myexample,单击myexampleconfiguration,打开出现SYS/BIOS界面。(2)单击SystemOverview,出现一个全局视图,包括能用到的主要模块。(3)单击Hwi,在该界面中,勾选AddtheportableHwimanagementmoduletomyconfiguration。如何建立SYS/BIOS硬件中断(4)单击Device-specificHwiSupport,进入设置界面,勾选AddtheC6xHwimanagementmoduletomyconfiguration,该界面右边的Outline窗口出现了Hwi的添加项。(5)单击Instance,进入例程设置界面,填写设置信息。设置过程完成,然后打开该工程的main.c,在主函数前声明所设置的硬件中断函数。然后单击编译按钮“进行编译,编译通过就完成了硬件中断的创建。如何建立SYS/BIOS硬件中断04如何建文SYS/BTOS软件中断如何建文SYS/BTOS软件中断软件中断(Swi)是SYS/BIOS提供的主要线程处理模块之一,软件中断一般伴随着硬件中断的发生而发生,以便更容易、更灵活地处理中断事务。软件中断同样具有优先级,每个软件中断均被指定了一个显式的优先级,较高优先级的软件中断将优先于较低优先级的软件中断运行。SYS/BIOS的调度程序会根据优先级进行调度,并在切换时,SYS/BIOS系统自动处理所有相关寄存器的保存和恢复操作。与任务的处理不同,软件中断是在同一个堆栈上运行的,并且能以非常低的内存消耗来运行,它不能被挂起,也就是说,软件中断必须一直运行到结束。如何建文SYS/BTOS软件中断软件中断是系统提供的一个非常重要的线程,而且通常由硬件中断调用。图4-12给出了SYS/BIOS抢断调度机制的示例,系统产生一个外设中断,从而触发了硬件中断线程,硬件中断线程内的函数都是用于处理紧急、需要实时响应的事务,如实时响应外设的需求。通常,软件中断处理的事务是以毫秒来计时的,而硬件中断中处理的事务是以微秒来计时的。如何建文SYS/BTOS软件中断下面通过图形的方法来创建一个软件中断。(1)打开上一节创建的工程文件myexample,单击myexampleconfiguration,打开app.cfg,出现SYS/BIOS界面。(2)单击SystemOverview,出现一个全局视图。(3)单击Swi,选Addthesoftwareinterruptthreadsmoduletomyconfiguration。如何建文SYS/BTOS软件中断如何建文SYS/BTOS软件中断(4)单击图4-15中的Instance,进入例程设置界面,填写设置信息。设置过程完成,然后打开该工程的主函数mainc,在主函数前声明所设置的软件中断函数。然后单击编译按钮进行编译,编译通过就完成了软件中断的创建。可在图4-15右边看到软件中断创建后的Outline窗口。05如何建立SYS/BIOS任务在SYS/BIOS中,任务线程比其他线程在功能和调度机制上更加复杂和强大,与硬件中断和软件中断不同,任务可以被挂起。任务的调度使用更先进的调度技术,即任务会因为等待某一事件的发生而被挂起,并且任务会被其他具有更高优先级的线程打断。任务的创建有两种方式:一种是在应用程序中以静态配置的方式创建任务;另一种是在程序运行时以动态的方式创建任务。如何建立SYS/BIOS任务下面通过图形的方法来创建一个任务,并完成自动计数功能。(1)打开上一节创建的工程文件myexample,单击myexampleconfiguration,打开app.cfg,出现SYS/BIOS界面。(2)单击SystemOverview,出现SYS/BIOS全局视图。(3)单击Task模块,勾选AddtheTaskthreadsmoduletomyconfiguration。如何建立SYS/BIOS任务(4)单击Instance进入Task设置界面,按照如图4-21所示,填写设置信息。完成设置,然后打开该工程的ainc,在主函数前定义完成计数所需的全局变量i和声明任务函数,并在主函数后面添加任务函数体。如何建立SYS/BIOS任务如何建立SYS/BIOS任务然后单击编译按钮系进行编译,编译通过后,连接目标板,载入myexample.out文件并运行,显示的计数结果如图4-22所示。06软硬件中断与任务的关系软硬件中断与任务的关系软硬件中断和任务都是SYS/BIOS系统中的处理线程,在什么情况下应用硬件中断、什么情况下应用软件中断或任务主要由数据所需要的处理时间决定。如果需要处理的数据在最小5ms就有可能被刷新,这时就需要采用硬件中断,而所需处理数据的刷新时间限制在100ms左右或者更多,这时就可以采用软件中断或任务进行处理。硬件中断函数通过发布软件中断或任务来执行较低优先级的处理,使用低优先级线程可以尽量减少禁用中断的时间,从而允许其他硬件中断执行。软硬件中断与任务的关系表4-1给出了当一种线程运行时另一种线程准备运行时新发布线程的具体动作。软硬件中断与任务的关系当用软件中断代替硬件中断时,有如下优点:用软件中断代替硬件中断修改共享数据结构,当一个任务访问这个共享数据结构时,可以人为禁止软件中断;相反,如果用硬件中断修改该共享数据结构,任务需要频繁禁止硬件中断,可能造成实时操作系统性能的下降。通常的做法是将一个长硬件中断分为硬件中断和软件中断两块,硬件中断对有时间限制的操作进行处理并发布软件中断函数,软件中断函数则完成余下工作,还应注意软件中断函数必须在所有被阻塞的任务运行前结束。07进程间的同步与通信进程间的同步与通信任务需要等待某些事件的发生或者某些资源变得可用时,可以通过信号量来挂起自身。除此以外,还有其他的SYS/BIOS的API调用会导致任务挂起,例如邮箱挂起。但从根本上来说,它们都是利用信号量来实现这一操作的。每个创建的信号量都有一个与之相关联的计数值,这个计数值将始终大于等于0,信号量的挂起和信号量的发布都会修改信号量的计数值,信号量的发布会使得计数值递增,而信号量的挂起会使得计数值递减。信号量进程间的同步与通信下面举例说明,如图4-23所示。创建了一个名为mysem的信号量,信号量的计数值为0,调用信号量发布API,信号量的计数值将增加到1;接着,调用了一个信号量挂起API,这个API使得mysem的计数值递减为0。信号量进程间的同步与通信事件(Events)为线程间通信和同步提供了一种方法。事件与信号量类似,也允许指定多个条件,只有在这些条件产生后等待的线程才能够返回。与信号量一样,事件例程也是通过pend和post被调用的。然而,调用Eventpend0要具体指定等待哪个事件,调用Eventpost0要具体指定发布哪个事件。需要注意的是,一个单一的任务一次只能挂起一个事件。事件模块进程间的同步与通信门1.门的概念门(Gate)是实现IGateProvider接口的模块。门用于防止对代码的关键区域进行并发访问。锁定代码关键区域的方式不同,门的实现方式也不同。门通常通过禁用某些抢断来实现,例如禁用任务切换,禁用硬件中断,或者使用二进制型信号量。进程间的同步与通信门2.基于抢断的门实现GateHwi通过禁用和启用硬件中断作为锁定机制。GateHwi保证了对CPU的独占访问,当任务、软件中断和硬件中断线程共享关键区域时,使用GateHwi。由于GateHwi对CPU是独占访问,所以进入和离开的持续时间要尽可能短,以减少硬件中断的执行时间。进程间的同步与通信门2基于抢断的门实现GateSwi通过禁用和启用软件中断作为锁定机制。当软件中断和任务线程共享关键区域时,使用GateSwi。硬件中断线程不能使用GateSwi。进入和离开的持续时间要尽可能短以减少软件中断的执行时间。GateTask通过禁用和启用任务作为锁定机制。当任务线程共享关键区域时,使用GateTask。硬件中断或软件中断线程不能使用GateTask。进入和离开的持续时间要尽可能短,以减少任务的执行时间。进程间的同步与通信3.基于信号量的门实现以下门的实现应用了信号量:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论