国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于S12X系列雙核單片機(jī)的Flexray-CAN總線網(wǎng)關(guān)的設(shè)計與實現(xiàn)

2019-09-23 07:10豆海利陳曉飛
現(xiàn)代電子技術(shù) 2019年18期
關(guān)鍵詞:雙核緩沖區(qū)中斷

豆海利,陳曉飛,楊 寒,馮 源

(1.空軍工程大學(xué) 基礎(chǔ)部,陜西 西安 710051;2.航空工業(yè)西安航空計算技術(shù)研究所,陜西 西安 710065)

0 引 言

MC9S12X 是美國Freescale 公司推出的雙核單片機(jī),內(nèi)部集成可編程的外設(shè)中斷協(xié)處理器XGATE。XGATE 既可以進(jìn)行數(shù)據(jù)運(yùn)算和處理,也可以實現(xiàn)外設(shè)之間、外設(shè)與RAM、外設(shè)與主CPU 之間的數(shù)據(jù)傳輸。雙核之間協(xié)同工作,能夠?qū)崿F(xiàn)快速的中斷響應(yīng)、實時控制、I/O 功能擴(kuò)展、通信接口連接和協(xié)議處理等,從而為復(fù)雜控制系統(tǒng)提供了低功耗、低成本的解決方案[1-3]。

現(xiàn)代無人機(jī)平臺上廣泛采用多種數(shù)據(jù)總線來實現(xiàn)各級別的數(shù)據(jù)傳輸和信息共享。利用車載平臺上應(yīng)用成熟的CAN 和Flexray 總線來構(gòu)建無人機(jī)機(jī)載總線系統(tǒng),可以在滿足系統(tǒng)分布式控制、可靠實時數(shù)據(jù)傳輸要求的同時,更具有成本優(yōu)勢。

1 Flexray-CAN網(wǎng)關(guān)需求分析

本文中的無人機(jī)總線系統(tǒng)結(jié)構(gòu)如圖1所示。選定Flexray 總線作為第一級總線,采用雙通道冗余工作模式,用于連接伺服系統(tǒng)、動力系統(tǒng)、飛控系統(tǒng)、顯示系統(tǒng)。2 路 CAN 總線 A 和 B 作為二級總線,連接 4 臺遠(yuǎn)程接口單元(RIU)。一級和二級總線之間通過Flexray-CAN 網(wǎng)關(guān)進(jìn)行連接。

圖1 無人機(jī)總線系統(tǒng)結(jié)構(gòu)Fig.1 Structure of bus system of UAV

機(jī)電系統(tǒng)的各個設(shè)備就近與RIU 交聯(lián)。RIU 是作為機(jī)電系統(tǒng)的終端信號處理和控制設(shè)備,主要負(fù)責(zé)傳感器、作動器等接口的狀態(tài)采集和輸出控制,通過CAN 總線將信息匯總給網(wǎng)關(guān)裝置。Flexray-CAN 網(wǎng)關(guān)主要根據(jù)系統(tǒng)數(shù)據(jù)交互的需求,負(fù)責(zé)CAN 和Flexray 總線之間的消息過濾和協(xié)議轉(zhuǎn)換,監(jiān)測并上報CAN 總線和各個RIU的故障狀態(tài)信息。

本文基于雙核單片機(jī)MC9S12XEP100 設(shè)計并實現(xiàn)了 Flexray-CAN 網(wǎng)關(guān),用于連接 2 路 CAN 和 1 路冗余雙通道的Flexray 總線。

2 Flexray-CAN網(wǎng)關(guān)的硬件設(shè)計

2.1 硬件結(jié)構(gòu)和原理框圖

本文設(shè)計的Flexray-CAN 網(wǎng)關(guān)的硬件結(jié)構(gòu)如圖2所示,選用集成5 個MSCAN 模塊,并包含I/O 協(xié)處理器XGATE 的雙核單片機(jī)MC9S12XEP100 作為該網(wǎng)關(guān)的主控芯片,負(fù)責(zé)對CAN 和Flexray 控制器的初始化,并控制消息過濾和協(xié)議轉(zhuǎn)換、CAN 總線的故障監(jiān)控等[3-4]。

圖2 Flexray-CAN 網(wǎng)關(guān)的硬件結(jié)構(gòu)Fig.2 Hardware structure of Flexray-CAN gateway

