<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 雙核實(shí)時(shí)系統的架構方法

雙核實(shí)時(shí)系統的架構方法

作者: 時(shí)間:2016-10-15 來(lái)源:網(wǎng)絡(luò ) 收藏

1.引言

本文引用地址:http://dyxdggzs.com/article/201610/307344.htm

技術(shù)的不斷成熟以及業(yè)界對工業(yè)設備小型化、個(gè)性化需求的不斷提高促使越來(lái)越多的工業(yè)設備采用系統設計。工業(yè)設備控制最大的特點(diǎn)是對系統性要求較高。而通常情況下,控制過(guò)程中常常同時(shí)存在多種不同性要求的任務(wù),不同任務(wù)對處理器時(shí)間的占用比例也有較大差異,因此如何有效的滿(mǎn)足并提高系統性能成為研究的重點(diǎn)。

傳統的單核處理器架構是主流,除了通過(guò)提升處理器主頻來(lái)提高系統的響應速度,還通過(guò)使用搶占式實(shí)時(shí)操作系統,引入多線(xiàn)程,改進(jìn)系統任務(wù)調度策略等軟件方法來(lái)進(jìn)一步提高系統性能。但隨著(zhù)應用不斷復雜,控制精度要求不斷提高,有限的系統資源成為性能提升的最大瓶頸。

針對單CPU架構的局限性,多處理器系統的研究應用逐漸增多,文獻[1]采用FPGA 和多個(gè)DSP 互連的并行處理結構,實(shí)現了一個(gè)高速數據傳輸帶寬、低延遲且計算性能強大的實(shí)時(shí)圖像處理系統。文獻[2]提出了一種基于A(yíng)RM的雙CPU協(xié)調運動(dòng)控制系統的設計方法。文獻[3]采用ARM+DSP的主從式雙CPU結構設計實(shí)現了運動(dòng)控制器。文獻[4]分析比較了幾種典型的嵌入式通信接口,并介紹了典型接口的設計要點(diǎn)。文獻[5]在單核嵌入式操作系統構架的基礎上,提出一種基于對稱(chēng)通信的處理器嵌入式操作系統構架,解決了異構處理器中的通信效率和共享內存的利用問(wèn)題。隨著(zhù)雙核架構應用的不斷推廣,同時(shí)雙核微處理器技術(shù)逐漸成熟,如何設計穩定高效的系統軟件架構成為當前研究的重點(diǎn)。本文以F28M35雙核系統為例,介紹了一種以IPC通信機制為核心,基于共享內存的雙核軟件架構方法。

2.雙核間通信的系統結構

完成雙核間的數據通信,除了數據傳輸介質(zhì)——共享內存外,還需要系統提供一套雙核間交互的信號機制。通常該信號機制中同時(shí)包括中斷信號和非中斷信號。利用該信號機制,結合共享內存,可設計出各種靈活的通信方式。

從通信信號的角度,通信方式可分為輪詢(xún)方式和中斷方式。由于輪詢(xún)方式使內核處于忙等的狀態(tài),因此應盡量避免使用,該方式多用于雙核之間事件需嚴格按照一定的順序執行的情況,例如系統啟動(dòng)時(shí)雙核之間的初始化交互。

從攜帶數據量的角度講,雙核之間可僅僅利用信號機制完成通信,雙方協(xié)定默認的操作;另外,也是大部分時(shí)候的通信方式,雙方通過(guò)共享內存交換數據,該方式在設計時(shí),將共享內存劃分為兩種屬性的內存區,分別用于兩個(gè)方向的數據傳遞。一種內存允許一個(gè)內核進(jìn)行讀寫(xiě)操作,而允許另外一個(gè)內核進(jìn)行只讀操作,另一種則方向相反。例如,A內核欲向B內核發(fā)送數據時(shí),先將數據寫(xiě)入A核空間內的共享內存區,然后向B核發(fā)送信號,B核收到信號后從該方向的共享內存區將數據取出,并回復A核,完成一次數據通信。

