《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 采用非對稱雙核 MCU 提高系統性能 –基于 C2000 Concerto 系列

采用非對稱雙核 MCU 提高系統性能 –基于 C2000 Concerto 系列

2013-12-30
作者:Knight Dong/Patrick Cheng
來源:TI MCU FAE

摘要

    本文系統地介紹了C2000 Concerto 系列非對稱雙核MCU 的基礎知識和重要特點。通過對比基于兩個分立MCU 和一個雙核MCU 的方案之間的差異,強調了異構雙核MCU 方案的眾多優點。以TMS320F28M35H52C 為例介紹了C2000 Concerto 系列的C28x 和Cortex-M3 兩個子系統的性能、外設和軟件平臺,重點闡述了雙核通訊IPC 的多種高效的通訊機制和controlSUITE 軟件平臺。最后,通過兩個設計案例來討論如何合理地為C28x 和Cortex-M3 兩個內核進行任務分工,從而達到提高系統性能的目的。

1、背景介紹

    隨著各個行業朝著智能化方向的發展,嵌入式產品對能耗和效率的要求越來越苛刻。特別是在智能電網、工業和醫療等領域,一個產品的核心MCU 處理器面臨多重挑戰。比如,一個自動化的馬達系統或者分布式工業系統,一方面需要更多的數字信號處理能力來更精確地控制馬達,另一方面也需要更多和更高級的網絡接口(CAN,Ethernet 或者Wireless 等)來實現實時的分布式監控或控制功能。再比如圖1,一個太陽能逆變系統,一方面需要DSP 引擎來實現DC/AC 或者DC/DC 的算法,另一方面也需要將多個逆變器通過Wireless 或者以太網Ethernet 組成網絡,從而實現智能診斷和監控。

    面對這些需求,有兩種傳統的方案可以解決。一種方案是采用兩顆單獨的MCU/DSP,其中一顆MCU或者DSP 用于實現數字信號處理或者控制算法,另外一顆MCU 實現網絡協議棧或者圖形顯示界面等。這類方案的存在諸多缺點,首先兩顆MCU 增加了PCB 的面積,而且雙MCU 之間的通訊的可靠性和數據吞吐率受到限制,另外,功耗也將顯著增加,程序開發者甚至需要維護多個軟硬件開發環境。另外一種方案是采用更高主頻和更多片內資源的單核MCU/DSP,分時地完成數據處理和輔助通信或顯示功能,這種方案顯著增加了系統成本和功耗,最致命的是,當客戶的產品需要增加新的功能的時候,工程師需要重新計算MCU 內核的資源和不同任務所需要的運行時間,需要更多的測試時間,因此不利于擴展和產品維護。

   面對種種不足,異構雙核架構應運而生,可以很好解決上述問題。事實上,非對稱雙核架構MCU 可以將不同的系統任務分配于不同的MCU 內核,分工精細,并且可以最佳地平衡性能、功耗和成本。兩個MCU 內核間的通信可以通過不同的方式來實現,比如分享內存區和消息區,非常簡單和易于實現。在下面的章節,本文將以TI 最新的Concerto 系列產品TMS320F28M35H52C 為例,詳細闡述非對稱異構雙核MCU 的優勢,及其為系統帶來的性能提升。