對CAN 和Flexray 總線接口進(jìn)行電氣隔離設(shè)計,可提高通信接口的抗干擾能力。本設(shè)計中,選用ADM3053 實現(xiàn)CAN 接口的供電和信號隔離,并集成CAN 收發(fā)器。Flexray 總線的每個通道分別使用各自獨(dú)立的隔離器件ADuM5402 和總線驅(qū)動器TJA1080A。這樣,在實現(xiàn)Flexray 協(xié)議控制器與物理層總線完全隔離的同時,保證雙冗余通道之間的接口電路的獨(dú)立性[5-6]。

2.2 CAN接口硬件實現(xiàn)

本設(shè)計中CAN 接口電路圖如圖3所示。

圖3 CAN 接口電路原理圖Fig.3 Schematic diagram of CAN interface circuit

ADM3053 根據(jù)隔離功能劃分為邏輯端(圖3左側(cè))和總線端(圖3右側(cè)),兩端連接獨(dú)立的電源和地信號。其中邏輯端與主控芯片MC9S12XEP100 相連,總線端連接必要的終端防護(hù)器件,包括共模電感和TVS 管。本設(shè)計中,2 路CAN 接口電路中的ADM3503 的邏輯端連接同一個的VIO 和VCC 供電,而總線端分別連接CAN_GND1 和CAN_GND2,以保證接口電路的獨(dú)立性。

2.3 Flexray控制器的主機(jī)接口電路

本設(shè)計中主控器MC9S12XEP100 通過外部總線接口(EBI)與 Flexray 控制器 MFR4310 連接,F(xiàn)lexray 控制器的主機(jī)接口電路如圖4所示。

圖4 Flexray 控制器的主機(jī)接口電路Fig.4 Host interface circuit of Flexray controller

MFR4310 與MC9S12XEP100 進(jìn)行主機(jī)接口適配時,通過IF_SELx 管腳的高低電平設(shè)置,使其工作在異步存儲器接口(AMI)模式下。此時通過CE#,WE#,OE#信號來控制AMI 接口的數(shù)據(jù)交換。

主控器MC9S12XEP100 必須選擇具備外部總線接口(EBI)的芯片類別,將其設(shè)置為擴(kuò)展運(yùn)行模式,并使能外部總線接口。本設(shè)計中使用通過片選信號CS0 來選中MFR4310,對應(yīng)的存儲空間范圍為0x40_0000~0x7F_FFFF。

2.4 Flexray總線接口電路

TJA1080A 是 Flexray 總線驅(qū)動器,支持 1~10 Mb/s的通信速率。本設(shè)計中,選用ADuM5402 來實現(xiàn)MFR4310 和TJA1080A 之間信號和供電隔離。TJA1080A 的總線接口BP 和BM 信號通過共模電感和分裂終端電阻后,與Flexray 的物理總線相連[5]。Flexray 總線通道A 接口的電路如圖5所示。

圖5 Flexray 總線接口電路Fig.5 Interface circuit of Flexray bus

3 網(wǎng)關(guān)的雙核工作模型

3.1 數(shù)據(jù)結(jié)構(gòu)定義

數(shù)據(jù)結(jié)構(gòu)的設(shè)計主要包括:消息緩沖區(qū)、消息過濾表和網(wǎng)關(guān)路由表[7-10]。

1)消息緩沖區(qū)。在雙核的共享內(nèi)存中分別為CAN和Flexray 消息創(chuàng)建獨(dú)立的接收和發(fā)送緩沖區(qū),每個緩沖區(qū)分為緊急消息緩沖區(qū)和普通消息緩沖區(qū)。緩沖區(qū)采用環(huán)形隊列結(jié)構(gòu)。

2)消息過濾表。在XGATE 的獨(dú)享RAM 空間中,分別為CAN 和Flexray 消息創(chuàng)建獨(dú)立的消息過濾表。當(dāng)CAN 或Flexray 總線上有消息出現(xiàn)時,XGATE 會響應(yīng)接收中斷,然后以消息ID 為關(guān)鍵字來查找過濾表,并判別緊急消息還是普通消息。

3)網(wǎng)關(guān)路由表。在S12X主CPU的獨(dú)享RAM空間中創(chuàng)建網(wǎng)關(guān)路由表。本文以1 包完整的最長CAN 消息(ID占4 B,數(shù)據(jù)8 B)作為基本組包和拆包單位。定義的網(wǎng)關(guān)路由表包括:CAN 消息ID、Flexray消息ID、CAN 消息刷新標(biāo)志、Flexray消息刷新標(biāo)志、目的子網(wǎng)編號。

3.2 網(wǎng)關(guān)的雙核工作流程