通信協(xié)議和通信接口封裝是雙核通信應該重點(diǎn)考慮的環(huán)節。簡(jiǎn)單的數據通信,雙方可以直接發(fā)送數據,默認雙方已經(jīng)知道數據的含義以及數據應該放置的內存地址。但是隨著(zhù)系統逐漸復雜,代碼量逐漸增加,無(wú)協(xié)議的數據通信給編程和理解都帶來(lái)很大問(wèn)題,降低系統的可擴展性能。在設計中雙核通信可以采用和系統外設相同的通信協(xié)議,例如串口通信使用的Modbus協(xié)議,這樣可以重復利用協(xié)議解析函數,同時(shí)也可提高可移植性。另外可根據實(shí)際需要自行定義適用的通信協(xié)議,或者將通用的通信協(xié)議做適當的修改以更適應共享內存大數據量的數據通信。關(guān)于通信接口的軟件封裝通常定義數據發(fā)送函數、數據接收函數、協(xié)議解析函數等,原則是接口應盡量精簡(jiǎn),最大程度降低雙核間的耦合度。

3.雙核間的數據共享機制

雙核間實(shí)現數據共享主要有兩種策略,一種是將共享數據直接存儲于共享內存中,雙核均可對其進(jìn)行操作。該方法關(guān)鍵要解決對共享內存互斥訪(fǎng)問(wèn)的問(wèn)題。關(guān)于雙口RAM互斥訪(fǎng)問(wèn)的方法大致有兩種:

1)硬件判優(yōu),系統通過(guò)存儲器沖突仲裁單元向兩個(gè)內核提供共享內存訪(fǎng)問(wèn)沖突標志,當雙核同時(shí)對相同地址的RAM進(jìn)行存取時(shí),仲裁單元促發(fā)相應忙信號,設計中可利用該信號插入等待時(shí)間,避免訪(fǎng)問(wèn)沖突。

2)信號量機制,系統提供獨立于雙核的信號量管理單元。該方式又叫令牌判優(yōu)方式,每個(gè)令牌可對應指定地址,指定長(cháng)度的共享內存段。雙核按照協(xié)定的規則交替獲得令牌,進(jìn)而操作相應的共享內存段。當雙核同時(shí)申請同一個(gè)令牌時(shí),信號量管理單元裁定誰(shuí)先占用。設計中可通過(guò)在訪(fǎng)問(wèn)內存前先申請對應的令牌實(shí)現雙核對共享內存區的互斥訪(fǎng)問(wèn)。

另一種實(shí)現數據共享的策略是在雙核各自本地定義相同的數據作為共享數據,按照寫(xiě)后及時(shí)更新的原則,利用中斷方式通過(guò)雙核間的數據通信實(shí)現數據同步。這種方法適用于共享數據滿(mǎn)足一定條件時(shí),即該共享數據對于其中一個(gè)內核是只讀的,否則,由于雙核獨立運行,運行進(jìn)度幾乎沒(méi)有制約,若出現雙核均改寫(xiě)共享數據的話(huà),無(wú)法保證數據的有效性。

4. 雙核任務(wù)分配

任務(wù)分配的原則在于充分利用雙核資源,最大限度縮小系統響應時(shí)間。例如在運動(dòng)控制領(lǐng)域利用ARM+DSP雙核處理器構架控制系統,在A(yíng)RM核中實(shí)現系統邏輯控制,在DSP核中實(shí)現運動(dòng)控制輸出,ARM核控制運動(dòng)過(guò)程,通過(guò)命令的形式驅動(dòng)DSP核實(shí)現具體的運動(dòng)動(dòng)作。另外在注塑機控制實(shí)例中,利用ARM核實(shí)現注塑過(guò)程控制,而在DSP端完成注塑機位置和溫度的智能控制算法,實(shí)現系統優(yōu)化處理。

