RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DSP實時多任務(wù)調(diào)度的解決方案

電子工程師 ? 來源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2021-03-24 15:22 ? 次閱讀

DSP處理器是一種嵌入式處理器(embedded microprocessor),它專門用于數(shù)字信號處理,其在系統(tǒng)結(jié)構(gòu)和指令算法方面進行了特殊設(shè)計,具有很高的編譯效率和指令執(zhí)行速度。

嵌入式系統(tǒng)在當(dāng)今是一種非?;钴S的應(yīng)用,在工業(yè)、服務(wù)業(yè)、消費電子等領(lǐng)域的應(yīng)用范圍都不斷擴大。為了方便嵌入式系統(tǒng)的開發(fā),人們研發(fā)了許多嵌入式操作系統(tǒng),如WinCE、uc/OS、嵌入式LinuxVxWorks、pSOS、QNX、Palm OS等,由于嵌入式系統(tǒng)往往用于一些較為實時性的用途,這些操作系統(tǒng)也往往被稱為實時多任務(wù)操作系統(tǒng)(RTOS, Real Time Operation System)。這些系統(tǒng)往往被用在通用嵌入式處理器上(如ARM等)。

DSP系統(tǒng)和通用嵌入式系統(tǒng)的區(qū)別

雖然說DSP也是一種嵌入式系統(tǒng),但是由于其“專用于數(shù)字信號處理”的特點,其系統(tǒng)架構(gòu)也會同通用嵌入式系統(tǒng)略有區(qū)別(當(dāng)然,只是“略有區(qū)別”而已)。DSP往往用來跑高速的數(shù)學(xué)算法,而不牽涉到人機界面、數(shù)據(jù)庫、高層應(yīng)用等功能(從PC角度來理解的話,DSP在一個嵌入式系統(tǒng)中的功能類似于底層驅(qū)動,例如3D圖象的演算、環(huán)繞聲的演算、網(wǎng)絡(luò)協(xié)議處理等)。

因此,從這樣的認(rèn)識角度來看,DSP中的各種任務(wù)的調(diào)度在過程上相對“單純”些。DSP中的任務(wù)更加側(cè)重于“實時性”和“并行性”。實際上,對于單核的DSP芯片來說,并不可能存在真正的“并行計算”,所謂的并行只不過是通過高速切換幾個“串行的線程”來實現(xiàn)。而對于“實時性”,則要求盡可能多的將CPU時間用于計算,并且不同的線程間不能有阻塞的現(xiàn)象發(fā)生(從軟件角度看,就是執(zhí)行任務(wù)的代碼執(zhí)行時間要短,如果是復(fù)雜的算法,就需要對算法進行優(yōu)化使得算法可以“分步執(zhí)行”)。

DSP實時多任務(wù)調(diào)度的解決方案

根據(jù)以上的分析,我們可以大致的得出一個簡單的DSP RTOS的雛形,它的核心就是創(chuàng)建一種可以實時執(zhí)行的線程。這種線程被稱為“PRD Task”(period task),指的是這種線程一旦創(chuàng)建,就由系統(tǒng)內(nèi)核自動的周期性調(diào)用,而調(diào)度周期可以保證相當(dāng)高的時間精度。管理這個機制的部件叫做“PRD模塊”。

創(chuàng)建PRD任務(wù)的方法是在初始化的時候向內(nèi)核注冊一個PRD任務(wù)。

int Thread_PRD_Append(long TimeSlinceCount/*執(zhí)行周期

*/,void (*CallBackHandle)()/* 函數(shù)句柄*/)

返回值: TRUE / FALSE

函數(shù)功能:向系統(tǒng)注冊一個新的線程,指定執(zhí)行周期以及需要調(diào)度的函數(shù)句柄,系統(tǒng)便會在指定的時間間隔自動調(diào)用這個函數(shù)。

這個注冊任務(wù)等待執(zhí)行的方式叫做“回調(diào)”,注冊的時候向內(nèi)核提交一個指定的執(zhí)行周期和任務(wù)函數(shù)的入口函數(shù)指針。內(nèi)核在通過計時,在達到執(zhí)行周期的時候通過函數(shù)指針調(diào)用任務(wù)函數(shù)。

內(nèi)核為了管理這個功能,需要一張“PRD任務(wù)表”。它的定義如下:

typedef struct {

long TimeSlice_Current; //當(dāng)前時間片

long TimeSlice_Count; //總時間片

void (*Callback_Handle)(); //調(diào)用句柄

} Type_PRD_Table;

Type_PRD_Table PRD_Table[SYS__THREAD_PRD_TABLE_SIZE];//PRD表

int PRD_Table_ItemCount=0;//當(dāng)前的PRD表最大項目數(shù)