本系統(tǒng)中Flexray-CAN 網(wǎng)關(guān)作為一級和二級總線之間的互聯(lián)和交互中心,采用傳統(tǒng)的單核控制器來實現(xiàn),容易出現(xiàn)數(shù)據(jù)阻塞和消息延遲等問題,消息通信的實時性無法滿足要求。本設(shè)計中,將網(wǎng)關(guān)的處理流程合理安排到S12X 主CPU 和協(xié)處理器XGATE 上,網(wǎng)關(guān)的雙核工作模型如圖6所示。

圖6 網(wǎng)關(guān)的雙核工作模型Fig.6 Dual-core working model of gateway

圖中,S12X 主 CPU 執(zhí)行 main()函數(shù)并響應(yīng) S12X 中斷服務(wù)程序。main()函數(shù)是無限循環(huán)處理流程,它始終在查詢CAN 和Flexray 的發(fā)送和接收消息緩沖區(qū),進(jìn)一步完成消息解析、協(xié)議轉(zhuǎn)換、路由調(diào)度以及總線狀態(tài)監(jiān)測等功能。XGATE 執(zhí)行CAN 消息的接收和發(fā)送中斷、Flexray 消息的接收和發(fā)送中斷、識別緊急消息等功能。當(dāng)雙核處理器初始化完成后,S12X 主CPU 進(jìn)入main()函數(shù),始終處于運(yùn)行狀態(tài)。而XGATE 是由中斷觸發(fā)執(zhí)行,當(dāng)沒有中斷事件時,XGATE 不執(zhí)行任何指令,處于低功耗狀態(tài)。

3.3 網(wǎng)關(guān)的雙核通信設(shè)計

本設(shè)計中,采用相互中斷和共享內(nèi)存來實現(xiàn)網(wǎng)關(guān)內(nèi)雙核間的通信,如圖7所示。

圖7 網(wǎng)關(guān)的雙核通信機(jī)制Fig.7 Dual-core communication mechanism of gateway

在S12X 主CPU 和XGATE 的共享內(nèi)存中分別創(chuàng)建CAN 和Flexray 消息的收發(fā)緩沖區(qū)。S12X 雙核單片機(jī)自帶8 個硬件信號量,信號量有3 種狀態(tài):釋放、S12X 主CPU 鎖定、XGATE 鎖定。兩個內(nèi)核可以獨(dú)立異步地對消息緩沖區(qū)進(jìn)行讀寫訪問。每個內(nèi)核在對消息緩沖區(qū)進(jìn)行讀寫訪問之前需要先申請鎖定信號量,在訪問結(jié)束后釋放該信號量,從而保證對消息緩沖區(qū)訪問的數(shù)據(jù)完整性[11]。

S12X 主CPU 和XGATE 之間可以相互中斷,用于雙核之間的同步。S12X 主CPU 可以通過置位或清除XGATE 軟中斷觸發(fā)寄存器XGSWT 中的相應(yīng)位來觸發(fā)或清除這8個中斷。XGATE 在中斷服務(wù)程序末尾,通過SIF 指令向S12X 主CPU 提交中斷。

4 網(wǎng)關(guān)的軟件設(shè)計

4.1 S12X主CPU的main()函數(shù)

圖8是main()函數(shù)流程圖。首先在共享數(shù)據(jù)段SHARED_DATA 中定義 CAN 和 Flexray 消息緩沖區(qū),在XGATE 的獨(dú)享RAM 空間中創(chuàng)建消息過濾表,在S12X主CPU 的獨(dú)享RAM 空間中創(chuàng)建網(wǎng)關(guān)路由表。將它們聲明為全局常量,并進(jìn)行初始化,防止對其修改操作。然后分別對S12X主CPU,XGATE,MSCAN模塊和MFR4310協(xié)議控制器進(jìn)行初始化。進(jìn)入主循環(huán)后,程序始終在查詢CAN 和Flexray 的發(fā)送和接收消息緩沖區(qū),進(jìn)一步完成消息解析、協(xié)議轉(zhuǎn)換、路由調(diào)度以及總線狀態(tài)監(jiān)測等功能。最后以軟中斷的方式通知XGATE 來發(fā)送消息。

圖8 main()函數(shù)流程圖Fig.8 Flow chart of main()function

4.2 XGATE的初始化和啟動

在 S12X 主 CPU 初始化后,執(zhí)行 SetupXGATE()函數(shù)來對XGATE 進(jìn)行初始化并啟動[3-4],操作過程如下:

1)向XGATE 中斷向量基地址寄存器XGVBR 中寫入XGATE 的中斷向量表的起始地址,這樣XGATE 響應(yīng)中斷時才能找到對應(yīng)中斷服務(wù)程序入口。