5. F28M35雙核處理器的軟件架構設計

5.1 F28M35雙核存儲結構

TI的全新Concerto-F28M35微控制器采用了一種雙子系統架構,其中包含一個(gè)TI C28x內核與一個(gè)ARM Cortex-M3內核。這種混合架構將業(yè)內用于控制和主機通信功能的最佳技術(shù)融入到單個(gè)控制器中,而該控制器可提供維持實(shí)時(shí)控制環(huán)路所需的性能、效率及可靠性,并具備低延遲通信所需的快速響應能力。

在F28M35中包含兩類(lèi)共享內存,一類(lèi)是MTOC-message RAM(MTOCMSGRAM)和CTOM-message RAM(CTOMMSGRAM),大小都為2K,其特點(diǎn)是一個(gè)內核對其有讀寫(xiě)的權限,而另外一個(gè)內核僅有只讀權限。例如,M3內核可以讀寫(xiě)MTOCMSGRAM內存,而C28內核只能對MTOCMSGRAM進(jìn)行讀操作。另外一類(lèi)共享內存包含8個(gè)內存塊(S0-S7),大小均為8K。該類(lèi)內存可以被劃分到任意內核,系統通過(guò)控制寄存器MSxMSEL設置該類(lèi)內存的屬性,每塊內存對應該寄存器中的一位,通過(guò)設置相應位來(lái)設置相應內存塊的歸屬權。例如,若S0被設置為歸屬M3內核,則M3內核可讀寫(xiě)該內存,而C28內核只能對其進(jìn)行讀操作。同時(shí)需要注意的是,控制寄存器MSxMSEL只能在M3內核中進(jìn)行設置5.2 IPC機制

在雙核技術(shù)中,雙方之間的通信是核心。在F28M35x體系結構中,基于IPC信號和IPC中斷實(shí)現IPC通信(Inter ProcessorCommunications)機制。

該處理器在每個(gè)方向(MTOC/CTOM)上定義了32個(gè)IPC信號,前4個(gè)信號促發(fā)時(shí)可以附加中斷功能。處理器通過(guò)一套寄存器組實(shí)現IPC信號的操作。每個(gè)內核通過(guò)自己存儲空間內的一套寄存器實(shí)現IPC功能,每個(gè)寄存器32位,每一位分別代表一個(gè)IPC信號,第0-3位同時(shí)可設置為IPC中斷。以C28內核為例,寄存器組分別包括:

1)CTOMIPCSET,用于向M3核發(fā)送IPC信號或者IPC中斷。該寄存器置位時(shí),同時(shí)將CTOMIPCFLG和CTOMIPCSTS寄存器相應位置為1。

2)CTOMIPCCLR,用于清除C28到M3方向上的IPC信號或IPC中斷標志。該寄存器置位時(shí),同時(shí)將CTOMIPCFLG和CTOMIPCSTS寄存器相應位清零。

3)CTOMIPCFLG,該寄存器為只讀寄存器,用于顯示C28核到M3核方向上當前IPC信號的狀態(tài)。該寄存器和M3存儲空間中的CTOMIPCSTS寄存器在物理上是同一個(gè)寄存器。

4)MTOCIPCSTS,作用和CTOMIPCFLG類(lèi)似,同樣是只讀的,只是表征方向相反,用于顯示M3核到C28核當前IPC信號的狀態(tài)。同樣,它和M3存儲空間中的MTOCIPCFLG寄存器在物理上是同一個(gè)寄存器。

5)MTOCIPCACK,該寄存器置位時(shí),同時(shí)將MTOCIPCFLG和MTOCIPCSTS寄存器相應位清零。當C28內核收到M3發(fā)送來(lái)的IPC信號或者IPC中斷時(shí),利用該寄存器發(fā)送確認信息,完成二者的握手。

