1 DSP实时多任务调度的解决方案-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DSP实时多任务调度的解决方案

电子工程师 来源:网络整理 作者:佚名 2021-03-24 15:22 次阅读

DSP处理器是一种嵌入式处理器(embedded microprocessor),它专门用于数字信号处理,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令执行速度。

嵌入式系统在当今是一种非常活跃的应用,在工业、服务业、消费电子等领域的应用范围都不断扩大。为了方便嵌入式系统的开发,人们研发了许多嵌入式操作系统,如WinCE、uc/OS、嵌入式LinuxVxWorks、pSOS、QNX、Palm OS等,由于嵌入式系统往往用于一些较为实时性的用途,这些操作系统也往往被称为实时多任务操作系统(RTOS, Real Time Operation System)。这些系统往往被用在通用嵌入式处理器上(如ARM等)。

DSP系统和通用嵌入式系统的区别

虽然说DSP也是一种嵌入式系统,但是由于其“专用于数字信号处理”的特点,其系统架构也会同通用嵌入式系统略有区别(当然,只是“略有区别”而已)。DSP往往用来跑高速的数学算法,而不牵涉到人机界面、数据库、高层应用等功能(从PC角度来理解的话,DSP在一个嵌入式系统中的功能类似于底层驱动,例如3D图象的演算、环绕声的演算、网络协议处理等)。

因此,从这样的认识角度来看,DSP中的各种任务的调度在过程上相对“单纯”些。DSP中的任务更加侧重于“实时性”和“并行性”。实际上,对于单核的DSP芯片来说,并不可能存在真正的“并行计算”,所谓的并行只不过是通过高速切换几个“串行的线程”来实现。而对于“实时性”,则要求尽可能多的将CPU时间用于计算,并且不同的线程间不能有阻塞的现象发生(从软件角度看,就是执行任务的代码执行时间要短,如果是复杂的算法,就需要对算法进行优化使得算法可以“分步执行”)。

DSP实时多任务调度的解决方案

根据以上的分析,我们可以大致的得出一个简单的DSP RTOS的雏形,它的核心就是创建一种可以实时执行的线程。这种线程被称为“PRD Task”(period task),指的是这种线程一旦创建,就由系统内核自动的周期性调用,而调度周期可以保证相当高的时间精度。管理这个机制的部件叫做“PRD模块”。

创建PRD任务的方法是在初始化的时候向内核注册一个PRD任务。

int Thread_PRD_Append(long TimeSlinceCount/*执行周期

*/,void (*CallBackHandle)()/* 函数句柄*/)

返回值: TRUE / FALSE

函数功能:向系统注册一个新的线程,指定执行周期以及需要调度的函数句柄,系统便会在指定的时间间隔自动调用这个函数。

这个注册任务等待执行的方式叫做“回调”,注册的时候向内核提交一个指定的执行周期和任务函数的入口函数指针。内核在通过计时,在达到执行周期的时候通过函数指针调用任务函数。

内核为了管理这个功能,需要一张“PRD任务表”。它的定义如下:

typedef struct {

long TimeSlice_Current; //当前时间片

long TimeSlice_Count; //总时间片

void (*Callback_Handle)(); //调用句柄

} Type_PRD_Table;

Type_PRD_Table PRD_Table[SYS__THREAD_PRD_TABLE_SIZE];//PRD表

int PRD_Table_ItemCount=0;//当前的PRD表最大项目数

TimeSlice_Current和TimeSlice_Count两个变量构成了一个软件定时器,内核通过对于TimeSlice_Current的操作即可知道何时可以调用相关的任务函数。

相关的代码如下。这是一个典型的减法计时器的代码。

for(i=0;i 0)

