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