發布日期:2022-04-22 點擊率:55
從通信、采樣傳感器到執行機器學習 (ML) 推斷,物聯網 (IoT) 邊緣設備開發人員需要將越來越多樣化的處理密集型功能整合到設計中。同時,開發人員還需要保持或降低功耗。因而,開發人員所需要的是在設計的核心元件(即微控制器)上采用更加靈活的架構方法,以便增加功能,同時實現性能、功能和功耗之間的最佳平衡。
這種架構方法就是多核微控制器。顧名思義,這些微控制器在單個封裝中集成了多個處理內核。不過,僅僅使用多個內核是解決不了問題的。開發人員需要了解對稱和非對稱多核處理器之間的差別、如何進行功能劃分,以及如何對這些內核進行有效編程。
本文將先介紹多核微控制器的概念,然后再討論開發人員如何充分利用多核微控制器來平衡性能和能量限制。本文將以 STMicroelectronics 的 STM32H7 系列中的幾款多核微控制器為例來進行說明。此外,本文還將探討開發人員如何充分利用多核處理及借以分擔工作負載的若干用例。
如上所述,多核微控制器擁有多個處理內核,采用兩種常用的配置:對稱和非對稱處理。對稱內核配置包含兩個或多個完全相同的處理內核。例如,這些內核可能都是 Arm? Cortex?-M4 處理器。另一方面,非對稱內核可能包含 Arm Cortex-M7 處理器和 Arm Cortex-M4 處理器,也可能包含 Arm Cortex-M4 和 Arm Cortex-M0+ 處理器。這類組合的示例有很多,具體取決于應用和設計要求。
物聯網開發人員對多核微控制器非常感興趣,因為此類控制器使開發人員能夠將應用分成多個執行域。通過劃分執行域,能夠精確控制應用的性能、功能和功率需求。例如,一個內核可用于通過高分辨率顯示屏和觸摸面板的用戶交互,而第二個內核則用于管理系統的實時要求,例如控制電機、繼電器和采樣傳感器。
開發人員可通過多種方式來劃分應用,其中兩大范式是將應用分成:
各種功能/實時處理
實時/安全
在第一種范式(各種功能/實時處理)中,系統與上文所述完全一樣。顯示屏、機器學習推斷、音頻播放和存儲器等實現各種功能的應用元器件都由一個內核進行處理。然后,第二個內核用于處理實時功能,例如電機控制、感測和通訊棧(圖 1)。
圖 1:一種使用多核微控制器進行應用設計的范式是,將實現各種功能的應用元器件置于一個內核中,并將實時處理元器件置于第二個內核中。(圖片來源:STMicroelectronics)
第二種范式是將應用分成實時和安全功能。在第一個內核中,應用可處理顯示、存儲器訪問和實時音頻播放等功能。另一方面,第二個內核則只作為安全處理器。因此,第二個內核將處理設備和網絡密鑰等關鍵數據存儲,同時還處理加密、安全引導程序以及屬于安全軟件類別的任何其他功能(圖 2)。
圖 2:另一種使用多核微控制器進行應用設計的范式是,將實時應用元器件置于一個內核中,并將所有安全元器件置于第二個內核中。(圖片來源:STMicroelectronics)
除此之外,還可通過一些其他方式來分解多核微控制器的應用空間,但這兩種范式似乎最受物聯網開發人員青睞。
雖然多核微控制器越來越受青睞,但仍算不上主流控制器,因而器件選型可能比較棘手。如果開發人員想要使用多核微控制器,那么最好選擇具有下列特性的開發板:
包括用于各種功能應用探索的 LCD
擴展 I/O
低成本
由久經驗證的生態系統提供支持,包括示例代碼、社區論壇,并可接觸到知識豐富的 FAE
讓我們來看看 STMicroelectronics 推出的幾款產品示例,首先從 STM32H745I-DISCO 開始(圖 3)。該開發板基于 STM32H745ZIT6 雙內核微控制器,包含一個運行頻率為 480 MHz 的 Arm Cortex-M7 內核和第二個運行頻率為 240 MHz 的 Arm Cortex-M4 處理器。該器件具有雙精度浮點單元和 L1 緩存——16 KB 數據緩存和 16 KB 指令緩存。這款 Discovery 板相當值得關注,因為它有許多附加功能,例如:
SAI 音頻編解碼器
微機電系統 (MEMS) 麥克風
板載四通道 SPI 閃存
4 GB eMMC
子板擴展
以太網
用于音頻和耳機的針座
該開發板具有許多內置功能,因而非常容易著手嘗試使用多核微控制器,并切實提高應用性能。
圖 3:STM32H745I-DISCO 板集成了各種板載傳感器和存儲器功能,使開發人員能夠測試運行頻率分別為 480 MHz 和 240 MHz 的雙核微控制器。(圖片來源:STMicroelectronics)
如果開發人員希望開發板具有附加功能和更多擴展 I/O,val/497-19506-ND/10244390">STM32H757I-eval 可能正是理想之選(圖 4)。STM32H757I-eval 包括許多評估板所不具備的功能,例如:
8 M x 32 位 SRAM
1 Gb 四通道 SPI NOR 雙閃存
用于指令跟蹤的嵌入式跟蹤宏單元 (ETM)
電位計
LED
按鈕(撥動、操縱桿、喚醒)
這些附加功能,尤其是 I/O 擴展,對剛剛入門的開發人員非常有用。
圖 4:STM32H757I-eval 板為開發人員提供了許多擴展空間,便于訪問外設,并帶有 LCD 屏幕,以便開始著手多核應用。(圖片來源:STMicroelectronics)
介紹了幾款開發板后,接下來將簡單提出一些建議,幫助大家開始著手多核微控制器應用。
無論選擇兩款 STM32H7 開發板中的哪一款,開始著手時都需要兩個主要工具。第一個工具是 STMicroelectronics 的 STM32CubeIDE,這款免費集成開發環境 (IDE) 使開發人員可以編譯自己的應用代碼,并將其部署到開發板。此外,STM32CubeIDE 還提供對應用進行單步調試所需的資源,適用于 Windows、Linux 和 MacOS 等主要操作系統。
第二個工具是 STMicroelectronics 的 STM32H7 固件包。其中包括適用于 STM32H7 開發板的下列示例:
多核處理
使用 FreeRTOS
外設驅動程序
FatFS(文件系統)
開發人員會想要下載固件應用包,并熟悉所選開發板支持的示例。不過,開發人員需要特別注意兩個文件夾。第一個是包含兩個示例以顯示如何使用 OpenAMP 的應用文件夾(圖 5)。這些示例顯示如何在微控制器內核之間來回傳輸數據,即一個內核向另一個內核發送數據,后者再將數據回傳。兩個示例以不同的方式執行此操作。一個是不帶操作系統的 Bare metal,而另一個使用 FreeRTOS。
圖 5:STM32Cube_FW_H7 提供多個示例,演示了如何開始著手使用 OpenAMP 的多核處理。(圖片來源:Beningo Embedded Group)
第二組示例分別演示了如何配置帶和不帶 RTOS 的內核(圖 6)。一個示例顯示如何在各內核上運行 FreeRTOS;而另一個示例顯示如何在一個內核上使用 RTOS,并在第二個內核上運行 Bare metal。固件包中還有幾個其他示例可用于演示其他功能。不過,上述示例是入門學習的不錯選擇。
圖 6:STM32Cube_FW_H7 提供多個示例,演示了如何配置使用多核處理器的操作系統。(圖片來源:Beningo Embedded Group)
加載示例項目后,開發人員會看到類似于圖 7 所示的項目布局。如圖所示,項目按內核劃分了應用代碼。另外,還可以設置構件配置,使開發人員一次只能使用一個內核,請參見圖 7 中的灰顯文件。
圖 7:OpenAMP Ping-Pong 項目示例向開發人員演示了如何在兩個 CPU 內核之間創建通信通道。(圖片來源:Beningo Embedded Group)
本文中不包含示例代碼的完整描述,但讀者可以查閱所有示例項目的相關 readme.txt 文件,以獲得示例代碼如何工作的詳細描述,然后查看源代碼以了解如何實際執行處理器間通信 (IPC)。
著手使用多核微控制器并不難,但要求開發人員開始以略微不同的方式考慮自己的應用設計。以下是著手使用多核微控制器的一些“技巧與訣竅”:
仔細評估應用,確定哪種應用域劃分最合理。雖然可以在單個處理器上混用多個域,但不小心就可能會影響性能。
花些時間探索 OpenAMP 框架的內置功能以及您的應用如何充分利用這些功能。
下載 STM32H7 處理器的應用示例,并運行適用于所選開發板的多核應用示例。H747 包括兩個示例:一個用于 FreeRTOS,另一個用于 OpenAMP。
進行應用調試時,切勿忘記有兩個內核正在運行!確保在調試環境中選擇正確的線程,以檢查調用歷史。
充分利用硬件信號量等內部硬件資源來同步各內核的應用執行。
首次使用多核微控制器時,只需從受到有力支持的開發板開始著手,然后遵循這些“技巧與訣竅”,開發人員即可節省不少時間,省去很多麻煩。
對于物聯網邊緣系統的開發人員而言,多核微控制器能夠更好地滿足應用要求,實現功能、性能和功耗之間的平衡。此類微控制器允許開發人員將應用按域劃分,例如各種功能/實時處理或實時/安全處理。將應用分成不同的域后,開發人員即可在不需要時禁用某個內核以節能,或適時啟用以提高應用性能。
如上所述,市面上有許多不同的開發板可用于開始探索多核微控制器應用設計,并能完全控制性能和能耗。
下一篇: PLC、DCS、FCS三大控
上一篇: 物聯網安全基礎知識