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