2C2000 Concerto 雙核MCU 的特點

    C2000 Concerto 系列MCU 是TI 推出的創新性的異構雙核產品。Concerto 混合架構通過將業界最好的實時控制功能和通訊功能集成在一個芯片內,提供高性能、高效率和可靠性,從而實現實時控制環路和低延時的快速通訊響應[1]。以下從內核、存儲器架構、通訊外設等方面闡述其特點。Concerto 系列TMS320F28M35H52C 功能框圖如下圖2 所示。

    首先是高性能的內核。Concerto 系列MCU 包含Cortex-M3 和C28x 兩個內核。Cortex-M3 內核是Concerto 的主系統Master 子系統內核,主頻最高可運行于125 MHz。Cortex-M3 內核是32 位的ARM 核,超高的性價比,已經被業界廣泛使用,其性能和穩定性也已被用戶所廣泛接受,非常適用于通訊和事件控制。C28x 是新一代的32 位DSP 內核,是TI 大多數現有的C2000 產品的內核,最高可運行于150 MHz,Concerto 中的C28x 帶浮點運算單元(Floating-Point Unit),VCU 協處理器等,性能超強,非常適用于大吞吐量的數據處理。C28x 作為Control 子系統,宏觀上受控于Cortex-M3 Master 子系統。

   其次是優化的存儲器架構。如圖2 所示,TMS320F28M35H52C 的C28x 可支配512KB 帶ECC 校驗的Flash 存儲器,64KB ROM,36KB 帶ECC 校驗的RAM;Cortex-M3 可支配512KB 帶ECC 校驗的Flash 存儲器,64KB ROM,32KB 帶ECC 校驗的RAM [3]。在兩個內核之間,是共享的外設和存儲區。總共64K 字節的共享RAM,4K 的消息RAM。

    再次是外設。如圖2 所示,TMS320F28M35H52C 的C28x 內核可支配DMA、高速ADC(3MSPS)、多路高精度的PWM(24 路PWM和16 路高精度HRPWM)、eCAP、eQEP 等為閉環控制所優化的控制外設;Cortex-M3 內核可支配多個串行接口、以太網、CAN 等工業通訊外設。同時,兩個內核還可共享ADC 等外設,增強整個系統的靈活性。

    最后是軟件架構。如圖3 所示,controlSUITE 是一個集成所有C2000 MCU 的開發資源和軟件包和開發平臺,它為TMS320F28M35H52C 的開發者提供了外設例程、DSP 庫、文檔、開發板資料。ControlSUITE 還提供免費的全功能實時操作系統TI-RTOS 平臺,如圖4 所示,TI-RTOS 是基于SYS/BIOS 實時內核,集成了穩定的中間件,例如TCP/IP 協議棧、USB 協議棧、FAT 文件系統、IPC多核通訊組件等。

3IPC 內核間通信

    Cortex-M3 和C28x 內核之間的通信主要完成兩大功能,一是數據通信,二是傳遞狀態和控制信息。IPC(內核間通訊)的數據通信需要較大的RAM 來支持,而傳遞狀態和控制等信息只需要一系列狀態標志位即可。此外,Cortex-M3 側的UART4 與C28x 側的SCIA;以及Cortex-M3 側的SSI3 與C28x側的SPIA 在Concerto 內部實現互聯,不需要在芯片外部硬件連接,而是否使能這類功能則有CortexM3 系統配置。

3.1 Message RAM 內存區

    TMS320F28M35H52C 使用Message RAM 實現IPC 的數據通信。如圖5 所示,2K 字節的MTOC Message RAM 用于從Master (Cortex-M3)子系統向Control(C28x)子系統傳遞消息;2K 字節的CTOM Message RAM 用于從Control 子系統向Master 子系統傳遞消息。由于兩個子系統都配有DMA外設,因此,DMA 也可以讀寫Message RAM,從而提高系統效率。Message RAM 區通過RAM 內存的讀寫權限保證了Message 的互斥訪問,例如,C28x CPU 與DMA 可以讀寫訪問CTOM Message RAM 區,而Cortex-M3 CPU 和uDMA 只能讀訪問CTOM Message RAM。同樣,兩個內核對于MTOC Message RAM 區的讀寫訪問權限則正好相反。

Message RAM 僅僅作為IPC 的數據緩存,IPC 還需借助于特定的控制邏輯電路來完成。如圖6 所示,Master 子系統和Control 子系統都是通過5 個寄存器來實現IPC 的邏輯流程控制:IPCACK、IPCSTS、IPCFLG、IPCCLR、IPCSET。這5 個寄存器都是32 位,每一個bit 對應于IPC 的一個通道,因此最多可實現32 個通道的握手通信。Bit0 到Bit3 總共4 個通道可以觸發消息接收方的IPC 中斷,Bit4 到Bit31 共28 個通道則需要消息接收方的軟件查詢來獲取Message RAM 中是否收到數據。如果兩個內核之間僅僅傳遞狀態和控制信息(例如RTOS 中的Semaphore),僅通過以上寄存器便可以實現,而無需Message RAM 的參與。

以下通過舉例Master 子系統往Control 子系統發送一幀數據,來簡單介紹IPC 模塊的操作流程。

1. Cortex-M3 先在MTOC Message RAM 中寫入一幀數據;

2. Cortex-M3 置位MTOCIPCSET(CM3 映射存儲器區)的Bit9,如圖6 所示,此時MTOCIPCSTS(C28x 映射存儲器區)的Bit9 也將置位;

