Cortex-A15 上運(yùn)行的不同處理程序過(guò)程
一種替代方案是高可用性無(wú)縫冗余 (HSR),IEC 62439 中同樣有此定義。HSR 采用環(huán)形拓?fù)?,每個(gè)數(shù)據(jù)包在復(fù)制后,會(huì)在環(huán)路架構(gòu)以相反方向轉(zhuǎn)發(fā)至目的地。環(huán)路架構(gòu)無(wú)需采用額外的交換機(jī)/路由器,可避免數(shù)據(jù)包在到達(dá)目的地前需要通過(guò)多個(gè)節(jié)點(diǎn)而產(chǎn)生的延遲。高級(jí)通信控制器可以通過(guò)使用直通轉(zhuǎn)發(fā)提供幫助,以盡可能將該延遲降至最低。這種方法不需要數(shù)據(jù)包在轉(zhuǎn)發(fā)到目的地之前完全解碼。
圖 3:HSR 冗余協(xié)議適用于環(huán)形拓?fù)洹?/p>
由于需要廣泛過(guò)濾傳入的以太網(wǎng)消息,IEC 61580 需要高性能處理,以便減少用于控制算法的計(jì)算量。其中一個(gè)解決方案是盡量減輕網(wǎng)絡(luò)級(jí)分析負(fù)載,使主機(jī)處理器只需處理需要注意的消息。這可以在多核 SoC 上實(shí)現(xiàn),其中一些包含專用智能網(wǎng)絡(luò)處理器。例如 Texas Instruments 生產(chǎn)的嵌入式微處理器 AM572x Sitara。該公司提供的評(píng)估板可輕松探索其網(wǎng)絡(luò)功能。AM572x 基于 ARM?Cortex?-A15 處理器。這個(gè)多核器件通過(guò)一個(gè) Cortex-M4 擴(kuò)展了主機(jī)處理器,可用于幫助減少 I/O 密集型任務(wù)的負(fù)擔(dān)。該產(chǎn)品還包括一對(duì)網(wǎng)絡(luò)處理器以及基于 C66x 架構(gòu)的數(shù)字信號(hào)處理器,可用于執(zhí)行數(shù)據(jù)分析。AM572x 上的 PRU-ICSS 子系統(tǒng)除 ARM 內(nèi)核的處理外,還提供單獨(dú)的處理。該單元包含兩個(gè) PRU,每個(gè)都包含一個(gè)運(yùn)行頻率高達(dá) 200 MHz 的 32 位 RISC 處理器和一個(gè)網(wǎng)絡(luò)接口。兩個(gè)獨(dú)立智能內(nèi)核可以隨時(shí)為 PRP 和 HSR 提供支持。PRU 內(nèi)核中的 RISC 處理器沒(méi)有通用架構(gòu)。相反,該內(nèi)核專門用于處理網(wǎng)絡(luò)幀中遇到的打包存儲(chǔ)器映射數(shù)據(jù)結(jié)構(gòu)的類型。它集成了許多功能,可支持具有緊密實(shí)時(shí)約束的應(yīng)用??梢栽?PRU 處理器上執(zhí)行某種程度的數(shù)據(jù)包過(guò)濾。在 AM572x 上, Cortex-M4 為諸如 IEEE 1588、GOOSE 和 SV 之類協(xié)議提供了更多空間。Cortex-M4 可用于分析所有傳入的多點(diǎn)傳送數(shù)據(jù)包,并比較其應(yīng)用 ID (APPID) 地址,以實(shí)現(xiàn)由 Cortex-A15 上運(yùn)行的軟件提供的有效訂閱。這樣 M4 可以確定哪些消息需要向上游傳遞。其他數(shù)據(jù)包則可以丟棄并從存儲(chǔ)器中刪除。
圖 4:共享存儲(chǔ)器 IPC 支持將 IEC 61580 處理工作卸載到 Cortex-M4 和其他處理器。這種卸載處理架構(gòu)中的一個(gè)關(guān)鍵考慮因素是各處理器如何相互通信。AM572x 提供共享存儲(chǔ)器就是要幫助將消息從一個(gè)處理器傳遞到另一個(gè)處理器。數(shù)據(jù)包可以輕易形成隊(duì)列,因此可以按順序進(jìn)行寫(xiě)入和讀取。關(guān)鍵問(wèn)題是要使用的協(xié)議。一種選擇是在 Cortex-A15 上使用 Linux。
這樣可以使用操作系統(tǒng)為進(jìn)程間通信提供的標(biāo)準(zhǔn)應(yīng)用編程接口 (API),例如 remoteproc 和 rpmsg。rpmsg 消息傳遞系統(tǒng)工作方式是通過(guò)提供一個(gè)虛擬設(shè)備反映鏈接到遠(yuǎn)程進(jìn)程的每個(gè)通信通道來(lái)實(shí)現(xiàn)的。通道通過(guò)文本名稱標(biāo)識(shí),并具有本地 rpmsg 地址和遠(yuǎn)程 rpmsg 地址。當(dāng)一個(gè)驅(qū)動(dòng)器開(kāi)始監(jiān)聽(tīng)一個(gè)通道時(shí),用于接收的回調(diào)函數(shù)綁定到唯一的 32 位 rpmsg 本地地址。入站消息到達(dá)時(shí),rpmsg 內(nèi)核會(huì)根據(jù)目的地地址將其發(fā)送給相應(yīng)的驅(qū)動(dòng)器。在提供入站消息有效載荷的同時(shí),通過(guò)調(diào)用驅(qū)動(dòng)器的接收處理程序來(lái)中繼消息。通過(guò)這種方案,GOOSE 和 SV 消息的過(guò)濾代碼可以將具有特定 APPID 地址的消息傳遞給在 Cortex-A15 上運(yùn)行的不同處理程序?;蛘?,可以將所有消息進(jìn)行分組,中繼到公共消息處理器,然后在主處理器上進(jìn)行排序。