TimeSlice_Current和TimeSlice_Count兩個變量構(gòu)成了一個軟件定時器,內(nèi)核通過對于TimeSlice_Current的操作即可知道何時可以調(diào)用相關(guān)的任務(wù)函數(shù)。

相關(guān)的代碼如下。這是一個典型的減法計時器的代碼。

for(i=0;i 0)

{ PRD_Table[i].TimeSlice_Current --; //遞減時間片 }}

而在另外一處,需要判斷時間片計數(shù)器是否已經(jīng)計到0。

if((PRD_Table[i].TimeSlice_Current) == 0) {//調(diào)用相應(yīng)的句柄

PRD_Table[i].TimeSlice_Current=PRD_Table[i].TimeSlice_Count;//恢復(fù)時間片

(*(PRD_Table[i].Callback_Handle))();//調(diào)用任務(wù)入口函數(shù)指針 }

接著,需要將減法計時器的代碼放入一個硬件定時器中斷中,這樣便能保證這個減法計時的高度精確性。這個硬件定時器依賴于硬件,因此要求DSP芯片硬件上必須提供這樣一個定時器,否則這個DSP內(nèi)核便無法在這個DSP芯片上執(zhí)行(幸好基本上不太會存在沒有硬件定時器的DSP)。

而對于第二段代碼,判別時間片計數(shù)是否“已經(jīng)到點”的代碼則應(yīng)

當(dāng)放在一個死循環(huán)中。例如在main函數(shù)中放置一個死循環(huán)。

Void Main() {

for(;;) { …。。判斷時間片計數(shù)器是否已經(jīng)計到0的代碼}

…}

顯然,除了計時是對“到點”的判別以外,我們還需要初始化和添加任務(wù)的函數(shù)。

int Thread_PRD_Append(long TimeSlinceCount,void *CallbackHandle)

{//給PRD表添加任務(wù)

if(PRD_Table_ItemCount

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • DSP處理器
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    11704
  • 計時器
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

    32689
收藏 人收藏

    評論

    相關(guān)推薦

    航電實時測試系統(tǒng)解決方案

    航電實時測試系統(tǒng)主要應(yīng)用于航空座艙的實時測試。座艙測試過程中,輸入和輸出信號的實時性至關(guān)重要,尤其是在多任務(wù)操作時,必須保證系統(tǒng)穩(wěn)定的loop時間。為了滿足這一需求,客戶選擇了基于Li
    的頭像 發(fā)表于 10-23 15:34 ?260次閱讀
    航電<b class='flag-5'>實時</b>測試系統(tǒng)<b class='flag-5'>解決方案</b>

    解決方案丨EasyGo新能源系統(tǒng)實時仿真應(yīng)用

    。二、新能源實時仿真技術(shù)新能源實時仿真技術(shù)作為一種高效、低成本的研發(fā)手段,已經(jīng)成為新能源技術(shù)發(fā)展的重要支撐。新能源實時仿真解決方案可以幫助設(shè)計者更好地了解新能源產(chǎn)品和系統(tǒng)的性能和特性,
    發(fā)表于 10-18 09:37

    雙電源電壓DSP的電源時序控制解決方案

    電子發(fā)燒友網(wǎng)站提供《雙電源電壓DSP的電源時序控制解決方案.pdf》資料免費下載
    發(fā)表于 10-11 11:33 ?0次下載
    雙電源電壓<b class='flag-5'>DSP</b>的電源時序控制<b class='flag-5'>解決方案</b>

    MES系統(tǒng)如何實現(xiàn)生產(chǎn)車間的實時監(jiān)控、精準(zhǔn)調(diào)度

    MES系統(tǒng)通過數(shù)據(jù)采集、傳輸、處理和展示等技術(shù)手段,實現(xiàn)了生產(chǎn)過程的實時監(jiān)控;同時,通過生產(chǎn)計劃優(yōu)化、生產(chǎn)任務(wù)分配、動態(tài)調(diào)度、資源優(yōu)化和協(xié)同管理等功能模塊,實現(xiàn)了生產(chǎn)過程的精準(zhǔn)調(diào)度
    的頭像 發(fā)表于 10-07 12:51 ?355次閱讀
    MES系統(tǒng)如何實現(xiàn)生產(chǎn)車間的<b class='flag-5'>實時</b>監(jiān)控、精準(zhǔn)<b class='flag-5'>調(diào)度</b>

    鴻蒙開發(fā)接口資源調(diào)度:【@ohos.workScheduler (延遲任務(wù)調(diào)度)】

    開發(fā)者在開發(fā)應(yīng)用時,通過調(diào)用延遲任務(wù)注冊接口,注冊對實時性要求不高的延遲任務(wù),該任務(wù)默認(rèn)由系統(tǒng)安排,在系統(tǒng)空閑時根據(jù)性能、功耗、熱等情況進行調(diào)度
    的頭像 發(fā)表于 06-04 10:01 ?898次閱讀
    鴻蒙開發(fā)接口資源<b class='flag-5'>調(diào)度</b>:【@ohos.workScheduler (延遲<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b>)】

    請問CMSIS-RTOS RTX的任務(wù)調(diào)度鎖在哪里?

    請問一下,CMSIS-RTOS RTX的任務(wù)調(diào)度鎖在哪里?謝謝!
    發(fā)表于 05-13 08:28

    淺析FreeRTOS任務(wù)調(diào)度器的三種調(diào)度算法和應(yīng)用

    FreeRTOS在MCU領(lǐng)域應(yīng)用非常廣泛,今天就給大家講解一下FreeRTOS調(diào)度器中的三種調(diào)度算法,以及在瑞薩RZ/T2L MPU中的應(yīng)用。
    的頭像 發(fā)表于 05-10 14:02 ?7317次閱讀
    淺析FreeRTOS<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b>器的三種<b class='flag-5'>調(diào)度</b>算法和應(yīng)用

    多端口能量路由實時控制仿真系統(tǒng)解決方案

    RCP多端口設(shè)備電力電子教學(xué)產(chǎn)品結(jié)合CBox設(shè)備,通過MATLAB及相關(guān)硬件的模塊化設(shè)計,為解決教學(xué)內(nèi)容復(fù)雜、理論與實際脫節(jié)等問題提供了一種創(chuàng)新的解決方案。 RCP多端口設(shè)備可實現(xiàn)幾乎大部分經(jīng)典電力
    發(fā)表于 05-10 11:05

    ETAS推出Time-Triggered Scheduling (TTS)的確定性調(diào)度解決方案

    在2024年2月26日,ETAS推出了名為“Time-Triggered Scheduling (TTS)”的確定性調(diào)度解決方案。
    的頭像 發(fā)表于 04-25 16:56 ?2586次閱讀
    ETAS推出Time-Triggered Scheduling (TTS)的確定性<b class='flag-5'>調(diào)度</b><b class='flag-5'>解決方案</b>

    STM32F103 FreeRTOS任務(wù)調(diào)度異常的原因?

    ) { vTaskDelay(500); //延時函數(shù)(任務(wù)調(diào)度) printf(\"Task1rn\");//串口打印 } } void Task2_Task(void
    發(fā)表于 04-16 06:24

    開放式高實時高性能PLC控制器解決方案-基于米爾電子STM32MP135

    實時高性能需求尤其突出。面對以上挑戰(zhàn),合作伙伴翌控科技基于米爾STM32MP135開發(fā)板發(fā)布開放式高實時高性能PLC控制器解決方案,將高精準(zhǔn)數(shù)據(jù)采集、預(yù)處理、存儲、通信與高實時控制融為
    發(fā)表于 03-07 20:06

    介紹一種基于核集的多核嵌入式實時調(diào)度方法

    多任務(wù)環(huán)境下,嵌入式系統(tǒng)中通常運行著多于處理機數(shù)目的任務(wù),這就要求操作系統(tǒng)能夠按照某種算法為處于就緒狀態(tài)的任務(wù)動態(tài)地分配處理機,處理機調(diào)度的實質(zhì)是對處理器資源進行分配。
    的頭像 發(fā)表于 03-05 11:31 ?851次閱讀
    介紹一種基于核集的多核嵌入式<b class='flag-5'>實時調(diào)度</b>方法

    鴻蒙OS 分布式任務(wù)調(diào)度

    鴻蒙OS 分布式任務(wù)調(diào)度概述 在 HarmonyO S中,分布式任務(wù)調(diào)度平臺對搭載 HarmonyOS 的多設(shè)備構(gòu)筑的“超級虛擬終端”提供統(tǒng)一的組件管理能力,為應(yīng)用定義統(tǒng)一的能力基線、
    的頭像 發(fā)表于 01-29 16:50 ?488次閱讀

    Linux的Deadline實時調(diào)度算法

    每個任務(wù)都有一個高精度定時器(sched_dl_entity 結(jié)構(gòu)的 dl_timer 字段),其超時時間為任務(wù)調(diào)度周期。當(dāng)定時器觸發(fā)時,便會調(diào)用 dl_task_timer() 函數(shù)來處理定時器事件。
    發(fā)表于 01-24 13:44 ?888次閱讀
    Linux的Deadline<b class='flag-5'>實時調(diào)度</b>算法

    請教:有SPC560B的多任務(wù)實時系統(tǒng)的例程嗎(freertos)

    請教:有SPC560B的多任務(wù)實時系統(tǒng)的例程嗎(freertos)
    發(fā)表于 01-15 17:04
    RM新时代网站-首页