3. C28x 輪詢MTOCIPCSTS 的Bit9,查詢到Bit9 已置位;(如果之前的操作是Bit0 到Bit3 其中之一,則將觸發C28x 產生一個IPC 中斷)

4. C28x 讀MTOC Message RAM 中的數據,此時,Cortex-M3 成功將一幀數據發送至C28x。

3.2 Shared RAM 內存區

    大部分情況下,2K 字節的IPC Message RAM 區能夠滿足C28x 和M3 子系統之間的數據通信,配合DMA,通信效率也可以進一步提高。如果用戶希望一次性在兩個子系統傳遞更大塊的數據,另一種方法是通過Shared RAM 內存。

    TMS320F28M35H52C 有一個64K 字節大小的Shared RAM 區,總共8 塊S0-S7,每塊8K 字節大小,如圖7 所示。Cortex-M3 可以設置讓任何一塊Shared RAM 區由C28x 或M3 主控,比如,映射S0 至C28x 側以后,C28x CPU 和DMA 可以讀寫S0,而M3 和uDMA 將只能讀S0,不能寫入和預取。

    假如Cortex-M3 需要一次性發送6K 字節的數據到C28x 側,它可以先將Shared RAM 區S0 映射到本地存儲器空間,接著通過IPC 發送一個標志位給C28x 來通知其可以將數據取走。

3.3 IPC 的軟件驅動

controlSUITE 軟件開發包中提供2 種IPC 的軟件驅動庫,IPC Driver 和IPC_Lite Driver。IPC_Lite Driver 僅使用IPC 寄存器來實現通信,不需要額外的RAM,但是用戶只能支持一個IPC 中斷服務ISR,且不支持以隊列形式來處理IPC 請求。IPC_Lite Driver 使用方式如下:

1,主動發起數據請求的內核會首先調用IPC_Lite Driver 提供的名函數。在這個例子匯總,M3 是發送數據的內核并執行“IPCLiteMtoCDataRead”函數。

• IPC_FLAG2 是C28 中斷標志,指示C28 內核一個消息到來。

• IPC_FLAG17 是響應標志,C28 用其指示M3 核一個命令已經被處理。

• 需要讀取數據的C28 的地址也被作為一個參數傳遞給C28 內核。

• 這個函數在while 循環中被調用的原因是,它可能返回STATUS_FAIL 并且不會發送信息給C28 直至MtoC IPC 中斷2 和標志17 可用, 之后,該函數返回STATUS_PASS.

2,被動接收數據請求的內核會在ISR 中解析其IPCCOM寄存器的命令。這個例子中,C28 MtoCIPCINT2 ISR 知道標志置位,解析MTOCIPCCOM寄存器的命令,識別出是讀數據命令。

3,被動接收數據請求的內核會調用與主動發起數據請求的內核相同的函數名。這個例子中,C28 執行IPCLiteMtoCDataRead,IPC_FLAG2 作為中斷標志參數,IPC_FLAG17 作為狀態標志參數。

4,如果接收到命令有效,IPC_Lite 的驅動函數會處理讀命令并確認(acknowledges)狀態和中斷標志。如果接收到的命令無效,則只有中斷標志被確認(acknowledged)用來釋放中斷給后續的命令,而狀態標志仍然置位。

IPC Driver 通過在Message RAM 中建立環形緩沖區,使得多個IPC 通信命令可以以隊列的形式被緩沖,然后逐個處理,并且可以同時支持多個IPC 中斷服務程序ISR,當然,IPC Driver 需要更多的RAM 來支持。和IPC-Lite 不同,為了使用IPC 驅動,需要在M3 和C28 的項目中增加一些設置。

第一步是在M3 和C28 的鏈接定位文件(.cmd)中添加IPC 循環緩沖區和指針段到CTOM和MTOC message RAM。如下所示:

第二步,應用程序源碼中必須定義并且初始化至少一個volatile global tIpcController 變量(為C28 –M3 IPC 中斷使用),如下所示:

1. 主動發起數據請求的內核會首先調用IPC Driver 提供的一個命令函數。這個例子中,M3 是發起數據請求的內核,執行“IPCMtoCSetBits”函數。

