為何執行RTOS的DSP是物聯網最佳選擇?

作者 : Ori Leibovich,CEVA嵌入式軟體暨DevOps資深經理

雖然DSP已經存在很長時間,但新一代DSP所支援的功能,對於滿足某些特定市場需求來說非常重要,比如物聯網。有鑑於許多物聯網裝置的既有性質,通常都會使用即時作業系統(RTOS)…

隨著新市場成長和伴隨而來的技術需求,某些技術的使用日漸普及。其中一項技術就是數位訊號處理(DSP),可能是以晶片的形式呈現,也可能採用可立即進行單晶片系統 (SoC)整合的IP核心。雖然DSP已推出相當長的時間,但新一代的DSP 能支援有助於滿足特定市場需求的功能和特色。其中一個市場是物聯網(IoT)。由於許多物聯網裝置的性質,它們因即時作業系統(RTOS)的運作而受惠。本文探討DSP和RT-Thread RTOS如何一起用於物聯網應用上。

DSP技術的演進

DSP的目的在於轉換與操控真實世界的類比訊號,這些訊號因其性質一直受到重視。操控的執行係透過訊號處理演算法。DSP這項技術自80年代推出以來,在硬體功能、軟體開發工具和基礎架構上歷經許多的演化與發展。在最初的幾年間,演算法以組合語言寫入DSP。隨著DSP的市場不斷擴大、演算法變得越來越複雜,架構也隨之演進,加速高階語言編譯器的發展。

搭載了內嵌DSP核心的晶片含有晶片內建記憶體,通常足以置入執行專門工作所需要的完整程式。現代的DSP應用程式涵蓋音訊/語音處理、影像處理、電信訊號處理、感測器資料處理和控制系統。然後,物聯網市場的許多使用案例都涵蓋了這些應用程式的組合。產業分析公司Markets and Markets預估,到了2027年,全球物聯網技術將成長到5,664億美元。

為什麼DSP是物聯網裝置的好夥伴?

物聯網的重點全在於通訊,透過使用不同類型的感應器來收集資料數據,將真實世界中的事物連結起來。DSP的主要功用是分析與處理從感測器收到的各種不斷變動的訊號。DSP設計成用來分析和處理真實世界的訊號,例如音訊、視訊、溫度、壓力或濕度等等。例如CEVA-SensPro2感測器中樞DSP產品系列便旨在處理與融合多個感測器,而神經網路推論則適用於情境感知。DSP工作涉及即時進行精準的數字重複運算。由於物聯網市場的成長,使用的感測器也越來越多,而感測器收集到的資料都必須以優異的功耗效率予以即時處理。目前的主流趨勢是在物聯網裝置上直接處理資料,不再將資料傳送到雲端進行處理。

當前另一個趨勢則是使用人工智慧(AI)演算法在物聯網裝置上直接處理資料,這種做法正日益普及。AI演算法以神經網路模型作為基礎,需要高階的平行處理才能有效執行。平行運算是DSP勝過泛用型中央處理器(CPU)的一項關鍵優勢,為了滿足平行處理需求,現代DSP架構使用寬向量和單一指令多資料(SIMD)功能。

簡單來說,以DSP作為基礎的強大解決方案可以滿足高效能運算需求及今日物聯網裝置的低功耗需求。

為什麼DSPRTOS的好夥伴?

DSP是專攻特定領域的處理器,同樣的,RTOS也是專門化的作業系統。DSP專門用於以極快速度穩定處理真實世界的資料。RTOS則專用來可靠地滿足回應/反應時間的特定時間需求。跟泛用型的CPU相比,DSP體積小巧;而跟一般的作業系統相比,RTOS亦是如此。這些特色符合物聯網裝置的需求,使DSP和RTOS成為物聯網應用程式的最佳選擇。

在過去,嵌入式裝置大多只有一個專門用途,因此一個8位元或16位元的微控制器通常就足以勝任,而這些裝置可以在沒有RTOS的情況下加以管理。但今日的物聯網裝置更為複雜,需要一個32位元的綜合CPU,再搭配DSP與RTOS,才能管理控制功能以及執行複雜的訊號處理工作。