形象的說(shuō),雙核之間維護了兩條相互獨立的全雙工通道,每條通道包含了一個(gè)方向的信號發(fā)送(SET)和反向的信號確認(ACK)。同時(shí)雙方可以隨時(shí)讀取兩個(gè)方向下的當前IPC狀態(tài)(FLG/STS)。最終實(shí)現雙核間的IPC交互機制。

此外,F28M35還提供了一套IPC消息寄存器,分別是MTOC Message Registers和CTOM Message Registers,分別在每個(gè)內核空間對應4個(gè)寄存器。結合IPC信號和IPC中斷實(shí)現雙核之間的便捷通信。

5.3 雙核芯片的軟件系統

以系統控制塊數據結構為核心的雙核系統的架構方法。即設計了一種數據結構,稱(chēng)作系統控制塊(System Control Block,SCB)。將系統所有相關(guān)控制對象均映射到系統控制塊中,每個(gè)任務(wù)對系統的操作均可轉化為對SCB的讀寫(xiě)操作,這樣系統可以很方便的實(shí)現模塊化,定義SCB操作管理模塊即可實(shí)現多任務(wù)對系統操作的統一管理。關(guān)于SCB與實(shí)際控制對象的物理關(guān)聯(lián)可以通過(guò)對應的驅動(dòng)模塊實(shí)現。

以SCB為核心的系統簡(jiǎn)易邏輯架構,SCB不僅體現控制器與外部控制對象之間關(guān)系,例如,映射人機界面操作、PC機監控過(guò)程以及各種輸入輸出信號等;同時(shí),SCB還包含了雙核之間實(shí)現系統控制的內部數據映射。SCB的基本結構如圖4所示,主要包括A核外設映射區、B核外設映射區、系統參數區、系統狀態(tài)區等。

SCB是整個(gè)系統的體現,從處理器內部分析,雙核通過(guò)維護同一個(gè)SCB實(shí)現對系統的協(xié)調控制。利用雙核之間的通信,當其中一個(gè)內核的SCB被寫(xiě)操作時(shí),立即向另一內核發(fā)送更新命令,實(shí)時(shí)完成雙核間的數據同步。

利用上小結中介紹的IPC信號機制,以及多種形式的存儲空間,可以靈活設計出多種雙核通信方式。如下所述:

1)僅利用IPC信號或者IPC中斷方式,多用于完成拓撲序事件執行,或者系統啟動(dòng)時(shí)初始化握手交互。

2)IPC信號/中斷+IPC消息寄存器組方式,用于小數據量的通信。命令寄存器中的命令完全由軟件定義,用戶(hù)可設計不同的命令來(lái)完成不同的數據操作。多用于對字節型內存的讀寫(xiě)操作。

3)IPC信號/中斷+MSGRAM/S0-S7方式,S0-S7可分別分配給任意內核,該方式可以實(shí)現大數據量的核間通信,同時(shí)利用通用或者自定義的通信協(xié)議,可提高系統的擴展能力及可移植性。

6.小結

是基于F28M35雙核處理器設計實(shí)現的注塑機主控制器,采用本文介紹的方法實(shí)現了主從式軟件架構,ARM核作為主核完成與上位機的通信任務(wù)和系統邏輯過(guò)程的控制任務(wù),利用DSP高速的計算能力作為從核完成注塑機位置控制和溫度控制智能算法的執行任務(wù),雙核通過(guò)SCB的映射實(shí)現相互的協(xié)調。新的控制器替代了原有的以600MHZ主頻處理器為核心的控制系統,較好了完成了注塑機的控制任務(wù)。

在以后的工作中,從核智能控制算法仍有優(yōu)化的空間,系統性能仍可進(jìn)一步改善。另外,除了主從模式,將研究雙主模式,實(shí)現更靈活有效的系統架構,并完成雙端獨立的在線(xiàn)監控和程序下載等功能,進(jìn)一步降低軟件開(kāi)發(fā)難度。




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>