雙核實時系統(tǒng)的架構(gòu)方法
1.引言
本文引用地址:http://m.butianyuan.cn/article/201610/307344.htm嵌入式技術(shù)的不斷成熟以及業(yè)界對工業(yè)設(shè)備小型化、個性化需求的不斷提高促使越來越多的工業(yè)設(shè)備控制系統(tǒng)采用嵌入式系統(tǒng)設(shè)計。工業(yè)設(shè)備控制最大的特點是對系統(tǒng)實時性要求較高。而通常情況下,控制過程中常常同時存在多種不同實時性要求的任務,不同任務對處理器時間的占用比例也有較大差異,因此如何有效的滿足并提高系統(tǒng)實時性能成為研究的重點。
傳統(tǒng)的控制系統(tǒng)單核處理器架構(gòu)是主流,除了通過提升處理器主頻來提高系統(tǒng)的響應速度,還通過使用搶占式實時操作系統(tǒng),引入多線程,改進系統(tǒng)任務調(diào)度策略等軟件方法來進一步提高系統(tǒng)性能。但隨著應用不斷復雜,控制精度要求不斷提高,有限的系統(tǒng)資源成為控制系統(tǒng)性能提升的最大瓶頸。
針對單CPU架構(gòu)的局限性,多處理器系統(tǒng)的研究應用逐漸增多,文獻[1]采用FPGA 和多個DSP 互連的并行處理結(jié)構(gòu),實現(xiàn)了一個高速數(shù)據(jù)傳輸帶寬、低延遲且計算性能強大的實時圖像處理系統(tǒng)。文獻[2]提出了一種基于ARM的雙CPU協(xié)調(diào)運動控制系統(tǒng)的設(shè)計方法。文獻[3]采用ARM+DSP的主從式雙CPU結(jié)構(gòu)設(shè)計實現(xiàn)了嵌入式運動控制器。文獻[4]分析比較了幾種典型的嵌入式雙核通信接口,并介紹了典型接口的設(shè)計要點。文獻[5]在單核嵌入式操作系統(tǒng)構(gòu)架的基礎(chǔ)上,提出一種基于對稱通信的雙核處理器嵌入式操作系統(tǒng)構(gòu)架,解決了異構(gòu)雙核處理器中的通信效率和共享內(nèi)存的利用問題。隨著雙核架構(gòu)應用的不斷推廣,同時雙核微處理器技術(shù)逐漸成熟,如何設(shè)計穩(wěn)定高效的系統(tǒng)軟件架構(gòu)成為當前研究的重點。本文以F28M35雙核系統(tǒng)為例,介紹了一種以IPC通信機制為核心,基于共享內(nèi)存的雙核軟件架構(gòu)方法。
2.雙核間通信的系統(tǒng)結(jié)構(gòu)
完成雙核間的數(shù)據(jù)通信,除了數(shù)據(jù)傳輸介質(zhì)——共享內(nèi)存外,還需要系統(tǒng)提供一套雙核間交互的信號機制。通常該信號機制中同時包括中斷信號和非中斷信號。利用該信號機制,結(jié)合共享內(nèi)存,可設(shè)計出各種靈活的通信方式。
從通信信號的角度,通信方式可分為輪詢方式和中斷方式。由于輪詢方式使內(nèi)核處于忙等的狀態(tài),因此應盡量避免使用,該方式多用于雙核之間事件需嚴格按照一定的順序執(zhí)行的情況,例如系統(tǒng)啟動時雙核之間的初始化交互。
從攜帶數(shù)據(jù)量的角度講,雙核之間可僅僅利用信號機制完成通信,雙方協(xié)定默認的操作;另外,也是大部分時候的通信方式,雙方通過共享內(nèi)存交換數(shù)據(jù),該方式在設(shè)計時,將共享內(nèi)存劃分為兩種屬性的內(nèi)存區(qū),分別用于兩個方向的數(shù)據(jù)傳遞。一種內(nèi)存允許一個內(nèi)核進行讀寫操作,而允許另外一個內(nèi)核進行只讀操作,另一種則方向相反。例如,A內(nèi)核欲向B內(nèi)核發(fā)送數(shù)據(jù)時,先將數(shù)據(jù)寫入A核空間內(nèi)的共享內(nèi)存區(qū),然后向B核發(fā)送信號,B核收到信號后從該方向的共享內(nèi)存區(qū)將數(shù)據(jù)取出,并回復A核,完成一次數(shù)據(jù)通信。
通信協(xié)議和通信接口封裝是雙核通信應該重點考慮的環(huán)節(jié)。簡單的數(shù)據(jù)通信,雙方可以直接發(fā)送數(shù)據(jù),默認雙方已經(jīng)知道數(shù)據(jù)的含義以及數(shù)據(jù)應該放置的內(nèi)存地址。但是隨著系統(tǒng)逐漸復雜,代碼量逐漸增加,無協(xié)議的數(shù)據(jù)通信給編程和理解都帶來很大問題,降低系統(tǒng)的可擴展性能。在設(shè)計中雙核通信可以采用和系統(tǒng)外設(shè)相同的通信協(xié)議,例如串口通信使用的Modbus協(xié)議,這樣可以重復利用協(xié)議解析函數(shù),同時也可提高可移植性。另外可根據(jù)實際需要自行定義適用的通信協(xié)議,或者將通用的通信協(xié)議做適當?shù)男薷囊愿m應共享內(nèi)存大數(shù)據(jù)量的數(shù)據(jù)通信。關(guān)于通信接口的軟件封裝通常定義數(shù)據(jù)發(fā)送函數(shù)、數(shù)據(jù)接收函數(shù)、協(xié)議解析函數(shù)等,原則是接口應盡量精簡,最大程度降低雙核間的耦合度。
3.雙核間的數(shù)據(jù)共享機制
雙核間實現(xiàn)數(shù)據(jù)共享主要有兩種策略,一種是將共享數(shù)據(jù)直接存儲于共享內(nèi)存中,雙核均可對其進行操作。該方法關(guān)鍵要解決對共享內(nèi)存互斥訪問的問題。關(guān)于雙口RAM互斥訪問的方法大致有兩種:
1)硬件判優(yōu),系統(tǒng)通過存儲器沖突仲裁單元向兩個內(nèi)核提供共享內(nèi)存訪問沖突標志,當雙核同時對相同地址的RAM進行存取時,仲裁單元促發(fā)相應忙信號,設(shè)計中可利用該信號插入等待時間,避免訪問沖突。
2)信號量機制,系統(tǒng)提供獨立于雙核的信號量管理單元。該方式又叫令牌判優(yōu)方式,每個令牌可對應指定地址,指定長度的共享內(nèi)存段。雙核按照協(xié)定的規(guī)則交替獲得令牌,進而操作相應的共享內(nèi)存段。當雙核同時申請同一個令牌時,信號量管理單元裁定誰先占用。設(shè)計中可通過在訪問內(nèi)存前先申請對應的令牌實現(xiàn)雙核對共享內(nèi)存區(qū)的互斥訪問。
另一種實現(xiàn)數(shù)據(jù)共享的策略是在雙核各自本地定義相同的數(shù)據(jù)作為共享數(shù)據(jù),按照寫后及時更新的原則,利用中斷方式通過雙核間的數(shù)據(jù)通信實現(xiàn)數(shù)據(jù)同步。這種方法適用于共享數(shù)據(jù)滿足一定條件時,即該共享數(shù)據(jù)對于其中一個內(nèi)核是只讀的,否則,由于雙核獨立運行,運行進度幾乎沒有制約,若出現(xiàn)雙核均改寫共享數(shù)據(jù)的話,無法保證數(shù)據(jù)的有效性。
4. 雙核任務分配
任務分配的原則在于充分利用雙核資源,最大限度縮小系統(tǒng)響應時間。例如在運動控制領(lǐng)域利用ARM+DSP雙核處理器構(gòu)架控制系統(tǒng),在ARM核中實現(xiàn)系統(tǒng)邏輯控制,在DSP核中實現(xiàn)運動控制輸出,ARM核控制運動過程,通過命令的形式驅(qū)動DSP核實現(xiàn)具體的運動動作。另外在注塑機控制實例中,利用ARM核實現(xiàn)注塑過程控制,而在DSP端完成注塑機位置和溫度的智能控制算法,實現(xiàn)系統(tǒng)優(yōu)化處理。
5. F28M35雙核處理器的軟件架構(gòu)設(shè)計
5.1 F28M35雙核存儲結(jié)構(gòu)
TI的全新Concerto-F28M35微控制器采用了一種雙子系統(tǒng)架構(gòu),其中包含一個TI C28x內(nèi)核與一個ARM Cortex-M3內(nèi)核。這種混合架構(gòu)將業(yè)內(nèi)用于控制和主機通信功能的最佳技術(shù)融入到單個控制器中,而該控制器可提供維持實時控制環(huán)路所需的性能、效率及可靠性,并具備低延遲通信所需的快速響應能力。
在F28M35中包含兩類共享內(nèi)存,一類是MTOC-message RAM(MTOCMSGRAM)和CTOM-message RAM(CTOMMSGRAM),大小都為2K,其特點是一個內(nèi)核對其有讀寫的權(quán)限,而另外一個內(nèi)核僅有只讀權(quán)限。例如,M3內(nèi)核可以讀寫MTOCMSGRAM內(nèi)存,而C28內(nèi)核只能對MTOCMSGRAM進行讀操作。另外一類共享內(nèi)存包含8個內(nèi)存塊(S0-S7),大小均為8K。該類內(nèi)存可以被劃分到任意內(nèi)核,系統(tǒng)通過控制寄存器MSxMSEL設(shè)置該類內(nèi)存的屬性,每塊內(nèi)存對應該寄存器中的一位,通過設(shè)置相應位來設(shè)置相應內(nèi)存塊的歸屬權(quán)。例如,若S0被設(shè)置為歸屬M3內(nèi)核,則M3內(nèi)核可讀寫該內(nèi)存,而C28內(nèi)核只能對其進行讀操作。同時需要注意的是,控制寄存器MSxMSEL只能在M3內(nèi)核中進行設(shè)置5.2 IPC機制
在雙核技術(shù)中,雙方之間的通信是核心。在F28M35x體系結(jié)構(gòu)中,基于IPC信號和IPC中斷實現(xiàn)IPC通信(Inter ProcessorCommunications)機制。
該處理器在每個方向(MTOC/CTOM)上定義了32個IPC信號,前4個信號促發(fā)時可以附加中斷功能。處理器通過一套寄存器組實現(xiàn)IPC信號的操作。每個內(nèi)核通過自己存儲空間內(nèi)的一套寄存器實現(xiàn)IPC功能,每個寄存器32位,每一位分別代表一個IPC信號,第0-3位同時可設(shè)置為IPC中斷。以C28內(nèi)核為例,寄存器組分別包括:
1)CTOMIPCSET,用于向M3核發(fā)送IPC信號或者IPC中斷。該寄存器置位時,同時將CTOMIPCFLG和CTOMIPCSTS寄存器相應位置為1。
2)CTOMIPCCLR,用于清除C28到M3方向上的IPC信號或IPC中斷標志。該寄存器置位時,同時將CTOMIPCFLG和CTOMIPCSTS寄存器相應位清零。
3)CTOMIPCFLG,該寄存器為只讀寄存器,用于顯示C28核到M3核方向上當前IPC信號的狀態(tài)。該寄存器和M3存儲空間中的CTOMIPCSTS寄存器在物理上是同一個寄存器。
4)MTOCIPCSTS,作用和CTOMIPCFLG類似,同樣是只讀的,只是表征方向相反,用于顯示M3核到C28核當前IPC信號的狀態(tài)。同樣,它和M3存儲空間中的MTOCIPCFLG寄存器在物理上是同一個寄存器。
5)MTOCIPCACK,該寄存器置位時,同時將MTOCIPCFLG和MTOCIPCSTS寄存器相應位清零。當C28內(nèi)核收到M3發(fā)送來的IPC信號或者IPC中斷時,利用該寄存器發(fā)送確認信息,完成二者的握手。
形象的說,雙核之間維護了兩條相互獨立的全雙工通道,每條通道包含了一個方向的信號發(fā)送(SET)和反向的信號確認(ACK)。同時雙方可以隨時讀取兩個方向下的當前IPC狀態(tài)(FLG/STS)。最終實現(xiàn)雙核間的IPC交互機制。
此外,F(xiàn)28M35還提供了一套IPC消息寄存器,分別是MTOC Message Registers和CTOM Message Registers,分別在每個內(nèi)核空間對應4個寄存器。結(jié)合IPC信號和IPC中斷實現(xiàn)雙核之間的便捷通信。
5.3 雙核芯片的軟件系統(tǒng)
以系統(tǒng)控制塊數(shù)據(jù)結(jié)構(gòu)為核心的雙核系統(tǒng)的架構(gòu)方法。即設(shè)計了一種數(shù)據(jù)結(jié)構(gòu),稱作系統(tǒng)控制塊(System Control Block,SCB)。將系統(tǒng)所有相關(guān)控制對象均映射到系統(tǒng)控制塊中,每個任務對系統(tǒng)的操作均可轉(zhuǎn)化為對SCB的讀寫操作,這樣系統(tǒng)可以很方便的實現(xiàn)模塊化,定義SCB操作管理模塊即可實現(xiàn)多任務對系統(tǒng)操作的統(tǒng)一管理。關(guān)于SCB與實際控制對象的物理關(guān)聯(lián)可以通過對應的驅(qū)動模塊實現(xiàn)。
以SCB為核心的系統(tǒng)簡易邏輯架構(gòu),SCB不僅體現(xiàn)控制器與外部控制對象之間關(guān)系,例如,映射人機界面操作、PC機監(jiān)控過程以及各種輸入輸出信號等;同時,SCB還包含了雙核之間實現(xiàn)系統(tǒng)控制的內(nèi)部數(shù)據(jù)映射。SCB的基本結(jié)構(gòu)如圖4所示,主要包括A核外設(shè)映射區(qū)、B核外設(shè)映射區(qū)、系統(tǒng)參數(shù)區(qū)、系統(tǒng)狀態(tài)區(qū)等。
SCB是整個系統(tǒng)的體現(xiàn),從處理器內(nèi)部分析,雙核通過維護同一個SCB實現(xiàn)對系統(tǒng)的協(xié)調(diào)控制。利用雙核之間的通信,當其中一個內(nèi)核的SCB被寫操作時,立即向另一內(nèi)核發(fā)送更新命令,實時完成雙核間的數(shù)據(jù)同步。
利用上小結(jié)中介紹的IPC信號機制,以及多種形式的存儲空間,可以靈活設(shè)計出多種雙核通信方式。如下所述:
1)僅利用IPC信號或者IPC中斷方式,多用于完成拓撲序事件執(zhí)行,或者系統(tǒng)啟動時初始化握手交互。
2)IPC信號/中斷+IPC消息寄存器組方式,用于小數(shù)據(jù)量的通信。命令寄存器中的命令完全由軟件定義,用戶可設(shè)計不同的命令來完成不同的數(shù)據(jù)操作。多用于對字節(jié)型內(nèi)存的讀寫操作。
3)IPC信號/中斷+MSGRAM/S0-S7方式,S0-S7可分別分配給任意內(nèi)核,該方式可以實現(xiàn)大數(shù)據(jù)量的核間通信,同時利用通用或者自定義的通信協(xié)議,可提高系統(tǒng)的擴展能力及可移植性。
6.小結(jié)
是基于F28M35雙核處理器設(shè)計實現(xiàn)的注塑機主控制器,采用本文介紹的方法實現(xiàn)了主從式軟件架構(gòu),ARM核作為主核完成與上位機的通信任務和系統(tǒng)邏輯過程的控制任務,利用DSP高速的計算能力作為從核完成注塑機位置控制和溫度控制智能算法的執(zhí)行任務,雙核通過SCB的映射實現(xiàn)相互的協(xié)調(diào)。新的控制器替代了原有的以600MHZ主頻處理器為核心的控制系統(tǒng),較好了完成了注塑機的控制任務。
在以后的工作中,從核智能控制算法仍有優(yōu)化的空間,系統(tǒng)性能仍可進一步改善。另外,除了主從模式,將研究雙主模式,實現(xiàn)更靈活有效的系統(tǒng)架構(gòu),并完成雙端獨立的在線監(jiān)控和程序下載等功能,進一步降低軟件開發(fā)難度。
評論