真正重要的問題在於,現代的DSP是否足以同時勝任訊號處理工作和物聯網裝置的控制功能?答案是Yes。同時提供DSP功能和控制器功能的混合式DSP架構,正在物聯網和其他嵌入式裝置快速普及。這種混合式DSP支援極長指令(VLIW)架構實作、單一指令多資料(SIMD)作業、單精度浮點數、小巧程式碼、完整RTOS、超快速上下文交換、動態分支預測等。這讓物聯網裝置不需要搭載額外的處理器來執行RTOS。

DSP為導向的RTOS

DSP型RTOS的主要目的是善用DSP的高效能特性。它是一種預先執行、以優先順序為基礎的多工作業系統,且具有極低的中斷延遲。這類RTOS搭載驅動程式、應用程式介面(API),以及特定DSP晶片的DSP功能的執行時間晶片支援庫(CSL)。晶片上的所有周邊設備,例如快取記憶體、直接記憶體存取(DMA)、計時器、中斷單元等,均可加以控制。如此一來,物聯網應用程式的開發人員就能輕鬆設定RTOS來處理資源要求和管理系統。

適用於物聯網應用程式的RTOS:RT-Thread

RT-Thread是一個開放原始碼的RTOS。此RTOS的資源佔用度極低、可靠度高、擴充性也高,非常適合物聯網裝置。RT-Thread有豐富的中介軟體支援,還有物聯網裝置所需要的廣泛硬體和軟體生態系。它支援所有的主流編譯工具,例如GCC、Keil、IAR 等,並支援多種標準介面,如 OSIX、CMSIS、C++應用程式環境、Micropython和 Javascript。RT-Thread也為所有的主流CPU和DSP架構提供極佳的支援。線程間(inter-thread)通訊與同步,透過 RTOS 傳訊、信號(semaphore)等服務進行高效率且一致的處理。標準版本的RT-Thread可搭配資源豐富的物聯網裝置使用,Nano版本的RT-Thread則可搭配資源有限的系統使用。

截至2021年12月,報導指出RT-Thread已用於15億台裝置上(資料來源:RT-Thread)。

DSPRT-Thread RTOS

由於CEVA的DSP架構的最初設計用意是用來支援RTOS功能與超快速上下文交換,因此採用CEVA DSP與RT-Thread RTOS的物聯網裝置可在不中斷RTOS的前提下,處理不同資源之間的許多通訊工作。例如,多核心通訊介面(MCCI)機制可讓核心之間進行指令與訊息的通訊。藉由使用 AXI 從屬連接埠來直接存取專門的指令暫存器,從而得以實現核心之間的通訊。DSP有專門的控制和指示,可透過MCCI追蹤通訊狀態。

 

多核心通訊介面。

(來源:CEVA)

 

核心之間執行傳訊時,會使用32位元的MCCI_NUM專門指令暫存器。32位元COM_REGx暫存器是由外部核心透過AXI從屬連接埠寫入,且核心只能對其進行讀取。發出指令的核心最多可同時寫入4個暫存器(128位元AXI匯流排)或8個暫存器(256位元AXI匯流排)。

當核心發出指令,將指令輸出給COM_REGx時,接收的暫存器會更新,COM_STS暫存器中的相關狀態位元亦會更新。此外,系統會宣告中斷(MES_INT),以通知接收的核心。

接收的核心讀取其中一個COM_REGx暫存器後,讀取指示會傳送到發出指令的核心。接收核心會使用專門的RD_IND (讀取指示) MCCI_NUM位元匯流排介面來傳送讀取指示。RD_IND匯流排的每個位元分別代表來自其中一個COM_REGx暫存器的讀取操作。使用IO介面時,接收核心一次只能讀取一個COM_REGx暫存器。這不僅讓同步不同核心變得更為簡單,也讓同步這些核心上的不同工作更為輕鬆。

CEVA已將許多不同的RTOS移植到他們的DSP產品中。最近新加入的生力軍是一般版本與Nano版本的RT-Thread RTOS。RT-Thread已被移植到多個CEVA DSP,例如 SensPro2、CEVA-BX1、CEVA-BX2、CEVA-XC16等。

(參考原文:Why advanced DSPs running RTOSs are an ideal match for the IoT,Ori Leibovich)

本文同步刊登於《電子工程專輯》雜誌2022年8月號

 

 

 

 

加入我們官方帳號LINE@,最新消息一手掌握!

發表評論