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

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

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

在高度時(shí)間敏感的低功耗藍(lán)牙應(yīng)用中使用 RTOS

名士流 ? 來(lái)源:名士流 ? 作者:名士流 ? 2022-08-11 14:33 ? 次閱讀

當(dāng)您設(shè)計(jì)嵌入式系統(tǒng)時(shí),您需要回答的問(wèn)題之一是您的應(yīng)用程序是否需要實(shí)時(shí)操作系統(tǒng) (RTOS)。許多嵌入式設(shè)計(jì)人員都回避使用 RTOS 內(nèi)核,因?yàn)樗麄儞?dān)心內(nèi)核在處理關(guān)鍵部分時(shí)會(huì)禁用中斷,這會(huì)妨礙時(shí)間敏感型應(yīng)用程序無(wú)法滿足最后期限。

什么是實(shí)時(shí)操作系統(tǒng)? RTOS 是一種軟件,可以盡可能高效地管理中央處理單元 (CPU)、微處理單元 (MPU) 甚至數(shù)字信號(hào)處理器DSP) 的時(shí)間。大多數(shù) RTOS 內(nèi)核是用 C 語(yǔ)言編寫(xiě)的,需要一小部分用匯編語(yǔ)言編寫(xiě)的代碼來(lái)使內(nèi)核適應(yīng)不同的 CPU 架構(gòu)。

內(nèi)核為程序員提供了許多有用的服務(wù),包括多任務(wù)處理、中斷管理、任務(wù)間通信和信令、資源管理、時(shí)間管理和內(nèi)存分區(qū)管理。應(yīng)用程序基本上分為多個(gè)任務(wù),每個(gè)任務(wù)負(fù)責(zé)應(yīng)用程序的一部分。任務(wù)是一個(gè)簡(jiǎn)單的程序,它認(rèn)為它自己擁有 CPU。每個(gè)任務(wù)都根據(jù)任務(wù)的重要性分配一個(gè)優(yōu)先級(jí)。

大多數(shù)用于嵌入式系統(tǒng)的內(nèi)核都是“搶占式”的,這意味著內(nèi)核總是執(zhí)行準(zhǔn)備好運(yùn)行的最重要的任務(wù)。搶占式內(nèi)核也是事件驅(qū)動(dòng)的,這意味著任務(wù)被設(shè)計(jì)為等待事件發(fā)生才能執(zhí)行。當(dāng)事件發(fā)生時(shí),任務(wù)執(zhí)行并執(zhí)行其功能。如果任務(wù)等待的事件沒(méi)有發(fā)生,內(nèi)核將運(yùn)行其他任務(wù)。等待任務(wù)消耗 CPU 時(shí)間為零;內(nèi)核允許您避免使用輪詢循環(huán),這是對(duì) CPU 時(shí)間的不好利用。

許多嵌入式程序員回避使用 RTOS 內(nèi)核,因?yàn)樗麄儞?dān)心內(nèi)核會(huì)給他們的應(yīng)用程序增加太多復(fù)雜性。事實(shí)證明,您只需要少數(shù)服務(wù)即可使用內(nèi)核啟動(dòng)您的項(xiàng)目。至于開(kāi)銷,RTOS 確實(shí)可能需要 2% 到 5% 的 CPU 資源來(lái)執(zhí)行其職責(zé)。

然而,更重要的是 RTOS 在進(jìn)入臨界區(qū)時(shí)需要禁用中斷。根據(jù) CPU 本身、時(shí)鐘頻率以及內(nèi)存訪問(wèn)是否需要等待狀態(tài),RTOS 可以禁用中斷數(shù)十微秒。對(duì)于大多數(shù)嵌入式應(yīng)用程序而言,此限制通常不是問(wèn)題,但在每微秒都很重要時(shí)可能會(huì)出現(xiàn)問(wèn)題。

低功耗藍(lán)牙 (BLE) IoT 設(shè)備越來(lái)越多地配備 BLE 鏈路,因?yàn)楫?dāng)與智能手機(jī)或類似手持設(shè)備結(jié)合使用時(shí),BLE 使這些 IoT 設(shè)備的調(diào)試和配置變得簡(jiǎn)單方便。BLE 可以有多種操作模式、多種連接、多個(gè)廣告商等等,其中一些甚至可以重疊。

掃描模式: 設(shè)備掃描其他設(shè)備發(fā)送的廣告包。掃描由掃描之間的間隔和設(shè)備正在偵聽(tīng)的時(shí)間窗口組成。掃描儀在每個(gè)間隔改變頻道頻率。需要在收到請(qǐng)求后 150 μs 內(nèi)做出響應(yīng)。這稱為幀間空間 (IFS)。

廣告模式: BLE 設(shè)備也可以自行執(zhí)行廣告,廣告時(shí)間可能在 20 毫秒到 3 小時(shí)之間。