• g_sIpcController1 是tIpcController 類型的變量,控制M3 和C28 IPC 中斷通道之間的通信。

• SETMASK_16BIT 是16-bit 掩碼,指示應該被置位的位域。IPC_LENGTH_16_BITS 指示命令操作的數據對象是16-bits。

• 函數被配置成允許阻塞“ENABLE BLOCKING”, 意味著函數會一直等待直到M3 PutBuffer 有空的緩沖區。如果函數被配置成不許阻塞“DISABLE BLOCKING”, 一旦”Put”緩沖區滿,它會立即返回STATUS_FAIL 并且不會發送消息到C28。如果”Put”緩沖區有空余,函數會返回STATUS_PASS,

消息被成功發送到C28.

2. 被動接受數據請求的內核會連續調用IpcGet 函數來讀取sMessage 結構體里的消息,只要有消息在”Get”緩沖區。在ISR 中IpcGet 函數被調用,C28 側的tIpcController 變量被用來綁定兩個相同的M3 和C28 的IPC 中斷通道(和M3 側用來發送命令的tIpcController 相同)。

3. 即使被動接收數據的內核沒有確認(acknowledged)IPC 中斷標志,主動請求數據的內核仍然可以連續發送消息,因為tIpcController 變量會把消息排隊放到”Put”緩沖區(與被動接收數據請求的內核的”Get”緩沖區相同)。被動接收數據請求的內核的ISR 會連續獲取并處理消息,直至”Get”緩沖區為空。

 

4Cortex M3 C28x 核的任務分工

Cortex-M3 子系統的優勢在于處理事務和管理通訊外設的能力,C28x 內核子系統在實時控制和數據處理方面性能優越。因此,在一個系統中,合理地分配兩個子系統的所處理的事務,優化資源的配置是至關重要的。基于Concerto 的系統,一方面應當最大化地使用C28x 的DSP 和實時控制優勢,發揮ADC、PWM、C28x 組成的閉環系統的優勢;另一方面應將人機界面、通訊協議棧、文件系統等盡可能運行在Cortex-M3 子系統一側。下面通過兩個應用案例來討論如何通過合理任務分工來提高系統效率。

4.1 光伏逆變器網絡節點

光伏逆變器的主要功能是把光伏面板輸出的DC 直流電逆變為110V/220V 的AC 交流電,最終接入電網或者離網輸電至用電設備。在一個大功率的光伏發電網絡拓撲中,往往有許多個光伏逆變器,這些逆變器需要被監測,控制中心需要實時觀測各個光伏逆變器的工作狀態。因此,光伏逆變器網絡節點的功能主要包括DC/AC 逆變器和網絡連接。如圖9 所示,C28x 子系統(運行于100MHz)完成MPPT 和DC/AC 逆變算法。網絡連接可以有多種方式,常用的方式包括Ethernet 以太網、RS485 或CAN 等,TMS320F28M35H52C 的Cortex-M3 子系統(100 MHz)帶Ethernet、RS485 和CAN 等接口,支持多種有線和無線連接功能。

圖8 Solar HV DC-AC Kit

對于C28x 子系統,采用狀態機的設計思路來區別不同的系統狀態。不同的狀態代表著不同的運行模式,其它的任務能夠根據特定的運行模式采取相應的行動。例如,可以采用下面5 種不同的運行模式。

• Power On Mode: 系統上電后進入Power On Mode,系統上電后,F28M35H52C1 中的Cortex-M3內核boot 程序首先啟動,此時C28x 控制子系統和模擬子系統處于復位狀態,需要M3 主子系統將其從復位狀態解除。M3 主子系統設定M3 和C28x 內核的時鐘頻率,由于M3 和C28x 的主頻之比必須

為整數比,因此M3 和C28x 的主頻設定只能為60/60MHz、75/150MHz、100/100MHz。在M3 和C28x 的主頻設定完成之后,需要由M3 主子系統對整個芯片的外設資源以及GPIO 進行配置,來決定哪些GPIO 可以由C28x 控制子系統進行配置。本系統中M3 和C28x 主頻設定為75/150MHz。當所有的初始化操作完成后,系統自動轉入到Standby Mode。

• Standby Mode:所有的PWM 和繼電器被關閉。系統等待啟動命令,也檢測是否發生錯誤。

