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

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

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

滴答處理程序不是調(diào)度程序

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Matt Gordon ? 2022-06-29 09:19 ? 次閱讀

實(shí)時(shí)內(nèi)核通常使用定時(shí)器或類似的周期性中斷源來為多任務(wù)應(yīng)用程序?qū)崿F(xiàn)延遲和其他有用的服務(wù)。盡管利用此類服務(wù)所需的代碼通常只涉及對內(nèi)核 API 函數(shù)的調(diào)用,但似乎周期性中斷(或俗稱的滴答聲)已成為混淆甚至爭論的主要來源。內(nèi)核用戶。

新內(nèi)核用戶之間的一個常見誤解是滴答處理程序是內(nèi)核的任務(wù)調(diào)度程序。換句話說,滴答中斷被認(rèn)為是可以使任務(wù)運(yùn)行的唯一機(jī)制?,F(xiàn)實(shí)情況是,在搶占式、基于優(yōu)先級的內(nèi)核中,服務(wù)滴答的代碼是可能導(dǎo)致 CPU 控制權(quán)從一個任務(wù)傳遞到另一個任務(wù)的眾多代碼之一。在此類內(nèi)核中,任何中斷通常都可能導(dǎo)致新任務(wù)運(yùn)行,如圖 1 所示,涉及 UART 中斷。此外,任務(wù)本身可能有多種方式來放棄 CPU 并進(jìn)入掛起或等待狀態(tài)。

pYYBAGK7qXuAP5XoAABWXfdoK0E756.png

當(dāng)任務(wù)需要能夠控制它在等待狀態(tài)中花費(fèi)的時(shí)間量時(shí),滴答中斷就變得必要了。例如,μC/OS-II 和 μC/OS-III 操作系統(tǒng)提供了一種方法來控制超時(shí)參數(shù),這些參數(shù)指定非滴答事件的最大等待時(shí)間(例如接收 UART 字符),并通過延時(shí)函數(shù),如 OSTimeDly()。

圖 2 基于 μC/OS-II,突出顯示滴答中斷在實(shí)現(xiàn) OSTimeDly() 中的作用。在圖的左側(cè),一個相對高優(yōu)先級的任務(wù)調(diào)用 OSTimeDly() 來產(chǎn)生一個 5 個滴答的延遲,導(dǎo)致內(nèi)核在與該任務(wù)關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)中初始化一個延遲字段,并將該任務(wù)移出允許另一個任務(wù)運(yùn)行的就緒狀態(tài)。延遲字段被初始化為值 5,并且在調(diào)用 OSTimeDly() 之后的每個滴答中斷中,該字段遞減。在調(diào)用后的第五次中斷時(shí),該字段達(dá)到 0,并且內(nèi)核的滴答處理程序(在 μC/OS-II 中是 ISR 的一部分,但在 μC/OS-III 中有自己的任務(wù))使高優(yōu)先級任務(wù)準(zhǔn)備好再次運(yùn)行。然后,該任務(wù)將獲得 CPU 控制權(quán),因?yàn)樗膬?yōu)先級超過了在第五個滴答發(fā)生時(shí)正在運(yùn)行的任務(wù)的優(yōu)先級。

pYYBAGK7qYGAA-l0AABYAydpSFY132.png

從技術(shù)上講,可以編寫一個沒有超時(shí)和延遲函數(shù)(如 OSTimeDly())的多任務(wù)應(yīng)用程序。然而,大多數(shù)多任務(wù)系統(tǒng)至少包含一項(xiàng)可以從基于滴答的服務(wù)中受益的任務(wù)。在接下來的文章中,我將考慮兩個重要的滴答參數(shù)——頻率和優(yōu)先級——對此類系統(tǒng)的影響。

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    10889

    瀏覽量

    212377
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3254

    瀏覽量

    115069
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1242

    瀏覽量

    101536
