精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在高度時間敏感的低功耗藍牙應用中使用 RTOS

名士流 ? 來源:名士流 ? 作者:名士流 ? 2022-08-11 14:33 ? 次閱讀

當您設計嵌入式系統時,您需要回答的問題之一是您的應用程序是否需要實時操作系統 (RTOS)。許多嵌入式設計人員都回避使用 RTOS 內核,因為他們擔心內核在處理關鍵部分時會禁用中斷,這會妨礙時間敏感型應用程序無法滿足最后期限。

什么是實時操作系統? RTOS 是一種軟件,可以盡可能高效地管理中央處理單元 (CPU)、微處理單元 (MPU) 甚至數字信號處理器DSP) 的時間。大多數 RTOS 內核是用 C 語言編寫的,需要一小部分用匯編語言編寫的代碼來使內核適應不同的 CPU 架構。

內核為程序員提供了許多有用的服務,包括多任務處理、中斷管理、任務間通信和信令、資源管理、時間管理和內存分區管理。應用程序基本上分為多個任務,每個任務負責應用程序的一部分。任務是一個簡單的程序,它認為它自己擁有 CPU。每個任務都根據任務的重要性分配一個優先級。

大多數用于嵌入式系統的內核都是“搶占式”的,這意味著內核總是執行準備好運行的最重要的任務。搶占式內核也是事件驅動的,這意味著任務被設計為等待事件發生才能執行。當事件發生時,任務執行并執行其功能。如果任務等待的事件沒有發生,內核將運行其他任務。等待任務消耗 CPU 時間為零;內核允許您避免使用輪詢循環,這是對 CPU 時間的不好利用。

許多嵌入式程序員回避使用 RTOS 內核,因為他們擔心內核會給他們的應用程序增加太多復雜性。事實證明,您只需要少數服務即可使用內核啟動您的項目。至于開銷,RTOS 確實可能需要 2% 到 5% 的 CPU 資源來執行其職責。

然而,更重要的是 RTOS 在進入臨界區時需要禁用中斷。根據 CPU 本身、時鐘頻率以及內存訪問是否需要等待狀態,RTOS 可以禁用中斷數十微秒。對于大多數嵌入式應用程序而言,此限制通常不是問題,但在每微秒都很重要時可能會出現問題。

低功耗藍牙 (BLE) IoT 設備越來越多地配備 BLE 鏈路,因為當與智能手機或類似手持設備結合使用時,BLE 使這些 IoT 設備的調試和配置變得簡單方便。BLE 可以有多種操作模式、多種連接、多個廣告商等等,其中一些甚至可以重疊。

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

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

連接模式: Master 在每個連接間隔發送一個數據包,BLE Slave 設備在 150 μs 后回復 Master,即 IFS。如果 Master 有其他東西要發送給 Slave,它會在 150 μs 后向 Slave 發送一個數據包。設備相互發送數據包,直到兩端都沒有數據要發送。

對于 32 位 CPU 來說,150 微秒可能看起來很長,但在處理傳入請求時還有很多工作要做。數據包具有流控信息,指示從另一端請求什么序列號;可能有地址白名單過濾需要處理。

實際上,執行這些操作會消耗 120 μs 到 130 μs 的 CPU 時間。如果無法在 150 μs 內處理數據包,通常不會發生任何不良情況;數據吞吐量可能會略有下降或打開連接可能會延遲。從客戶的角度來看,這種行為與無線電干擾相同。但是,連續錯過這個截止日期不是一種選擇,因為它會使最終產品無法使用。

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

poYBAGLyXVyAVlzWAABalm_TewU694.png

圖 1:Cortex-M3 CPU 上的 ISR 和任務優先級。

圖 1 顯示了典型 Cortex-M3 CPU 的 ISR 和任務的優先級。如果 RTOS 需要保護臨界區,它會將 Cortex-M3 CPU 的 BASEPRI 寄存器設置為 0x40,從而禁用優先級為 0x40 及以下的 KA ISR。因為 0x00 和 0x20 是更高的優先級,它們將被允許中斷 CPU,即使 RTOS 處于臨界區的中間。

因此,時間敏感的 BLE ISR 可以簡單地分配優先級 0x00 或 0x20,當它們發生時,將立即處理它們,而與低優先級 ISR 或任務的狀態無關。

一項任務可能會為 nKA ISR 提供設置信息——操作模式、配置等。nKA ISR 可能還需要在任務級別執行進一步的非時間關鍵處理。因此,如果不允許 nKA ISR 進行任何 RTOS API 調用,nKA ISR 如何與任務通信?設置共享內存相當容易,如圖2 所示。

pYYBAGLyXWKALQbHAABHrQNqo18205.png

圖 2:nKA ISR 和任務之間的通信。

nKA ISR 將信息存儲到與其共享任務的內存中。

由于 nKA ISR 無法進行任何 RTOS API 調用,因此它需要觸發 KA 中斷,進而允許進行內核調用。ARM Cortex-M CPU 的嵌套向量中斷控制器 (NVIC) 允許系統設計人員做到這一點,但設計人員需要識別應用程序未使用的 I/O 設備并竊取其中斷向量以用于此目的。

因此,KA ISR 可以向任務發出信號,讓其知道共享 RAM 中的數據可用。

當所有 ISR 都已完成,并且 RTOS 已決定發出信號的任務現在是最高優先級時,該任務可以讀取 nKA ISR 發送給它的數據。