• Soft Start Mode:  接收到啟動命令,系統進入軟啟動模式,PWM 和繼電器開啟。如果啟動成功而且沒有錯誤發生,系統自動進入正常逆變模式。

• Normal Inverter Mode: 該模式下系統輸出功率,如果沒有錯誤發生也沒有收到關閉命令,系統會一直處于這個模式。

• Fault Mode: 如果發生錯誤,例如母線過壓,系統立即進入Fault  Mode。所有PWM 輸出被封鎖,輸出繼電器被斷開。Fault 狀態可以被按鍵或者GUI清除。清除后,系統會返回到Standby  Mode

圖9 C28x 端程序系統狀態機

 

圖10 Concerto ADC 框圖

Concerto 系列有兩個12-bit ADC 模塊,每個ADC 模塊包含兩個采樣保持電路,支持同步或者順序采樣模式,3 個帶10-bitDAC 的模擬比較器,模擬信號的輸入范圍0V~3.3V( 內部參考)或者VREFHI/VREFLO 比例關系(外部參考)。

圖11 給出了詳細的ADC 配置,TMS320F28M35H52C 的Cortex-M3 和C28x 內核都能夠訪問ADC的結果寄存器,而且2 個ADC 模塊共享4 個模擬輸入,Concerto ADC 模塊的這個特性允許對關鍵信號進行安全性驗證,提高系統的可靠性。

4.2 電力線載波通訊PLC 智能家居網關

    智能家居網關能夠將房間內的智能電器以有線或者無線的方式組成網絡,集中進行管理。如圖10 所示,TMS320F28M35H52C 的C28x(運行于150MHz)主要完成電力線載波通信(Power Line CarrierCommunication)PLC 的OFDM 物理層算法。Cortex-M3(75MHz)的運行TCP/IP 協議接入以太網,其次,可選地通過UART 接口外接GPRS 模塊或者通過EBI 外擴總線連接TFT 彩屏用戶界面。

5、總結

Concerto C2000 異構雙核MCU 將C28x DSP 內核與ARM 公司的Cortex-M3 內核融合在一起,展示出高效的數據處理、數據通訊和事件管理的強大性能。C28x 和Cortex-M3 兩個子系統分工明確,又通過IPC 模塊巧妙實現了實時高效地核間通訊。在軟件方面,controlSUITE 開發平臺提供多種組件,包括TCP/IP 協議棧、IPC 驅動、USB 協議棧、FAT 文件系統等,可幫助用戶更快地開發出創新性的產品。

6、參考

[1]. Performance Without Compromise: Implementing Real-time Control And Communications With a Dualsubsystem Microcontroller, Sangmin Chon, Brett Novak

[2]. Concerto Brochure

[3]. TMS320F28M35Hx Concerto Microcontrollers (Rev. D)

[4]. Concerto F28M35x Technical Reference Manual (Rev. B)

[5]. F28M35x Peripheral Driver Library User’s Guide

[6]. Quick Start Guide for Concerto-based Solar Explorer Development Kit

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 精选国产门事件福利在线观看 | 蜜臀影院在线观看免费 | 婷婷中文字幕 | 天天爽天天狼久久久综合 | 国产高清av在线播放 | 国产欧美日韩在线视频 | 久久精品国产亚洲 | 777第四色 | 国产网站在线免费观看 | 五月天丁香花婷婷 | 国外精品视频在线观看免费 | 久久99精品视免费看 | 成人毛片免费视频 | 激情啪啪网站 | 国产一级一片免费播放下载 | 视频一区日韩 | 婷婷色九月 | 国产高清视频在线免费观看 | 99久久国产综合精品成人影院 | 黄色工厂在线观看 | 99热成人精品免费久久 | 五月婷婷丁香网 | 亭亭五月天激情 | 九九久久国产精品免费热6 九九久久国产精品 | 国产成人精品久久亚洲高清不卡 | 国产一级αv片免费观看 | 欧美成人看片一区二区三区 | 久久精品国产亚洲婷婷 | 美女一区二区在线观看 | 成人综合网站 | 成人国产精品免费网站 | 黑人一级黄色片 | 日美欧韩一区二去三区 | 97视97视频| 黄色在线视频观看 | 精品亚洲视频在线观看 | 国产麻豆久久 | 免费人成年短视频在线观看免费网站 | 午夜精品久久久久久 | 激情影院在线播放 | 国产一区二区三区毛片 |