收藏 人收藏

    評論

    相關(guān)推薦

    EE-315:更改Blackfin處理器以太網(wǎng)驅(qū)動程序中的PHY

    電子發(fā)燒友網(wǎng)站提供《EE-315:更改Blackfin處理器以太網(wǎng)驅(qū)動程序中的PHY.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 14:15 ?0次下載
    EE-315:更改Blackfin<b class='flag-5'>處理</b>器以太網(wǎng)驅(qū)動<b class='flag-5'>程序</b>中的PHY

    EE-239:在ADSP-BF533 Blackfin處理器上運(yùn)行閃存程序

    電子發(fā)燒友網(wǎng)站提供《EE-239:在ADSP-BF533 Blackfin處理器上運(yùn)行閃存程序.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:58 ?0次下載
    EE-239:在ADSP-BF533 Blackfin<b class='flag-5'>處理</b>器上運(yùn)行閃存<b class='flag-5'>程序</b>

    EE-134:為SHARC系列編寫C兼容匯編代碼中斷處理程序

    電子發(fā)燒友網(wǎng)站提供《EE-134:為SHARC系列編寫C兼容匯編代碼中斷處理程序.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:58 ?0次下載
    EE-134:為SHARC系列編寫C兼容匯編代碼中斷<b class='flag-5'>處理</b><b class='flag-5'>程序</b>

    EE-351:使用ADSP-BF592 Blackfin處理器工具實(shí)用程序ROM

    電子發(fā)燒友網(wǎng)站提供《EE-351:使用ADSP-BF592 Blackfin處理器工具實(shí)用程序ROM.pdf》資料免費(fèi)下載
    發(fā)表于 01-05 09:09 ?0次下載
    EE-351:使用ADSP-BF592 Blackfin<b class='flag-5'>處理</b>器工具實(shí)用<b class='flag-5'>程序</b>ROM

    深入解析Linux程序與進(jìn)程

    關(guān)于某個數(shù)據(jù)集合的一次運(yùn)行活動。作為系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。 程序與進(jìn)程的關(guān)系 進(jìn)程的狀態(tài) 基礎(chǔ)進(jìn)程狀態(tài) 創(chuàng)建狀態(tài):進(jìn)程在創(chuàng)建時(shí)需要申請一個空白PCB(process control block進(jìn)程控制塊),向其中填寫
    的頭像 發(fā)表于 12-18 11:01 ?115次閱讀
    深入解析Linux<b class='flag-5'>程序</b>與進(jìn)程

    Linux驅(qū)動程序程序員指南

    電子發(fā)燒友網(wǎng)站提供《Linux驅(qū)動程序程序員指南.pdf》資料免費(fèi)下載
    發(fā)表于 11-22 15:53 ?0次下載
    Linux驅(qū)動<b class='flag-5'>程序</b><b class='flag-5'>程序</b>員指南

    gawk程序基礎(chǔ)教程

    gawk程序是Unix中原始awk程序的GNU版本。gawk程序讓流編輯器邁上了一個新的臺階,它提供了一種編程語言而不只是編輯器命令。
    的頭像 發(fā)表于 10-29 16:42 ?170次閱讀

    使用CSL來補(bǔ)充操作系統(tǒng)調(diào)度程序處理級聯(lián)中斷

    電子發(fā)燒友網(wǎng)站提供《使用CSL來補(bǔ)充操作系統(tǒng)調(diào)度程序處理級聯(lián)中斷.pdf》資料免費(fèi)下載
    發(fā)表于 10-16 10:12 ?0次下載
    使用CSL來補(bǔ)充操作系統(tǒng)<b class='flag-5'>調(diào)度</b><b class='flag-5'>程序</b><b class='flag-5'>處理</b>級聯(lián)中斷

    使用IO-link主幀處理程序實(shí)現(xiàn)靈活的時(shí)序配置

    電子發(fā)燒友網(wǎng)站提供《使用IO-link主幀處理程序實(shí)現(xiàn)靈活的時(shí)序配置.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 11:28 ?0次下載
    使用IO-link主幀<b class='flag-5'>處理</b><b class='flag-5'>程序</b>實(shí)現(xiàn)靈活的時(shí)序配置

    Linux設(shè)備驅(qū)動程序分類有哪些

    驅(qū)動程序可以根據(jù)硬件類型進(jìn)行分類,主要包括以下幾種: 1.1 存儲設(shè)備驅(qū)動程序 存儲設(shè)備驅(qū)動程序主要負(fù)責(zé)與硬盤、固態(tài)硬盤、光盤等存儲設(shè)備進(jìn)行通信。這類驅(qū)動程序需要
    的頭像 發(fā)表于 08-30 15:11 ?631次閱讀

    母線失壓處理的一般程序是什么

    母線失壓是指電力系統(tǒng)中母線電壓突然下降至零或接近零的情況,這通常會導(dǎo)致電力系統(tǒng)的不穩(wěn)定和設(shè)備損壞。為了確保電力系統(tǒng)的安全穩(wěn)定運(yùn)行,需要對母線失壓進(jìn)行及時(shí)有效的處理。以下是母線失壓處理的一般程序,我們
    的頭像 發(fā)表于 08-13 17:06 ?706次閱讀

    如何看懂檢測設(shè)備程序邏輯

    檢測設(shè)備程序邏輯是確保設(shè)備正常運(yùn)行和提高檢測效率的關(guān)鍵。本文將介紹如何看懂檢測設(shè)備程序邏輯,包括程序結(jié)構(gòu)、程序設(shè)計(jì)、程序調(diào)試、
    的頭像 發(fā)表于 07-17 16:50 ?468次閱讀

    操作FreeRTOS時(shí),執(zhí)行__WFI()導(dǎo)致系統(tǒng)滴答中斷無法喚醒設(shè)備怎么解決?

    內(nèi)核時(shí)鐘全部關(guān)閉了,導(dǎo)致滴答中斷無法觸發(fā),不知道是不是這樣的原因 2、如果__WFI()無法使用滴答中斷喚醒,那能否用普通定時(shí)器喚醒,怎么樣能夠讓普通定時(shí)器去替代系統(tǒng)滴答呢 希望有高人
    發(fā)表于 04-24 08:29

    什么是單板機(jī)的監(jiān)控程序

    初始化程序:用于設(shè)置單片機(jī)的初始狀態(tài),包括初始化寄存器、設(shè)置中斷向量、啟動時(shí)鐘等。   主循環(huán)程序:監(jiān)控程序的主程序,不斷循環(huán)執(zhí)行,包括讀取輸入、
    的頭像 發(fā)表于 02-02 17:15 ?1389次閱讀
    什么是單板機(jī)的監(jiān)控<b class='flag-5'>程序</b>?

    如何避免PLC程序卡死呢?

    編寫穩(wěn)定的程序:編寫良好的、穩(wěn)定的PLC程序是避免程序卡死的關(guān)鍵。確保程序邏輯清晰、簡潔,并遵循編程最佳實(shí)踐。避免死循環(huán)、邏輯錯誤和沖突的發(fā)生。
    的頭像 發(fā)表于 01-26 09:14 ?671次閱讀