連接模式: Master 在每個(gè)連接間隔發(fā)送一個(gè)數(shù)據(jù)包,BLE Slave 設(shè)備在 150 μs 后回復(fù) Master,即 IFS。如果 Master 有其他東西要發(fā)送給 Slave,它會(huì)在 150 μs 后向 Slave 發(fā)送一個(gè)數(shù)據(jù)包。設(shè)備相互發(fā)送數(shù)據(jù)包,直到兩端都沒(méi)有數(shù)據(jù)要發(fā)送。

對(duì)于 32 位 CPU 來(lái)說(shuō),150 微秒可能看起來(lái)很長(zhǎng),但在處理傳入請(qǐng)求時(shí)還有很多工作要做。數(shù)據(jù)包具有流控信息,指示從另一端請(qǐng)求什么序列號(hào);可能有地址白名單過(guò)濾需要處理。

實(shí)際上,執(zhí)行這些操作會(huì)消耗 120 μs 到 130 μs 的 CPU 時(shí)間。如果無(wú)法在 150 μs 內(nèi)處理數(shù)據(jù)包,通常不會(huì)發(fā)生任何不良情況;數(shù)據(jù)吞吐量可能會(huì)略有下降或打開(kāi)連接可能會(huì)延遲。從客戶的角度來(lái)看,這種行為與無(wú)線電干擾相同。但是,連續(xù)錯(cuò)過(guò)這個(gè)截止日期不是一種選擇,因?yàn)樗鼤?huì)使最終產(chǎn)品無(wú)法使用。

BLE 應(yīng)用程序中 的 RTOS 如果 RTOS 可能會(huì)在數(shù)十微秒內(nèi)禁用中斷,那么您為什么要考慮在基于 BLE 的應(yīng)用程序中使用它呢?嗯,答案是這些時(shí)間緊迫的事件可以在 RTOS 之外輕松處理。具體來(lái)說(shuō),可以在 RTOS 范圍之外分配特定的時(shí)間敏感中斷服務(wù)例程 (ISR)。這些稱為非內(nèi)核感知 (nKA) ISR,顧名思義,它們只是繞過(guò) RTOS 內(nèi)核。nKA ISR 的優(yōu)先級(jí)高于內(nèi)核感知 (KA) ISR。

poYBAGLyXVyAVlzWAABalm_TewU694.png

圖 1:Cortex-M3 CPU 上的 ISR 和任務(wù)優(yōu)先級(jí)。

圖 1 顯示了典型 Cortex-M3 CPU 的 ISR 和任務(wù)的優(yōu)先級(jí)。如果 RTOS 需要保護(hù)臨界區(qū),它會(huì)將 Cortex-M3 CPU 的 BASEPRI 寄存器設(shè)置為 0x40,從而禁用優(yōu)先級(jí)為 0x40 及以下的 KA ISR。因?yàn)?0x00 和 0x20 是更高的優(yōu)先級(jí),它們將被允許中斷 CPU,即使 RTOS 處于臨界區(qū)的中間。

因此,時(shí)間敏感的 BLE ISR 可以簡(jiǎn)單地分配優(yōu)先級(jí) 0x00 或 0x20,當(dāng)它們發(fā)生時(shí),將立即處理它們,而與低優(yōu)先級(jí) ISR 或任務(wù)的狀態(tài)無(wú)關(guān)。

一項(xiàng)任務(wù)可能會(huì)為 nKA ISR 提供設(shè)置信息——操作模式、配置等。nKA ISR 可能還需要在任務(wù)級(jí)別執(zhí)行進(jìn)一步的非時(shí)間關(guān)鍵處理。因此,如果不允許 nKA ISR 進(jìn)行任何 RTOS API 調(diào)用,nKA ISR 如何與任務(wù)通信?設(shè)置共享內(nèi)存相當(dāng)容易,如圖2 所示。

pYYBAGLyXWKALQbHAABHrQNqo18205.png

圖 2:nKA ISR 和任務(wù)之間的通信。

nKA ISR 將信息存儲(chǔ)到與其共享任務(wù)的內(nèi)存中。

由于 nKA ISR 無(wú)法進(jìn)行任何 RTOS API 調(diào)用,因此它需要觸發(fā) KA 中斷,進(jìn)而允許進(jìn)行內(nèi)核調(diào)用。ARM Cortex-M CPU 的嵌套向量中斷控制器 (NVIC) 允許系統(tǒng)設(shè)計(jì)人員做到這一點(diǎn),但設(shè)計(jì)人員需要識(shí)別應(yīng)用程序未使用的 I/O 設(shè)備并竊取其中斷向量以用于此目的。

因此,KA ISR 可以向任務(wù)發(fā)出信號(hào),讓其知道共享 RAM 中的數(shù)據(jù)可用。

