




已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第 4章章 C55x处理器的软件设计处理器的软件设计 内容提要内容提要 C55x系列处理器应用灵活、处理能力强大,为系列处理器应用灵活、处理能力强大,为开发、使用提供了一个很好的硬件平台,要使这个平开发、使用提供了一个很好的硬件平台,要使这个平台更好的发挥作用,高效、方便的软件设计是不可或台更好的发挥作用,高效、方便的软件设计是不可或缺的。缺的。 程序的主体框架和对实时性要求不高的部分采用程序的主体框架和对实时性要求不高的部分采用C/C+语言,而算法实现采用汇编语言,这样能够充语言,而算法实现采用汇编语言,这样能够充分发挥二者的优点,解决易读性和效率之间的矛盾。分发挥二者的优点,解决易读性和效率之间的矛盾。同时也改善了软件的移植性,在软件移植时不用改变同时也改善了软件的移植性,在软件移植时不用改变程序的主体框架,只要为处理器提供相应的算法即可程序的主体框架,只要为处理器提供相应的算法即可。本章主要介绍了本章主要介绍了 C55x处理器的程序基本结构,处理器的程序基本结构, C语言编程以及优化,语言编程以及优化, C语言与汇编语言的混合编程,语言与汇编语言的混合编程,通用目标文件格式,最后对通用目标文件格式,最后对 C55x处理器的数字信号处处理器的数字信号处理库和图像、视频处理库进行了介绍。理库和图像、视频处理库进行了介绍。 Date 1DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1 C55x处理器程序基本结构4.2 C语言程序开发及优化4.3 C语言与汇编语言的混合编程4.4 通用目标文件格式4.5 C55x处理器的数字信号处理库和图像、视频处理库Date 2DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 C55x处理器软件开发流程 C/C+源文件C编译器 汇编源代码 COFF目标文件汇编器 链接器可执行COFF文件宏源文件 归档器 宏调用 库 归档器目标文件库运行支持库建立运行支持库Date 3DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 汇编器:汇编器: 是把汇编源代码转换成机器语言。是把汇编源代码转换成机器语言。 汇编器:汇编器: 是把汇编源代码转换成机器语言。是把汇编源代码转换成机器语言。 链接器:链接器: 则将多个目标文件结合成一个可执行则将多个目标文件结合成一个可执行文件文件 。 归档器:归档器: 可以把一组文件归档为一个库,供用可以把一组文件归档为一个库,供用户使用。户使用。 如果用户只用汇编语言编写程序,则将跳过如果用户只用汇编语言编写程序,则将跳过 C编译器而编译器而直接通过汇编器生成目标文件。直接通过汇编器生成目标文件。Date 4DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1 C55x处理器程序基本结构处理器程序基本结构根据任务调度的方式不同,根据任务调度的方式不同, C55x处理器程序大体可以分处理器程序大体可以分为两类为两类 :(1) 由程序自己完成任务调度由程序自己完成任务调度 程序运行效率高,对硬件中断响应快,程序运行稳定,程序运行效率高,对硬件中断响应快,程序运行稳定,适合于任务较为单一,实时性较强的应用;适合于任务较为单一,实时性较强的应用;(2) 由嵌入式操作系统完成任务调度由嵌入式操作系统完成任务调度 但如果要利用处理器同时完成多个任务,应用嵌入式操但如果要利用处理器同时完成多个任务,应用嵌入式操作系统是十分有必要的,这是因为嵌入式操作系统可以将应作系统是十分有必要的,这是因为嵌入式操作系统可以将应用分解为多个任务,简化了应用系统软件设计,更为重要的用分解为多个任务,简化了应用系统软件设计,更为重要的是良好的多任务设计有助于提高系统的稳定性和可靠性。是良好的多任务设计有助于提高系统的稳定性和可靠性。Date 5DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.1 自我调度程序的基本结构自我调度程序的基本结构虽然嵌入式操作系统已经发展得较为成熟,但通过程序自身完成任务调度仍然保持着旺盛的生命力,这是因为这种方式适合于 DSP这种需要对大量实时数据完成顺序处理的应用。下面给出自我调度程序的基本结构。 中断程序 1;中断程序 m;Main()DSP_INT(); /DSP初始化For(;) /主循环if(条件 1) /判断条件 1处理模块 1; /条件满足运行处理模块 1;if(条件 n) /判断条件 n处理模块 n; /条件满足运行处理模块 n;Date 6DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 初始化部分通常完成 DSP软、硬件的初始化设置,启动系 统硬件,使能 DSP中断,启动 DMA传送等工作。 主循环部分是程序的主体,将由它完成数据输入、处理和输出等工作。主循环由条件判断和处理模块组成,当满足条件时运行处理模块,不满足条件则自动跳到下一个判断条件。 中断程序通常不进行数据处理,只通过设置判断标志来影响主循环部分的运行。 自我调度程序通常由中断程序部分、初始化部分和主循环部分组成 :4.1.1 自我调度程序的基本结构自我调度程序的基本结构Date 7DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 为了满足实时运行的要求,自我调度程序的主循环部分必须将处理时延限制在最大可接受时延内,具体来说就是运行主循环的所有分支的时间总和必须小于最大可接受时延,如果不能满足这一条件,则在最坏情况下,会造成处理数据的不连续,而无法实现数据的实时处理。 当所编写的程序没有满足上述条件时,则需要对处理流程进行修改,或修改处理算法以满足条件。 4.1.1 自我调度程序的基本结构自我调度程序的基本结构Date 8DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 在数字信号处理器中运行的操作系统必须满足系统实时性要求,而操作系统的实时方式可以分成两种 硬实时方式和软实时方式。 软实时系统由软件来进行任务的切换,而硬实时系统则按照固定时钟节拍切换任务。软实时系统使各个任务尽快运行,而不要求限定某个任务在多长时间内完成;硬实时系统中各任务不仅要执行无误,而且要准时。 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 嵌入式实时操作系统的作用就是合理调度、分配任务的运行,使各个任务正确、及时地执行。 Date 9DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 嵌入式操作系统的核心是操作系统内核,在多任务系统中,内核负责管理各个任务,为每个任务分配 CPU时间,负责任务间的通信和任务切换。根据其重要程度的不同系统中每个任务被赋予一定的优先级,内核将根据任务的优先级进行任务调度。基于优先级的内核可以分成不可剥夺型和可剥夺型两种类型。 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 Date 10DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 1. 不可剥夺型内核不可剥夺型内核 不可剥夺型内核要求每个任务主动放弃不可剥夺型内核要求每个任务主动放弃 CPU使用权,这种任使用权,这种任务的调度方法也可以叫做合作型多任务,每个任务相互合作,共务的调度方法也可以叫做合作型多任务,每个任务相互合作,共享一个享一个 CPU。 不可剥夺型内核中的异步事件由中断服务来处理,中断服务不可剥夺型内核中的异步事件由中断服务来处理,中断服务可以使一个高优先级的任务由挂起态变为就绪态;但在中断服务可以使一个高优先级的任务由挂起态变为就绪态;但在中断服务之后,之后, CPU的使用权还给原来被中断的任务,直到该任务主动放的使用权还给原来被中断的任务,直到该任务主动放弃弃 CPU的使用权,一个高优先级的任务才能进入运行态。的使用权,一个高优先级的任务才能进入运行态。 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 Date 11DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 这种内核的优点是响应中断快,采用不可剥夺型内核允许任务使用不可重入函数,每个任务调用不可重入型函数不必担心其他任务可能使用该函数而造成数据破坏。使用不可剥夺型内核时,任务的响应时间取决于最长任务的执行时间。使用该内核很少需要使用信号量保护共享数据,这是因为正在运行的任务不必担心其他任务抢占 CPU;但如果任务使用共享设备时,还应使用互斥型信号量。 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 1. 不可剥夺型内核不可剥夺型内核 Date 12DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 不可剥夺型内核的缺点是响应时间具有不确定性,无法确不可剥夺型内核的缺点是响应时间具有不确定性,无法确定最高优先级的任务何时能够获得定最高优先级的任务何时能够获得 CPU的使用权。的使用权。 2. 可剥夺型内核可剥夺型内核 可剥夺型内核运行时,一旦具有最高优先级的任务就绪,就可剥夺型内核运行时,一旦具有最高优先级的任务就绪,就总能得到总能得到 CPU的使用权。当有一个具有更高优先权的任务进入就的使用权。当有一个具有更高优先权的任务进入就绪态时,当前运行的任务将被挂起,更高级的任务立刻得到绪态时,当前运行的任务将被挂起,更高级的任务立刻得到 CPU的使用权。的使用权。1. 不可剥夺型内核不可剥夺型内核 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 Date 13DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 如果是中断服务子程序使一个高优先级的任务进如果是中断服务子程序使一个高优先级的任务进入就绪状态,中断完成后,被中断的任务被挂起,开入就绪状态,中断完成后,被中断的任务被挂起,开始运行更高级的任务。使用可剥夺型内核可以随时执始运行更高级的任务。使用可剥夺型内核可以随时执行最高级任务,这使得任务的响应时间得以最优化。行最高级任务,这使得任务的响应时间得以最优化。使用可剥夺内核要求应用程序不应直接使用不可重入使用可剥夺内核要求应用程序不应直接使用不可重入函数,如果要使用则应满足互斥条件。函数,如果要使用则应满足互斥条件。 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 2. 可剥夺型内核可剥夺型内核 Date 14DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 内核的主要工作是完成任务的调度,任务也可称内核的主要工作是完成任务的调度,任务也可称作线程,是一个简单的程序,该程序认为作线程,是一个简单的程序,该程序认为 CPU完全属于完全属于自己。操作系统要求把系统所要完成的工作分解为多自己。操作系统要求把系统所要完成的工作分解为多个任务,每个任务都是应用的一部分。任务都被赋予个任务,每个任务都是应用的一部分。任务都被赋予一定的优先级,并拥有自己的一套一定的优先级,并拥有自己的一套 CPU寄存器和堆栈空寄存器和堆栈空间。间。Date 15DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 任务是一个无限循环,它必须处于下列任务是一个无限循环,它必须处于下列 5个状态之一:个状态之一: 休眠状态休眠状态 是任务驻留在内存之中,但并没有被系统内核所调用;是任务驻留在内存之中,但并没有被系统内核所调用; 就绪状态就绪状态 是任务已经准备好,但由于该任务的优先级比正在运行的任务的是任务已经准备好,但由于该任务的优先级比正在运行的任务的 优先级低,还暂时不能运行;优先级低,还暂时不能运行; 运行状态运行状态 是任务拥有是任务拥有 CPU的使用权,正在运行;的使用权,正在运行;挂起状态挂起状态 是任务正在等待某一个事件的发生以结束目前的等待(如等待外是任务正在等待某一个事件的发生以结束目前的等待(如等待外设的设的 I/O操作、等待共享资源、等待定时或超时信息等事件);操作、等待共享资源、等待定时或超时信息等事件);发生中断发生中断 时,时, CPU进入中断服务程序,而暂时不能运行当前的任务,任务进入中断服务程序,而暂时不能运行当前的任务,任务就进入了被中断态。就进入了被中断态。 Date 16DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 操作系统需要在多个任务之间转换和调度,这是因为操作系统需要在多个任务之间转换和调度,这是因为 CPU在某一时刻只能为一个任务提供服务,在某一时刻只能为一个任务提供服务, CPU必须为一系列任务必须为一系列任务轮流服务。多任务运行可以使轮流服务。多任务运行可以使 CPU的利用率达到最高,并使应的利用率达到最高,并使应用程序模块化,使用多任务可以使程序更容易设计和维护。用程序模块化,使用多任务可以使程序更容易设计和维护。当任务从当前任务切换到另一个任务时,必须保存正在执当任务从当前任务切换到另一个任务时,必须保存正在执行的任务的当前状态。所谓行的任务的当前状态。所谓 “ 任务的当前状态任务的当前状态 ” 即即 CPU寄存器寄存器中的所有内容;这些内容被保存在任务自己的堆栈中,以备任中的所有内容;这些内容被保存在任务自己的堆栈中,以备任务下次执行时恢复当前状态。在保存完当前任务后,要把下一务下次执行时恢复当前状态。在保存完当前任务后,要把下一个任务的当前状态装入个任务的当前状态装入 CPU寄存器,并开始下一个任务的运行寄存器,并开始下一个任务的运行,这一过程叫做,这一过程叫做 “ 任务切换任务切换 ” 。Date 17DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 每个任务都有其优先级,任务越重要,被赋予的每个任务都有其优先级,任务越重要,被赋予的优先级应越高。如果程序执行过程中任务的优先级不优先级应越高。如果程序执行过程中任务的优先级不变,则称为静态优先级;反之则称为动态优先级。变,则称为静态优先级;反之则称为动态优先级。 所谓所谓 “任务管理任务管理 ”就是在内核的控制下任务在五种就是在内核的控制下任务在五种状态之间切换。状态之间切换。 OSIntExit( )OSTaskDel( )OSTaskDel( )挂起状态休眠状态就绪状态运行状态被中断状态OSTaskCreate( )OSTaskCreateExt( )OSFlagPost( )OSMboxPost( )OSMboxPost( )OSMutexPost( )OSQPost( )OSQPostFront( )OSSemPost( )OSTaskResume( )OSTimeDlyResume( )OSTimeTick( )OSStart( )OSIntExt( )OS_TASK_SW( )CPU使用权被剥夺OSTaskDel( )OSFlagPend( )OSMboxPend( )OSMutexPend( )OSQPend( )OSSemPend( )OSTaskSuspend( )OSTimeDly ( )OSTimeDlyHMSM( )中断Date 18DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 不同任务之间有可能会使用共同的资源,当它们同不同任务之间有可能会使用共同的资源,当它们同时使用共享资源时有可能发生错误,嵌入式操作系统提时使用共享资源时有可能发生错误,嵌入式操作系统提供了信号量这一约定机制,通过该机制可以控制共享资供了信号量这一约定机制,通过该机制可以控制共享资源的使用权,或标志某一事件的发生,也可以用来为两源的使用权,或标志某一事件的发生,也可以用来为两个任务同步。信号量有两种类型个任务同步。信号量有两种类型 二进制型和计数器二进制型和计数器型,实际上二进制型可以看作一个只有一位的计数器型型,实际上二进制型可以看作一个只有一位的计数器型信号量。信号量。 Date 19DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 信号量可以看作一把钥匙。当任务要运行时首先信号量可以看作一把钥匙。当任务要运行时首先要取得这把钥匙。如果信号量已经被其他任务占用,要取得这把钥匙。如果信号量已经被其他任务占用,那么该任务只好挂起并等待信号量被当前使用者释放那么该任务只好挂起并等待信号量被当前使用者释放。Date 20DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 任务要使用信号量,首先要对信号量进行初始任务要使用信号量,首先要对信号量进行初始化。化。 如果任务要得到信号量,首先要执行如果任务要得到信号量,首先要执行 “ 等待等待 ”操作。操作。 如果该信号量有效(信号量的值大于如果该信号量有效(信号量的值大于 0) ,则该则该信号量值减信号量值减 1,任务得以继续执行。,任务得以继续执行。如果信号量的值为如果信号量的值为 0,等待信号量的任务就被列,等待信号量的任务就被列入等待信号量任务表。入等待信号量任务表。 Date 21DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 如果等待时间超过某一设定值,该信号量还无效如果等待时间超过某一设定值,该信号量还无效,那么等待信号量的任务自动进入就绪状态并准备运,那么等待信号量的任务自动进入就绪状态并准备运行,并向系统报一个行,并向系统报一个 “超时错误超时错误 ”信息。信息。4.1.2 应用嵌入式操作系统应用嵌入式操作系统 Date 22DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 实际上,等待该信号量的任务可能有多个。在嵌入式操作实际上,等待该信号量的任务可能有多个。在嵌入式操作系统中通常依照优先级来决定由哪个任务取得信号量。系统中通常依照优先级来决定由哪个任务取得信号量。任务还可以释放信号量。任务还可以释放信号量。 如果有任务等待该信号量,那么就会有一个任务进入就绪如果有任务等待该信号量,那么就会有一个任务进入就绪状态,信号量的值不增加。状态,信号量的值不增加。 如果这时没有任务等待信号量,则信号量的值加如果这时没有任务等待信号量,则信号量的值加 1。4.1.2 应用嵌入式操作系统应用嵌入式操作系统 Date 23DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 两个任务之间可以利用信号量来取得同步,这种两个任务之间可以利用信号量来取得同步,这种同步可以分成两类同步可以分成两类 单向同步和双向同步。所谓单向同步和双向同步。所谓 “单向同步单向同步 ” 是指任务用一个信号量触发另一个任务。是指任务用一个信号量触发另一个任务。单向同步Date 24DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 当两个任务需要相互同步对方,这时就要用到双当两个任务需要相互同步对方,这时就要用到双向同步。向同步。 两个任务的双向同步两个任务的双向同步4.1.2 应用嵌入式操作系统应用嵌入式操作系统 Date 25DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 任务之间的通信可以通过两个途径:全局变量或任务之间的通信可以通过两个途径:全局变量或消息。消息。 使用全局变量必须保证任务或中断服务子程序,使用全局变量必须保证任务或中断服务子程序,在使用该变量时没有其他的任务或中断服务子程序访在使用该变量时没有其他的任务或中断服务子程序访问该变量。问该变量。另外,如果任务没有其他机制通知其变量已经被另外,如果任务没有其他机制通知其变量已经被修改了,任务就只能周期性地查询该变量的值。要避修改了,任务就只能周期性地查询该变量的值。要避免这种情况,可以考虑使用消息邮箱或消息队列。免这种情况,可以考虑使用消息邮箱或消息队列。Date 26DSP原理及应用 原理及应用第第 4章章 C55x处理器的软件设计处理器的软件设计 4.1.2 应用嵌入式操作系统应用嵌入式操作系统 消息邮箱是一个任务或一个中断程序。通过一个消息邮箱是一个任务或一个中断程序。通过一个指针型变量把一个消息(指针)放到邮箱之中,而一指针型变量把一个消息(指针)放到邮箱之中,而一个或多个任务通过内核服务可以接收到这个消息。个或多个任务通过内核服务可以接收到这个消息。内核可以提供下列邮
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三只小猪课件
- 2025-2030中国对羟基苯乙醇行业发展方向与前景动态预测报告
- 难点解析-北师大版8年级数学上册期末测试卷【综合题】附答案详解
- 大班语言教案特别的我
- 大班春天来了教案设计
- 大学生暑期房地产销售实习报告
- 小儿脾胃课件
- 外语翻译的工作简历模板
- 难点详解人教版7年级数学上册期末测试卷附答案详解【研优卷】
- 2025年重庆市中考物理真题(附答案)
- 2025年食品安全培训考试试题及答案
- 2025年长江证券港股通开通测试题及答案
- 2025西安亮丽电力集团有限责任公司招聘10人笔试备考题库及1套完整答案详解
- 2025河北唐山某国有企业单位招聘劳务派遣工作人员44人笔试参考题库附带答案详解(10套)
- 成都银行总行招聘考试真题2024
- 基孔肯雅热培训测试题含答案
- 小额贷款公司贷款五级分类办法
- 2025公卫执业医师考试试题(附答案)
- 医院药品质量管理课件
- 2025年上海市中考招生考试数学真题试卷(真题+答案)
- 16J914-1 公用建筑卫生间
评论
0/150
提交评论