{ PRD_Table[i].TimeSlice_Current --; //递减时间片 }}

而在另外一处,需要判断时间片计数器是否已经计到0。

if((PRD_Table[i].TimeSlice_Current) == 0) {//调用相应的句柄

PRD_Table[i].TimeSlice_Current=PRD_Table[i].TimeSlice_Count;//恢复时间片

(*(PRD_Table[i].Callback_Handle))();//调用任务入口函数指针 }

接着,需要将减法计时器的代码放入一个硬件定时器中断中,这样便能保证这个减法计时的高度精确性。这个硬件定时器依赖于硬件,因此要求DSP芯片硬件上必须提供这样一个定时器,否则这个DSP内核便无法在这个DSP芯片上执行(幸好基本上不太会存在没有硬件定时器的DSP)。

而对于第二段代码,判别时间片计数是否“已经到点”的代码则应

当放在一个死循环中。例如在main函数中放置一个死循环。

Void Main() {

for(;;) { …。。判断时间片计数器是否已经计到0的代码}

…}

显然,除了计时是对“到点”的判别以外,我们还需要初始化和添加任务的函数。

int Thread_PRD_Append(long TimeSlinceCount,void *CallbackHandle)

{//给PRD表添加任务

if(PRD_Table_ItemCount

责任编辑:lq6

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DSP处理器
    +关注

    关注

    0

    文章

    26

    浏览量

    11704
  • 计时器
    +关注

    关注

    1

    文章

    420

    浏览量

    32689
收藏 人收藏

    评论

    相关推荐

    航电实时测试系统解决方案

    航电实时测试系统主要应用于航空座舱的实时测试。座舱测试过程中,输入和输出信号的实时性至关重要,尤其是在多任务操作时,必须保证系统稳定的loop时间。为了满足这一需求,客户选择了基于Li
    的头像 发表于 10-23 15:34 258次阅读
    航电<b class='flag-5'>实时</b>测试系统<b class='flag-5'>解决方案</b>

    解决方案丨EasyGo新能源系统实时仿真应用

    。二、新能源实时仿真技术新能源实时仿真技术作为一种高效、低成本的研发手段,已经成为新能源技术发展的重要支撑。新能源实时仿真解决方案可以帮助设计者更好地了解新能源产品和系统的性能和特性,
    发表于 10-18 09:37

    双电源电压DSP的电源时序控制解决方案

    德赢Vwin官网 网站提供《双电源电压DSP的电源时序控制解决方案.pdf》资料免费下载
    发表于 10-11 11:33 0次下载
    双电源电压<b class='flag-5'>DSP</b>的电源时序控制<b class='flag-5'>解决方案</b>

    MES系统如何实现生产车间的实时监控、精准调度

    MES系统通过数据采集、传输、处理和展示等技术手段,实现了生产过程的实时监控;同时,通过生产计划优化、生产任务分配、动态调度、资源优化和协同管理等功能模块,实现了生产过程的精准调度
    的头像 发表于 10-07 12:51 353次阅读
    MES系统如何实现生产车间的<b class='flag-5'>实时</b>监控、精准<b class='flag-5'>调度</b>

    鸿蒙开发接口资源调度:【@ohos.workScheduler (延迟任务调度)】

    开发者在开发应用时,通过调用延迟任务注册接口,注册对实时性要求不高的延迟任务,该任务默认由系统安排,在系统空闲时根据性能、功耗、热等情况进行调度
    的头像 发表于 06-04 10:01 898次阅读
    鸿蒙开发接口资源<b class='flag-5'>调度</b>:【@ohos.workScheduler (延迟<b class='flag-5'>任务</b><b class='flag-5'>调度</b>)】

    请问CMSIS-RTOS RTX的任务调度锁在哪里?

    请问一下,CMSIS-RTOS RTX的任务调度锁在哪里?谢谢!
    发表于 05-13 08:28

    浅析FreeRTOS任务调度器的三种调度算法和应用

    FreeRTOS在MCU领域应用非常广泛,今天就给大家讲解一下FreeRTOS调度器中的三种调度算法,以及在瑞萨RZ/T2L MPU中的应用。
    的头像 发表于 05-10 14:02 7312次阅读
    浅析FreeRTOS<b class='flag-5'>任务</b><b class='flag-5'>调度</b>器的三种<b class='flag-5'>调度</b>算法和应用

    多端口能量路由实时控制仿真系统解决方案

    RCP多端口设备电力电子教学产品结合CBox设备,通过MATLAB及相关硬件的模块化设计,为解决教学内容复杂、理论与实际脱节等问题提供了一种创新的解决方案。 RCP多端口设备可实现几乎大部分经典电力
    发表于 05-10 11:05

    ETAS推出Time-Triggered Scheduling (TTS)的确定性调度解决方案

    在2024年2月26日,ETAS推出了名为“Time-Triggered Scheduling (TTS)”的确定性调度解决方案
    的头像 发表于 04-25 16:56 2583次阅读
    ETAS推出Time-Triggered Scheduling (TTS)的确定性<b class='flag-5'>调度</b><b class='flag-5'>解决方案</b>

    STM32F103 FreeRTOS任务调度异常的原因?

    ) { vTaskDelay(500); //延时函数(任务调度) printf(\"Task1rn\");//串口打印 } } void Task2_Task(void
    发表于 04-16 06:24

    开放式高实时高性能PLC控制器解决方案-基于米尔电子STM32MP135

    实时高性能需求尤其突出。面对以上挑战,合作伙伴翌控科技基于米尔STM32MP135开发板发布开放式高实时高性能PLC控制器解决方案,将高精准数据采集、预处理、存储、通信与高实时控制融为
    发表于 03-07 20:06

    介绍一种基于核集的多核嵌入式实时调度方法

    多任务环境下,嵌入式系统中通常运行着多于处理机数目的任务,这就要求操作系统能够按照某种算法为处于就绪状态的任务动态地分配处理机,处理机调度的实质是对处理器资源进行分配。
    的头像 发表于 03-05 11:31 851次阅读
    介绍一种基于核集的多核嵌入式<b class='flag-5'>实时调度</b>方法

    鸿蒙OS 分布式任务调度

    鸿蒙OS 分布式任务调度概述 在 HarmonyO S中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的“超级虚拟终端”提供统一的组件管理能力,为应用定义统一的能力基线、
    的头像 发表于 01-29 16:50 485次阅读

    Linux的Deadline实时调度算法

    每个任务都有一个高精度定时器(sched_dl_entity 结构的 dl_timer 字段),其超时时间为任务调度周期。当定时器触发时,便会调用 dl_task_timer() 函数来处理定时器事件。
    发表于 01-24 13:44 888次阅读
    Linux的Deadline<b class='flag-5'>实时调度</b>算法

    请教:有SPC560B的多任务实时系统的例程吗(freertos)

    请教:有SPC560B的多任务实时系统的例程吗(freertos)
    发表于 01-15 17:04