當(dāng)所有 ISR 都已完成,并且 RTOS 已決定發(fā)出信號(hào)的任務(wù)現(xiàn)在是最高優(yōu)先級(jí)時(shí),該任務(wù)可以讀取 nKA ISR 發(fā)送給它的數(shù)據(jù)。

該任務(wù)可以根據(jù)需要將 nKA ISR 的信息存儲(chǔ)在一個(gè)共享區(qū)域中,該共享區(qū)域只能由 nKA ISR 讀取。數(shù)據(jù)寫(xiě)入共享 RAM,但只有在設(shè)置“數(shù)據(jù)可用”標(biāo)志時(shí)才能讀取。ARM Cortex-M3 CPU 和上面的處理器具有特殊指令,可確保設(shè)置或清除“數(shù)據(jù)可用”標(biāo)志可以自動(dòng)完成,以防止競(jìng)爭(zhēng)條件,而無(wú)需禁用全局中斷。

nKA ISR 將輪詢?nèi)蝿?wù)提供的數(shù)據(jù)。這通常不是問(wèn)題,因?yàn)闊o(wú)論如何都會(huì)在 nKA ISR 發(fā)生時(shí)發(fā)生這種情況。

總結(jié) RTOS 和時(shí)間敏感的應(yīng)用程序(如 BLE)可以通過(guò)制作非內(nèi)核感知的時(shí)間敏感 ISR 輕松共存。使用與此類似的方案可確保時(shí)間關(guān)鍵代碼不受 RTOS 存在的影響。同時(shí),RTOS 可以最有效地利用 CPU 來(lái)處理時(shí)間不敏感的代碼。

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

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209373
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6545

    瀏覽量

    122743
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3198

    瀏覽量

    57360
  • 低功耗藍(lán)牙
    +關(guān)注

    關(guān)注

    1

    文章

    217

    瀏覽量

    21003
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    超小藍(lán)牙模組,遠(yuǎn)距離,低功耗#藍(lán)牙芯片 #低功耗藍(lán)牙 #物聯(lián)網(wǎng) #硬聲創(chuàng)作季

    物聯(lián)網(wǎng)藍(lán)牙芯片模組低功耗藍(lán)牙
    fly
    發(fā)布于 :2022年08月23日 20:52:27

    藍(lán)牙低功耗技術(shù)

    設(shè)備應(yīng)用,僅有很低的電池容量就可以使用很長(zhǎng)時(shí)間。藍(lán)牙低功耗的技術(shù)應(yīng)用設(shè)計(jì)和動(dòng)態(tài)優(yōu)化與低有效的數(shù)據(jù)吞吐量有直接關(guān)系。這包括一個(gè)廣泛的傳感器和控制的應(yīng)用,包括運(yùn)動(dòng)和醫(yī)療傳感器、遙控器、游戲、手表給移動(dòng)電話
    發(fā)表于 05-13 11:25

    RTOS低功耗設(shè)計(jì)原理及實(shí)現(xiàn)_TicklessMode(FreeRTOS的實(shí)現(xiàn))

    目前, 越來(lái)越多的嵌入式產(chǎn)品開(kāi)發(fā)中使RTOS 作為軟件平臺(tái), 同時(shí),開(kāi)發(fā)中對(duì)低功耗的要求也越來(lái)越高, 這篇文檔會(huì)討論一下如何在 RTOS
    發(fā)表于 11-10 09:54

    低功耗藍(lán)牙怎么低功耗?如何界定

    的自放電特性也需要予以考慮,常溫下儲(chǔ)存,每年容量損失小于 2%。這些因素計(jì)算工作時(shí)間時(shí)也需要予以考慮。 低功耗藍(lán)牙如何實(shí)現(xiàn)低功耗和傳統(tǒng)
    發(fā)表于 02-06 15:32

    藍(lán)牙低功耗工業(yè)應(yīng)用

    距離的通信、高通量的數(shù)據(jù)傳輸以及嚴(yán)苛的ISM應(yīng)用,雖然這并不是藍(lán)牙低功耗的設(shè)計(jì)目的。然而,藍(lán)牙低功耗目前已經(jīng)高質(zhì)量工業(yè)應(yīng)用領(lǐng)域中有所作為,
    發(fā)表于 08-30 14:33

    藍(lán)牙低功耗的問(wèn)題

    問(wèn)大家一個(gè)問(wèn)題。最近一個(gè)產(chǎn)品,用到藍(lán)牙低功耗。因?yàn)?b class='flag-5'>藍(lán)牙模塊比較耗電,所以我想低功耗時(shí),切斷藍(lán)牙模塊的供電。然后按鍵外部中斷喚醒單片機(jī),再打開(kāi)
    發(fā)表于 08-12 14:22

    怎樣低功耗藍(lán)牙中使用服務(wù)uuid AD類型呢?

    有沒(méi)有哪位大神可以解釋怎樣低功耗藍(lán)牙中使用服務(wù)uuid AD類型呢??
    發(fā)表于 12-12 06:15

    解密:Ble低功耗藍(lán)牙藍(lán)牙mesh網(wǎng)絡(luò)之間的關(guān)系

    高度可靠。?低功耗節(jié)點(diǎn)和Friend節(jié)點(diǎn)在藍(lán)牙Mesh網(wǎng)絡(luò)中,低功耗節(jié)點(diǎn)可以通過(guò)減少射頻收發(fā)機(jī)(RF transceiver)開(kāi)啟的占空比來(lái)達(dá)到低功
    的頭像 發(fā)表于 06-12 11:12 ?9554次閱讀

    低功耗藍(lán)牙(BLE)的特點(diǎn)介紹(1)

    了解低功耗藍(lán)牙(BLE),這是較新的嵌入式系統(tǒng)中使用的一種低功耗射頻協(xié)議。了解BLE與傳統(tǒng)藍(lán)牙技術(shù)的不同,以及相對(duì)于現(xiàn)有無(wú)線通信的優(yōu)勢(shì)。
    的頭像 發(fā)表于 10-09 04:03 ?6431次閱讀

    RTOS低功耗設(shè)計(jì)原理的講解和實(shí)現(xiàn)概述

    目前,越來(lái)越多的嵌入式產(chǎn)品開(kāi)發(fā)中使RTOS作為軟件平臺(tái),同時(shí),開(kāi)發(fā)中對(duì)低功耗的要求也越來(lái)越高,這篇文檔會(huì)討論一下如何在RTOS中處理微控
    發(fā)表于 04-15 17:00 ?22次下載
    <b class='flag-5'>RTOS</b><b class='flag-5'>低功耗</b>設(shè)計(jì)原理的講解和實(shí)現(xiàn)概述

    我們?cè)撊绾芜x擇低功耗藍(lán)牙芯片的軟件支持

    速度、工作模式及其他因素的抉擇。下面介紹如何選擇低功耗藍(lán)牙芯片的軟件支持。 最小化低功耗藍(lán)牙芯片應(yīng)用的功耗需要對(duì)射頻操作進(jìn)行
    發(fā)表于 03-05 15:22 ?1426次閱讀

    如何在RTOS中處理微控制器的低功耗特性

    目前, 越來(lái)越多的嵌入式產(chǎn)品開(kāi)發(fā)中使RTOS 作為軟件平臺(tái), 同時(shí),開(kāi)發(fā)中對(duì)低功耗的要求也越來(lái)越高, 本文會(huì)討論一下如何在 RTOS
    的頭像 發(fā)表于 04-19 15:15 ?1403次閱讀

    低功耗藍(lán)牙低功耗設(shè)計(jì)中的應(yīng)用

      隨著4.0版本支持的低功耗藍(lán)牙(BLE)的出現(xiàn),由于消費(fèi)市場(chǎng)對(duì)低能耗和低功耗的需求(BLE由Bluetooth SIG發(fā)明并正式化),現(xiàn)在它被廣泛應(yīng)用于消費(fèi)市場(chǎng)。
    的頭像 發(fā)表于 06-24 11:26 ?1260次閱讀
    <b class='flag-5'>低功耗</b><b class='flag-5'>藍(lán)牙</b><b class='flag-5'>在</b><b class='flag-5'>低功耗</b>設(shè)計(jì)中的應(yīng)用

    低功耗藍(lán)牙技術(shù)的特點(diǎn) 低功耗藍(lán)牙如何實(shí)現(xiàn)低功耗?

    低功耗藍(lán)牙技術(shù)是一種優(yōu)化的藍(lán)牙技術(shù),專為滿足低功耗需求而設(shè)計(jì)。它通過(guò)采用一系列節(jié)能措施和技術(shù),實(shí)現(xiàn)了更低的功耗消耗,延長(zhǎng)了設(shè)備的續(xù)航
    的頭像 發(fā)表于 02-07 16:49 ?1528次閱讀

    國(guó)產(chǎn)藍(lán)牙模組 | 低功耗藍(lán)牙應(yīng)用

    藍(lán)牙技術(shù)聯(lián)盟于2010年推出了藍(lán)牙4.0規(guī)范,其中低功耗藍(lán)牙的出現(xiàn)滿足了小型電池供電設(shè)備進(jìn)行低功耗無(wú)線連接的需求,因此得到廣泛應(yīng)用。本文章將
    的頭像 發(fā)表于 06-14 08:25 ?316次閱讀
    國(guó)產(chǎn)<b class='flag-5'>藍(lán)牙</b>模組 | <b class='flag-5'>低功耗</b><b class='flag-5'>藍(lán)牙</b>應(yīng)用