白亮, 嚴(yán)義,周宏偉
(1.杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,杭州 310018;2.泰瑞機(jī)器股份有限公司)
雙核微處理器實(shí)時(shí)系統(tǒng)的軟件架構(gòu)方法※*
白亮1, 嚴(yán)義1,周宏偉2
(1.杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,杭州 310018;2.泰瑞機(jī)器股份有限公司)
針對(duì)雙核微處理器在工業(yè)控制領(lǐng)域的應(yīng)用,探討了基于共享內(nèi)存的雙核處理器軟件架構(gòu)的設(shè)計(jì)方法,主要分析討論了雙核之間的通信方法、數(shù)據(jù)共享策略以及雙核任務(wù)分配方法。以F28M35雙核處理器為例,介紹了該處理器資源結(jié)構(gòu)、雙核間的通信機(jī)制以及共享內(nèi)存的使用方法。設(shè)計(jì)了一種以系統(tǒng)控制塊數(shù)據(jù)結(jié)構(gòu)為核心的軟件架構(gòu)方法,并成功運(yùn)用在注塑機(jī)控制系統(tǒng)中。
雙核微處理器;雙核通信;共享內(nèi)存;F28M35
隨著嵌入式技術(shù)的不斷成熟以及業(yè)界對(duì)工業(yè)設(shè)備小型化、個(gè)性化需求的不斷提高,越來越多的工業(yè)設(shè)備控制采用嵌入式系統(tǒng)設(shè)計(jì)。工業(yè)設(shè)備控制的最大的特點(diǎn)是對(duì)系統(tǒng)實(shí)時(shí)性要求較高,而通常情況下,控制過程中常常同時(shí)存在多種不同實(shí)時(shí)性要求的任務(wù),不同任務(wù)對(duì)處理器時(shí)間的占用比例也有較大差異,因此如何有效滿足并提高系統(tǒng)實(shí)時(shí)性能成為研究的重點(diǎn)。
傳統(tǒng)的控制系統(tǒng)中,單核處理器架構(gòu)是主流,除了通過提升處理器主頻來提高系統(tǒng)的響應(yīng)速度,還可以通過使用搶占式實(shí)時(shí)操作系統(tǒng)、引入多線程、改進(jìn)系統(tǒng)任務(wù)調(diào)度策略等軟件方法來進(jìn)一步提高系統(tǒng)性能。但隨著應(yīng)用不斷復(fù)雜,控制精度要求不斷提高,有限的系統(tǒng)資源成為系統(tǒng)性能提升的最大瓶頸。
針對(duì)單CPU架構(gòu)的局限性,多處理器系統(tǒng)的研究應(yīng)用逐漸增多。參考文獻(xiàn)[1]采用FPGA和多個(gè)DSP 互連的并行處理結(jié)構(gòu),實(shí)現(xiàn)了高速數(shù)據(jù)傳輸帶寬、低延遲且計(jì)算性能強(qiáng)大的實(shí)時(shí)圖像處理系統(tǒng)。參考文獻(xiàn)[2]提出了一種基于ARM的雙CPU協(xié)調(diào)運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì)方法。參考文獻(xiàn)[3]采用ARM+DSP的主從式雙CPU結(jié)構(gòu)設(shè)計(jì)嵌入式運(yùn)動(dòng)控制器。參考文獻(xiàn)[4]分析比較了幾種典型的嵌入式雙核通信接口,并介紹了典型接口的設(shè)計(jì)要點(diǎn)。參考文獻(xiàn)[5]在單核嵌入式操作系統(tǒng)構(gòu)架的基礎(chǔ)上,提出一種基于對(duì)稱通信的雙核處理器嵌入式操作系統(tǒng)架構(gòu),解決了異構(gòu)雙核處理器的通信效率和共享內(nèi)存的利用問題。隨著雙核架構(gòu)應(yīng)用的不斷推廣,同時(shí)雙核微處理器技術(shù)逐漸成熟,如何設(shè)計(jì)穩(wěn)定高效的雙核系統(tǒng)軟件架構(gòu)成為當(dāng)前研究的重點(diǎn)。本文以F28M35雙核系統(tǒng)為例,介紹了一種以IPC通信機(jī)制為核心,基于共享內(nèi)存的雙核軟件架構(gòu)方法。
完成雙核間的數(shù)據(jù)通信,除了共享內(nèi)存外,還需要系統(tǒng)提供一套雙核間交互的信號(hào)機(jī)制。通常該信號(hào)機(jī)制中同時(shí)包括中斷信號(hào)和非中斷信號(hào)。利用該信號(hào)機(jī)制,結(jié)合共享內(nèi)存,可設(shè)計(jì)出各種靈活的通信方式。
通信協(xié)議和通信接口封裝是雙核通信應(yīng)該重點(diǎn)考慮的環(huán)節(jié)。簡(jiǎn)單的數(shù)據(jù)通信,雙方可以直接發(fā)送數(shù)據(jù),默認(rèn)雙方已經(jīng)知道數(shù)據(jù)的含義以及數(shù)據(jù)應(yīng)該放置的內(nèi)存地址。但是隨著系統(tǒng)逐漸復(fù)雜,代碼量增加,無協(xié)議的數(shù)據(jù)通信給編程和理解都帶來很大問題,降低了系統(tǒng)的可擴(kuò)展性能。在設(shè)計(jì)中,雙核通信可以采用和系統(tǒng)外設(shè)相同的通信協(xié)議,例如串口通信使用的Modbus協(xié)議,這樣可以重復(fù)利用協(xié)議解析函數(shù),同時(shí)也可提高可移植性。另外可根據(jù)實(shí)際需要自行定義適用的通信協(xié)議,或者將通用的通信協(xié)議做適當(dāng)修改以更適應(yīng)共享內(nèi)存大數(shù)據(jù)量的數(shù)據(jù)通信。關(guān)于通信接口的軟件封裝通常定義數(shù)據(jù)發(fā)送函數(shù)、數(shù)據(jù)接收函數(shù)、協(xié)議解析函數(shù)等,原則是接口盡量精簡(jiǎn),最大程度降低雙核間的耦合度。
雙核間實(shí)現(xiàn)數(shù)據(jù)共享主要有兩種策略,一種是將共享數(shù)據(jù)直接存儲(chǔ)于共享內(nèi)存中,雙核均可對(duì)其進(jìn)行操作。該方法關(guān)鍵要解決對(duì)共享內(nèi)存互斥訪問的問題。關(guān)于雙口RAM互斥訪問的方法大致有兩種:
① 硬件判優(yōu)。系統(tǒng)通過存儲(chǔ)器沖突仲裁單元向兩個(gè)內(nèi)核提供共享內(nèi)存訪問沖突標(biāo)志,當(dāng)雙核同時(shí)對(duì)相同地址的RAM進(jìn)行存取時(shí),仲裁單元觸促發(fā)相應(yīng)忙信號(hào),設(shè)計(jì)中可利用該信號(hào)插入等待時(shí)間,避免訪問沖突。
② 信號(hào)量機(jī)制。系統(tǒng)提供獨(dú)立于雙核的信號(hào)量管理單元,該方式又叫令牌判優(yōu)方式,每個(gè)令牌可對(duì)應(yīng)指定地址,指定長度的共享內(nèi)存段。雙核按照協(xié)定的規(guī)則交替獲得令牌,進(jìn)而操作相應(yīng)的共享內(nèi)存段。當(dāng)雙核同時(shí)申請(qǐng)同一個(gè)令牌時(shí),信號(hào)量管理單元裁定誰先占用。設(shè)計(jì)中可通過在訪問內(nèi)存前先申請(qǐng)對(duì)應(yīng)的令牌,實(shí)現(xiàn)雙核對(duì)共享內(nèi)存區(qū)的互斥訪問。
另一種實(shí)現(xiàn)數(shù)據(jù)共享的策略是在雙核各自本地定義相同的數(shù)據(jù)作為共享數(shù)據(jù),按照寫后及時(shí)更新的原則,利用中斷方式通過雙核間的數(shù)據(jù)通信實(shí)現(xiàn)數(shù)據(jù)同步。這種方法適用于共享數(shù)據(jù)滿足一定條件時(shí),即該共享數(shù)據(jù)對(duì)于其中一個(gè)內(nèi)核是只讀的,否則,由于雙核獨(dú)立運(yùn)行,運(yùn)行進(jìn)度幾乎沒有制約,若出現(xiàn)雙核均改寫共享數(shù)據(jù),則無法保證數(shù)據(jù)的有效性。
任務(wù)分配的原則在于充分利用雙核資源,最大限度縮短系統(tǒng)響應(yīng)時(shí)間。例如在運(yùn)動(dòng)控制領(lǐng)域利用ARM+DSP雙核處理器架構(gòu)控制系統(tǒng),在ARM核中實(shí)現(xiàn)系統(tǒng)邏輯控制,在DSP核中實(shí)現(xiàn)運(yùn)動(dòng)控制輸出,ARM核控制運(yùn)動(dòng)過程,通過命令的形式驅(qū)動(dòng)DSP核實(shí)現(xiàn)具體的運(yùn)動(dòng)動(dòng)作。在注塑機(jī)控制實(shí)例中,利用ARM核實(shí)現(xiàn)注塑過程控制,而在DSP端完成注塑機(jī)位置和溫度的智能控制算法,實(shí)現(xiàn)系統(tǒng)優(yōu)化處理。
4.1 F28M35雙核存儲(chǔ)結(jié)構(gòu)
TI的全新Concerto-F28M35微控制器采用了一種雙子系統(tǒng)架構(gòu),其中包含一個(gè)TI C28x內(nèi)核與一個(gè)ARM Cortex-M3內(nèi)核。這種混合架構(gòu)將業(yè)內(nèi)用于控制和主機(jī)通信功能的最佳技術(shù)融入到單個(gè)控制器中,而該控制器可提供維持實(shí)時(shí)控制環(huán)路所需的性能、效率及可靠性,并具備低延遲通信所需的快速響應(yīng)能力。
如圖1所示,在F28M35中包含兩類共享內(nèi)存,一類是MTOC-message RAM(MTOCMSGRAM)和CTOM-message RAM(CTOMMSGRAM),大小都為2 KB,其特點(diǎn)是一個(gè)內(nèi)核對(duì)其有讀寫的權(quán)限,而另外一個(gè)內(nèi)核僅有只讀權(quán)限。例如,M3內(nèi)核可以讀寫MTOCMSGRAM內(nèi)存,而C28x內(nèi)核只能對(duì)MTOCMSGRAM進(jìn)行讀操作。另外一類共享內(nèi)存包含8個(gè)內(nèi)存塊(S0~S7),大小均為8 KB。該類內(nèi)存可以被劃分到任意內(nèi)核,系統(tǒng)通過控制寄存器MSxMSEL設(shè)置該類內(nèi)存的屬性,每塊內(nèi)存對(duì)應(yīng)該寄存器中的一位,通過設(shè)置相應(yīng)位來設(shè)置相應(yīng)內(nèi)存塊的歸屬權(quán)。例如,若S0被設(shè)置為歸屬M(fèi)3內(nèi)核,則M3內(nèi)核可讀寫該內(nèi)存,而C28內(nèi)核只能對(duì)其進(jìn)行讀操作。同時(shí)需要注意的是,控制寄存器MSxMSEL只能在M3內(nèi)核中進(jìn)行設(shè)置。
圖1 F28M35x系統(tǒng)結(jié)構(gòu)
4.2 IPC機(jī)制
在雙核技術(shù)中,雙方之間的通信是核心。在F28M35x體系結(jié)構(gòu)中,基于IPC信號(hào)和IPC中斷實(shí)現(xiàn)IPC通信(Inter Processor Communications)機(jī)制。其工作原理如圖2所示。
圖2 IPC機(jī)制原理
該處理器在每個(gè)方向(MTOC/CTOM)上定義了32個(gè)IPC信號(hào),前4個(gè)信號(hào)觸發(fā)時(shí)可以附加中斷功能。處理器通過一套寄存器組實(shí)現(xiàn)IPC信號(hào)的操作。如圖2所示,每個(gè)內(nèi)核通過自己存儲(chǔ)空間內(nèi)的一套寄存器實(shí)現(xiàn)IPC功能,每個(gè)寄存器32位,每一位分別代表一個(gè)IPC信號(hào),第0~3位同時(shí)可設(shè)置為IPC中斷。以C28內(nèi)核為例,寄存器組分別包括:
① CTOMIPCSET。用于向M3核發(fā)送IPC信號(hào)或者IPC中斷。該寄存器置位時(shí),同時(shí)將CTOMIPCFLG和CTOMIPCSTS寄存器相應(yīng)位置為1。
② CTOMIPCCLR。用于清除C28到M3方向上的IPC信號(hào)或IPC中斷標(biāo)志。該寄存器置位時(shí),同時(shí)將CTOMIPCFLG和CTOMIPCSTS寄存器相應(yīng)位清零。
③ CTOMIPCFLG。該寄存器為只讀寄存器,用于顯示C28核到M3核方向上當(dāng)前IPC信號(hào)的狀態(tài)。該寄存器和M3存儲(chǔ)空間中的CTOMIPCSTS寄存器在物理上是同一個(gè)寄存器。
④ MTOCIPCSTS。作用和CTOMIPCFLG類似,同樣是只讀的,只是表征方向相反,用于顯示M3核到C28核當(dāng)前IPC信號(hào)的狀態(tài)。同樣,它和M3存儲(chǔ)空間中的MTOCIPCFLG寄存器在物理上是同一個(gè)寄存器。
⑤ MTOCIPCACK。該寄存器置位時(shí),同時(shí)將MTOCIPCFLG和MTOCIPCSTS寄存器相應(yīng)位清零。當(dāng)C28內(nèi)核收到M3發(fā)送來的IPC信號(hào)或者IPC中斷時(shí),利用該寄存器發(fā)送確認(rèn)信息,完成二者的握手。
形象地說,雙核之間維護(hù)了兩條相互獨(dú)立的全雙工通道,每條通道包含了一個(gè)方向的信號(hào)發(fā)送(SET)和反向的信號(hào)確認(rèn)(ACK)。同時(shí)雙方可以隨時(shí)讀取兩個(gè)方向下的當(dāng)前IPC狀態(tài)(FLG/STS),最終實(shí)現(xiàn)雙核間的IPC交互機(jī)制。
此外,F(xiàn)28M35還提供了一套IPC消息寄存器,分別是MTOC Message Registers和CTOM Message Registers,分別在每個(gè)內(nèi)核空間對(duì)應(yīng)4個(gè)寄存器。結(jié)合IPC信號(hào)和IPC中斷實(shí)現(xiàn)雙核之間的便捷通信。以M3內(nèi)核空間為例說明,如表1所列,該寄存器組包括命令寄存器、地址寄存器、寫數(shù)據(jù)寄存器、讀數(shù)據(jù)寄存器。
表1 MTOC消息寄存器
4.3 雙核芯片的軟件系統(tǒng)
以系統(tǒng)控制塊數(shù)據(jù)結(jié)構(gòu)為核心的雙核系統(tǒng)的架構(gòu)方法。即設(shè)計(jì)了一種數(shù)據(jù)結(jié)構(gòu),稱作系統(tǒng)控制塊(System Control Block,SCB)。將系統(tǒng)所有相關(guān)控制對(duì)象均映射到系統(tǒng)控制塊中,每個(gè)任務(wù)對(duì)系統(tǒng)的操作均可轉(zhuǎn)化為對(duì)SCB的讀寫操作,這樣系統(tǒng)可以很方便地實(shí)現(xiàn)模塊化,定義SCB操作管理模塊即可實(shí)現(xiàn)多任務(wù)對(duì)系統(tǒng)操作的統(tǒng)一管理。關(guān)于SCB與實(shí)際控制對(duì)象的物理關(guān)聯(lián)可以通過對(duì)應(yīng)的驅(qū)動(dòng)模塊實(shí)現(xiàn)。
圖3中描述了以SCB為核心的系統(tǒng)簡(jiǎn)易邏輯架構(gòu),SCB不僅體現(xiàn)控制器與外部控制對(duì)象之間的關(guān)系,例如,映射人機(jī)界面操作、PC機(jī)監(jiān)控過程以及各種輸入/輸出信號(hào)等;同時(shí),SCB還包含了雙核之間實(shí)現(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ū)等。
圖3 基于SCB的系統(tǒng)架構(gòu)
圖4 SCB結(jié)構(gòu)示意圖
SCB是整個(gè)系統(tǒng)的體現(xiàn),從處理器內(nèi)部分析,雙核通過維護(hù)同一個(gè)SCB實(shí)現(xiàn)對(duì)系統(tǒng)的協(xié)調(diào)控制。利用雙核之間的通信,當(dāng)其中一個(gè)內(nèi)核的SCB被寫操作時(shí),立即向另一內(nèi)核發(fā)送更新命令,實(shí)時(shí)完成雙核間的數(shù)據(jù)同步。以A內(nèi)核I/O資源映射為例說明SCB的同步,過程如圖5所示。
圖5 SCB同步示例
利用本節(jié)介紹的IPC信號(hào)機(jī)制,以及多種形式的存儲(chǔ)空間,可以靈活設(shè)計(jì)出多種雙核通信方式。如下所述:
① 僅利用IPC信號(hào)或者IPC中斷方式,多用于完成拓?fù)湫蛄惺录?zhí)行,或者系統(tǒng)啟動(dòng)時(shí)初始化握手交互。
② IPC信號(hào)/中斷+IPC消息寄存器組方式,用于小數(shù)據(jù)量的通信。命令寄存器中的命令完全由軟件定義,用戶可設(shè)計(jì)不同的命令來完成不同的數(shù)據(jù)操作,多用于對(duì)字節(jié)型內(nèi)存的讀寫操作。
③ IPC信號(hào)/中斷+MSGRAM/S0-S7方式,S0-S7可分別分配給任意內(nèi)核,該方式可以實(shí)現(xiàn)大數(shù)據(jù)量的核間通信,同時(shí)利用通用或者自定義的通信協(xié)議,提高系統(tǒng)的擴(kuò)展能力及可移植性。
如圖6所示,基于F28M35雙核處理器設(shè)計(jì)實(shí)現(xiàn)的注塑機(jī)控制器,采用本文介紹的方法實(shí)現(xiàn)了主從式軟件架構(gòu),ARM核作為主核完成與上位機(jī)的通信任務(wù)和系統(tǒng)邏輯過程的控制任務(wù),利用DSP高速的計(jì)算能力作為從核完成注塑機(jī)位置控制和溫度控制智能算法的執(zhí)行任務(wù),雙核通過SCB的映射實(shí)現(xiàn)相互的協(xié)調(diào)。新的控制器替代了原有的以600 MHz主頻處理器為核心的控制系統(tǒng),較好地完成了注塑機(jī)的控制任務(wù)。
圖6 雙核系統(tǒng)的注塑機(jī)控制器
在以后的工作中,從核智能控制算法仍有優(yōu)化的空間,系統(tǒng)性能仍可進(jìn)一步改善。
另外,除了主從模式,可研究雙主模式,實(shí)現(xiàn)更靈活有效的系統(tǒng)架構(gòu),并完成雙端獨(dú)立的在線監(jiān)控和程序下載等功能,可進(jìn)一步降低軟件開發(fā)難度。
[1] Yan Luxin, Zhang Tianxu,Zhong Sheng. A DSP+FPGA -based parallel architecture for real-time image processing[C]. Proceedings of the 6th World Congress on Intelligent Control and Automation, Dalian, China, Jun21-23, 2006: 10022-10025.
[2] 盧冠軍,嚴(yán)義,趙健勇. 基于ARM的雙CPU協(xié)調(diào)運(yùn)動(dòng)控制系統(tǒng)[J]. 機(jī)電工程,2012(8):985-988.
[3] Zheng Yi, Pi Youguo.Design and realization of embedded motion controller based on ARM and DSP[J]. Computer Measurement & Control,2012,(20)4.
[4] 呂鴻波,劉云海,劉斌兵. 嵌入式雙核系統(tǒng)通信接口研究[J]. 電視技術(shù),2006(3):24-27.
[5] 蔣建春,曾素華,岑明. 一種基于異構(gòu)雙核處理器的嵌入式操作系統(tǒng)構(gòu)架設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用,2008(10):2686-2689.
[6] 陳芳園,張冬松,王志英. 異構(gòu)多核處理器體系結(jié)構(gòu)設(shè)計(jì)研究[J]. 計(jì)算機(jī)工程與科學(xué),2011(12):27-36.
[7] F28M35x Concerto Microcontrollers [EB/OL].2013.http://www.ti.com.
[8] Concerto F28M35x Technical Reference Manual[EB/OL].2013. http://www.ti.com.
白亮(碩士研究生),研究方向?yàn)榍度胧较到y(tǒng)開發(fā);嚴(yán)義(教授);周宏偉(工程師)。
Software Architecture Method of Real-time System with Dual-core※
Bai Liang1, Yan Yi1,Zhou Hongwei2
(1.College of Computer,Hangzhou Dianzi University,Hangzhou 310018,China;2.Tederic Machinery Co.,Ltd.)
Aiming at applications of dual-core microprocessor in the field of industrial control, this paper discusses the design methods of dual-core processor's software architecture based on the shared memory, mainly involving dual-core,communication methods,data sharing strategies and the methods for dual-core task allocation. Taking F28M35 dual-core processor as an example, this paper describes the structure of the processor resources, the dual-core communication mechanisms and uses methods of shared memory. A software architecture method is designed based on the data structure named system control block,and the method is successfully applied in control systems of injection machines.
dual-core processor;dual-core communication;shared memory;F28M35
國家自然科學(xué)基金項(xiàng)目(61272189);國家863計(jì)劃項(xiàng)目(2013AA040301);浙江省重點(diǎn)科技創(chuàng)新團(tuán)隊(duì)“面向行業(yè)的嵌入式關(guān)鍵技術(shù)”(2010R50008)。
TP368.1
A
2014-02-27)