2)將需要響應(yīng)的中斷分配給XGATE,并通過中斷配置寄存器ILVL[2:0]來設(shè)定中斷優(yōu)先級。

3)置XGATE控制寄存器 XGMCTL 中的 XGIE 位為1,來使能 XGATE 對 S12X 主 CPU 的中斷。

4)置XGMCTL中的XGE位為1來啟動XGATE工作。

4.3 S12X主CPU的中斷服務(wù)程序

圖9為S12X 主CPU 的中斷處理流程圖。本設(shè)計中采用雙核的兩級中斷傳遞響應(yīng)的方式,給緊急消息提供了一條及時的網(wǎng)關(guān)協(xié)議轉(zhuǎn)換通路。XGATE 以中斷響應(yīng)的方式從上一級總線上接收到消息后,判斷是緊急消息,就通過SIF 指令向S12X 主CPU 觸發(fā)中斷。然后S12X 主CPU 完成網(wǎng)關(guān)的一系列操作后,最后以軟中斷的方式通知XGATE將封裝后的新消息發(fā)送到下一級總線。

4.4 協(xié)處理器XGATE程序設(shè)計

XGATE 的代碼保存在.cxgate 文件中,主要內(nèi)容包括:XGATE 中斷服務(wù)程序和中斷向量表。在創(chuàng)建雙核工程時,將XGATE 程序安排在RAM 中運(yùn)行。這樣XGATE 的運(yùn)行速度比 S12X 主 CPU 快 1 倍,并且不會與S12X 主 CPU 產(chǎn)生“讀”競爭[1,12-13]。

圖9 S12X 主CPU 的中斷處理流程圖Fig.9 Flow charts for interrupt processing of S12X main CPU

本設(shè)計中,將軟中斷、MSCAN 和Flexray 接口的接收中斷、發(fā)送中斷、總線錯誤中斷等交由XGATE 負(fù)責(zé)。XGATE 的工作流程如圖10所示。

圖10 協(xié)處理器工作流程圖Fig.10 Flow chart of co-processor operation

5 結(jié) 語

當(dāng)前的Flexray-CAN 網(wǎng)關(guān)絕大多數(shù)是采用單處理器實現(xiàn),為了緩解網(wǎng)關(guān)工作時可能出現(xiàn)的數(shù)據(jù)阻塞和延遲問題。筆者在充分考慮雙核單片機(jī)MC9S12XP100 的S12X 主CPU 和協(xié)處理器XGATE 的技術(shù)特點(diǎn)、工作原理、數(shù)據(jù)交互、內(nèi)核通信等機(jī)制的基礎(chǔ)上,采用主處理器與協(xié)處理器并行協(xié)調(diào)工作的方式來設(shè)計工作流程,實現(xiàn)了一個可以連接2 路CAN 總線和1 路冗余雙通道的Flexray 總線的Flexray-CAN 網(wǎng)關(guān)。實際應(yīng)用表明,系統(tǒng)運(yùn)行穩(wěn)定可靠,與傳統(tǒng)的采用單處理器實現(xiàn)的網(wǎng)關(guān)相比,數(shù)據(jù)處理能力和通信實時性得到了明顯改善。

猜你喜歡
雙核緩沖區(qū)中斷
全球金融“F20”在此召開!橫瀝進(jìn)入“雙核”時代
嫩江重要省界緩沖區(qū)水質(zhì)單因子評價法研究
跟蹤導(dǎo)練(二)(5)
千里移防,衛(wèi)勤保障不中斷
新型夾心雙核配和物[Zn2(ABTC)(phen)2(H2O)6·2H2O]的合成及其熒光性能
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
三螺旋N-N橋連的雙核Co(Ⅲ)配合物的合成、結(jié)構(gòu)和性質(zhì)
一個雙核β-二酮鏑(Ⅲ)配合物的超聲化學(xué)合成、晶體結(jié)構(gòu)和磁性
AT89C51與中斷有關(guān)的寄存器功能表解
地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計與實現(xiàn)
大厂| 长宁县| 九台市| 随州市| 岱山县| 吕梁市| 安国市| 南郑县| 临澧县| 读书| 竹溪县| 马公市| 蕉岭县| 平凉市| 东兴市| 玉门市| 文化| 阜新市| 洛隆县| 寻甸| 建平县| 大同县| 玉林市| 始兴县| 分宜县| 西乌珠穆沁旗| 万安县| 桐城市| 辉南县| 吉木萨尔县| 松潘县| 荔浦县| 深州市| 喜德县| 岚皋县| 泰和县| 玛沁县| 吉安县| 全椒县| 萍乡市| 胶南市|