該任務可以根據需要將 nKA ISR 的信息存儲在一個共享區域中,該共享區域只能由 nKA ISR 讀取。數據寫入共享 RAM,但只有在設置“數據可用”標志時才能讀取。ARM Cortex-M3 CPU 和上面的處理器具有特殊指令,可確保設置或清除“數據可用”標志可以自動完成,以防止競爭條件,而無需禁用全局中斷。

nKA ISR 將輪詢任務提供的數據。這通常不是問題,因為無論如何都會在 nKA ISR 發生時發生這種情況。

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

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10826

    瀏覽量

    211160
  • 操作系統
    +關注

    關注

    37

    文章

    6742

    瀏覽量

    123192
  • 應用程序
    +關注

    關注

    37

    文章

    3243

    瀏覽量

    57603
  • 低功耗藍牙
    +關注

    關注

    1

    文章

    224

    瀏覽量

    21233
收藏 人收藏

    評論

    相關推薦

    超小藍牙模組,遠距離,低功耗#藍牙芯片 #低功耗藍牙 #物聯網 #硬聲創作季

    物聯網藍牙芯片模組低功耗藍牙
    fly
    發布于 :2022年08月23日 20:52:27

    藍牙低功耗技術

    設備應用,僅有很低的電池容量就可以使用很長時間。藍牙低功耗的技術應用設計和動態優化與低有效的數據吞吐量有直接關系。這包括一個廣泛的傳感器和控制的應用,包括運動和醫療傳感器、遙控器、游戲、手表給移動電話
    發表于 05-13 11:25

    RTOS低功耗設計原理及實現_TicklessMode(FreeRTOS的實現)

    目前, 越來越多的嵌入式產品開發中使RTOS 作為軟件平臺, 同時,開發中對低功耗的要求也越來越高, 這篇文檔會討論一下如何在 RTOS
    發表于 11-10 09:54

    低功耗藍牙怎么低功耗?如何界定

    的自放電特性也需要予以考慮,常溫下儲存,每年容量損失小于 2%。這些因素計算工作時間時也需要予以考慮。 低功耗藍牙如何實現低功耗和傳統
    發表于 02-06 15:32

    藍牙低功耗工業應用

    距離的通信、高通量的數據傳輸以及嚴苛的ISM應用,雖然這并不是藍牙低功耗的設計目的。然而,藍牙低功耗目前已經高質量工業應用領域中有所作為,
    發表于 08-30 14:33

    藍牙低功耗的問題

    問大家一個問題。最近一個產品,用到藍牙低功耗。因為藍牙模塊比較耗電,所以我想低功耗時,切斷藍牙模塊的供電。然后按鍵外部中斷喚醒單片機,再打開
    發表于 08-12 14:22

    怎樣低功耗藍牙中使用服務uuid AD類型呢?

    有沒有哪位大神可以解釋怎樣低功耗藍牙中使用服務uuid AD類型呢??
    發表于 12-12 06:15

    基于低功耗藍牙技術的設計

    藍牙技術已經融入到我們生活中的每一個角落,藍牙功耗問題也日益顯著。低功耗藍牙是一種新型的無線通信技術,具有巨大的市場潛力和適用范圍,是傳統
    發表于 09-13 17:21 ?16次下載

    低功耗藍牙(BLE)的特點介紹(1)

    了解低功耗藍牙(BLE),這是較新的嵌入式系統中使用的一種低功耗射頻協議。了解BLE與傳統藍牙技術的不同,以及相對于現有無線通信的優勢。
    的頭像 發表于 10-09 04:03 ?6540次閱讀

    RTOS低功耗設計原理的講解和實現概述

    目前,越來越多的嵌入式產品開發中使RTOS作為軟件平臺,同時,開發中對低功耗的要求也越來越高,這篇文檔會討論一下如何在RTOS中處理微控
    發表于 04-15 17:00 ?22次下載
    <b class='flag-5'>RTOS</b><b class='flag-5'>低功耗</b>設計原理的講解和實現概述

    我們該如何選擇低功耗藍牙芯片的軟件支持

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

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

    目前, 越來越多的嵌入式產品開發中使RTOS 作為軟件平臺, 同時,開發中對低功耗的要求也越來越高, 本文會討論一下如何在 RTOS
    的頭像 發表于 04-19 15:15 ?1474次閱讀

    低功耗藍牙低功耗設計中的應用

      隨著4.0版本支持的低功耗藍牙(BLE)的出現,由于消費市場對低能耗和低功耗的需求(BLE由Bluetooth SIG發明并正式化),現在它被廣泛應用于消費市場。
    的頭像 發表于 06-24 11:26 ?1377次閱讀
    <b class='flag-5'>低功耗</b><b class='flag-5'>藍牙</b><b class='flag-5'>在</b><b class='flag-5'>低功耗</b>設計中的應用

    低功耗藍牙技術的特點 低功耗藍牙如何實現低功耗?

    低功耗藍牙技術是一種優化的藍牙技術,專為滿足低功耗需求而設計。它通過采用一系列節能措施和技術,實現了更低的功耗消耗,延長了設備的續航
    的頭像 發表于 02-07 16:49 ?1900次閱讀

    國產藍牙模組 | 低功耗藍牙應用

    藍牙技術聯盟于2010年推出了藍牙4.0規范,其中低功耗藍牙的出現滿足了小型電池供電設備進行低功耗無線連接的需求,因此得到廣泛應用。本文章將
    的頭像 發表于 06-14 08:25 ?440次閱讀
    國產<b class='flag-5'>藍牙</b>模組 | <b class='flag-5'>低功耗</b><b class='flag-5'>藍牙</b>應用