999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于μC/OS-Ⅲ的車載網(wǎng)關(guān)控制器設(shè)計

2023-10-24 03:29:56曹清源錢宏文
物聯(lián)網(wǎng)技術(shù) 2023年10期

曹清源,楊 濤,錢宏文

(中國電子科技集團公司第五十八研究所,江蘇 無錫 214035)

0 引 言

車載網(wǎng)關(guān)控制器作為汽車上不同總線或網(wǎng)段數(shù)據(jù)交互的中樞,是汽車總線系統(tǒng)的核心工作單元,對車載網(wǎng)關(guān)系統(tǒng)的設(shè)計優(yōu)化具有重要意義[1-2]。由于車載網(wǎng)關(guān)控制器工作環(huán)境較為苛刻,且對硬件成本限制極為嚴格,因此車載網(wǎng)關(guān)控制器通常使用車規(guī)級專用微控制器設(shè)計實現(xiàn)[3-4]。因此,數(shù)據(jù)傳輸實時性和運行可靠性是車載網(wǎng)關(guān)控制器的核心性能。

基于車規(guī)級專用微控制器的車載網(wǎng)關(guān)控制器通常有兩種軟件設(shè)計方案:基于操作系統(tǒng)的軟件設(shè)計和無操作系統(tǒng)的軟件設(shè)計。相對于無操作系統(tǒng)的軟件設(shè)計,基于操作系統(tǒng)的軟件設(shè)計具有實時性高、可靠性好和擴展能力強等優(yōu)勢。因此設(shè)計基于嵌入式操作系統(tǒng)的車載網(wǎng)關(guān)控制器是提高車載網(wǎng)關(guān)控制器性能的重要手段。

本文提出一種基于μC/OS-Ⅲ的車載網(wǎng)關(guān)控制器設(shè)計方案,主要包括網(wǎng)關(guān)控制器硬件設(shè)計、操作系統(tǒng)的移植和通信軟件設(shè)計。最后,使用專用測試工具和上位機軟件對網(wǎng)關(guān)的數(shù)據(jù)傳輸能力進行測試。結(jié)果表明,本文設(shè)計的網(wǎng)關(guān)控制器能有效保證網(wǎng)關(guān)功能可靠性和數(shù)據(jù)傳輸實時性。

1 硬件方案設(shè)計

1.1 原理框圖

網(wǎng)關(guān)控制器硬件框圖如圖1 所示。該網(wǎng)關(guān)控制器選用NXP 公司的Power 內(nèi)核MPC5646C 作為微控制器器。CAN接口選用TI 公司的TCAN1042 作為CAN 總線收發(fā)器,以太網(wǎng)接口選用NXP 公司生產(chǎn)的TJA1100 車載以太網(wǎng)收發(fā)器。

圖1 網(wǎng)關(guān)控制器硬件框圖

1.2 網(wǎng)關(guān)微控制器

網(wǎng)關(guān)微控制器是由NXP 公司提供的32 位單片機MPC5646C,屬于Power 架構(gòu),具有e200z0h 和e200z4h 雙內(nèi)核處理器功能、更強的數(shù)據(jù)處理能力、更大的數(shù)據(jù)存儲空間和更低的功耗[5-6]。

1.3 CAN 收發(fā)器TCAN1042

本文采用的CAN 收發(fā)器型號為TCAN1042。該芯片是TI 公司生產(chǎn)的一款具有CAN FD 和故障保護功能的汽車類CAN 收發(fā)器,這款 CAN 收發(fā)器系列符合 ISO1189-2 (2016)高速CAN 物理層標準。所有器件均設(shè)計用于數(shù)據(jù)速率高達2 Mb/s 的 CAN FD 網(wǎng)絡(luò)。圖2 為CAN 接口硬件設(shè)計原理圖[7]。

圖2 CAN 接口硬件設(shè)計原理圖

1.4 車載以太網(wǎng)收發(fā)器TJA1101

TJA1101 是NXP 公司生產(chǎn)的符合100BASE-T1 標準的以太網(wǎng)收發(fā)器。該器件支持在一對非屏蔽雙絞線上實現(xiàn)100 Mb/s 的收發(fā)能力,傳輸線長度可達15 m 以上。TJA1101可以在保持汽車應(yīng)用所需魯棒性的同時,減小電源損耗和系統(tǒng)整體費用。圖3 為以太網(wǎng)收發(fā)器接口原理圖。

圖3 以太網(wǎng)收發(fā)器接口原理圖

2 通信軟件設(shè)計

2.1 操作系統(tǒng)移植

為了方便移植,μC/OS-Ⅲ的絕大部分代碼使用C 語言編寫[8]。但在移植時,仍需要用C 語言和匯編語言編寫與處理器相關(guān)的代碼。μC/OS-Ⅲ中操作CPU 寄存器的代碼,仍只能使用匯編語言編寫,除非C 編譯器支持內(nèi)嵌匯編語言。圖6 給出了μC/OS-Ⅲ的結(jié)構(gòu)以及它與其他軟件文件和硬件的關(guān)系。使用μC/OS-Ⅲ時,需要編寫應(yīng)用軟件代碼,并配置μC/OS-Ⅲ。

μC/OS-Ⅲ的移植工作包括4 個內(nèi)核相關(guān)文件,分別是os_cpu.h、os_cpu_a.s、os_cpu_a.inc 和os_cpu_c.c。除此之外,移植工作還需要編寫3 個CPU 相關(guān)文件,分別是cpu.h、cpu_a.a 和cpu_c.c。

os_cpu.h 中定義了任務(wù)切換宏定義,OS_TASK_SW()。對于MPC5646C 微控制器而言,任務(wù)切換是通過執(zhí)行system call(sc, se_sc)指令,產(chǎn)生system call 中斷(IVOR8),并在system call中斷服務(wù)函數(shù)—IVOR8trap中執(zhí)行OSCtxSw實現(xiàn)任務(wù)切換。

os_cpu_a.s 文件中包含了所有需要使用匯編語言實現(xiàn)的函數(shù)。開發(fā)者需要在該文件中實現(xiàn)4 個函數(shù),即:OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()和OSTickISR()。OSStartHighRdy()會被OSStart()函數(shù)調(diào)用來開始多任務(wù)管理。該函數(shù)僅在操作系統(tǒng)啟動時被執(zhí)行一次。OSCtxSw()是任務(wù)級的任務(wù)切換函數(shù),在IVOR8trap 中斷服務(wù)函數(shù)中被調(diào)用來切換任務(wù)。OSIntCtxSw()是中斷級任務(wù)切換函數(shù)。在所有嵌套的中斷服務(wù)程序都退出后,OSIntExit()函數(shù)會調(diào)用OSIntCtxSw(),使得在中斷函數(shù)執(zhí)行后,當前最高優(yōu)先級的任務(wù)能夠運行。OSTickISR()是系統(tǒng)時鐘節(jié)拍中斷服務(wù)函數(shù)。MPC5646 的e200z4 內(nèi)核中提供了時鐘基準定時器—Time Base,該定時器中包含了一個減計數(shù)器,當減計數(shù)器的值由1變?yōu)?時,將引發(fā)Decrementer中斷(IVOR10)。在Decrementer 中斷服務(wù)函數(shù)—IVOR10trap 中,需要調(diào)用OSTickISR()。

os_cpu_a.inc 文件中實現(xiàn)了匯編文件的宏定義,包括兩部分內(nèi)容:第一部分是CPU 中通用寄存器的地址;第二部分是中斷函數(shù)中要使用的prologue 和epilogue 功能。

os_cpu_c.c 文件中定義了10 個函數(shù),需要自己實現(xiàn)的函數(shù)是OSTaskStkInit,用于初始化每個任務(wù)的任務(wù)堆棧。其余函數(shù)應(yīng)保留函數(shù)定義,函數(shù)內(nèi)容可為空,或保持其默認狀態(tài)[9]。

2.2 CAN 通信程序設(shè)計

微控制器MPC5646C 一共支持6 路FlexCAN 模塊。每個FlexCAN 模塊有64 個消息緩沖(Message Buffer),每個Buffer 都可以獨立配置為發(fā)送或接收功能。當Buffer 完成發(fā)送或接收動作后,中斷標志位將被置位。如果相應(yīng)的中斷允許位被打開,MPC5646C 將產(chǎn)生中斷,并進入相應(yīng)的中斷服務(wù)函數(shù)中。本文使用了“延遲中斷處理”的概念,在CAN接收中斷函數(shù)中讀取Buffer 中的報文,通過隊列發(fā)送給任務(wù)進行處理。如果當前隊列已滿,則清除中斷標志位,不執(zhí)行讀取操作,退出中斷函數(shù)。待下次進入中斷函數(shù)時,讀取所有接收的報文。CAN 中斷函數(shù)流程如圖4 所示。

圖4 CAN 中斷函數(shù)流程

本文對每一路CAN 都單獨分配一個任務(wù)(task),任務(wù)創(chuàng)建時初始化每一個任務(wù)對應(yīng)的CAN 模塊。在任務(wù)主循環(huán)中讀取隊列,如果當前隊列為空,當前任務(wù)則被操作系統(tǒng)掛起,出讓CPU 使用權(quán);當隊列非空時,任務(wù)被操作系統(tǒng)喚醒,并讀取隊列中收到的報文,執(zhí)行處理操作[10]。CAN 接收任務(wù)流程如圖5 所示。

圖5 CAN 接收任務(wù)流程

本文為每一路CAN 分配了一個互斥信號量,用于保護執(zhí)行發(fā)送操作的Message Buffer 不會被重入[11]。當任務(wù)需要在某一路CAN 模塊上發(fā)送報文時,首先申請該CAN 模塊對應(yīng)的互斥信號量,如果信號量被成功獲取,則在所有的發(fā)送Message Buffer中尋找空閑的Message Buffer,找到后通過寫寄存器實現(xiàn)發(fā)送操作;如果信號量沒有被獲取,則當前任務(wù)被掛起,任務(wù)的最長等待時間設(shè)置為5 ms,如果等待超時或沒有找到可用的Message Buffer,則返回錯誤信息。CAN 發(fā)送函數(shù)流程如圖6 所示。

圖6 CAN 發(fā)送函數(shù)流程

2.3 以太網(wǎng)通信程序設(shè)計

MPC5646C 的快速以太網(wǎng)控制器(FEC)使用了描述符結(jié)構(gòu)。描述符中包含了緩沖區(qū)首地址、數(shù)據(jù)長度、狀態(tài)和控制信息等。發(fā)送和接收描述符分別在兩個環(huán)形結(jié)構(gòu)中運行。在FEC 中可以分別設(shè)置發(fā)送和接收描述符的起始地址。每個環(huán)形結(jié)構(gòu)中的最后一個描述符由“Wrap”位進行定義。如果FEC 檢測到該位被定義,則下一個描述符位于環(huán)形結(jié)構(gòu)的開始位置,否則下一個描述符位于本次描述符的鄰接位置。

當任務(wù)需要發(fā)送以太網(wǎng)數(shù)據(jù)時,首先獲取一個空閑的發(fā)送數(shù)據(jù)描述符,在該描述符中填寫數(shù)據(jù)長度和數(shù)據(jù)起始地址,如果待發(fā)送數(shù)據(jù)由多個緩沖區(qū)組成,則需要按照發(fā)送順序依次填寫與緩沖區(qū)個數(shù)相同的描述符。之后,按照數(shù)據(jù)發(fā)送相反的順序,依次對發(fā)送數(shù)據(jù)描述符進行使能。最后,通知FEC 根據(jù)定義的描述符開始發(fā)送數(shù)據(jù)。以太網(wǎng)發(fā)送數(shù)據(jù)流程如圖7 所示。

圖7 以太網(wǎng)發(fā)送流程

由于本文使用了嵌入式操作系統(tǒng)μC/OS-Ⅲ,因此本文使用了一個專門的接收線程接收來自以太網(wǎng)控制器的數(shù)據(jù)。在以太網(wǎng)接收中斷函數(shù)中,向接收線程發(fā)送信號量,并清除相應(yīng)的中斷標志位,而后中斷服務(wù)函數(shù)立即返回。而接收線程一直判斷是否收到該信號量,如果收到信號量,則從以太網(wǎng)控制器中讀取接收到的數(shù)據(jù),并發(fā)送給協(xié)議棧進行處理。以太網(wǎng)接收任務(wù)流程如圖8 所示。

圖8 以太網(wǎng)接收任務(wù)流程

3 測試驗證

3.1 CAN 通信測試

為了驗證所提系統(tǒng)性能, 使用USBCAN-4E-U 和USBCAN-2E-U 兩種高性能USB 轉(zhuǎn)CAN 接口卡對整個系統(tǒng)CAN 通信狀態(tài)進行監(jiān)控。使用USBCAN-4E-U 的CAN0 ~CAN3 分別連接網(wǎng)關(guān)的CAN0 ~CAN3,使 用USBCAN-2E-U 的CAN0 和CAN1 分別連接 網(wǎng)關(guān)的CAN4 和CAN5。網(wǎng)關(guān)控制器配置中繼轉(zhuǎn)發(fā)功能,CAN0 收到的數(shù)據(jù)轉(zhuǎn)發(fā)CAN1,CAN1 收到的數(shù)據(jù)轉(zhuǎn)發(fā)CAN0,CAN2 收到的數(shù)據(jù)轉(zhuǎn)發(fā)CAN3,CAN3 收到的數(shù)據(jù)轉(zhuǎn)發(fā)CAN2,CAN4 收到的數(shù)據(jù)轉(zhuǎn)發(fā)CAN5,CAN5 收到的數(shù)據(jù)轉(zhuǎn)發(fā)CAN4。當總線負載率為49.465 0%時,網(wǎng)關(guān)控制器轉(zhuǎn)發(fā)功能工作正常,如圖9 所示。

圖9 網(wǎng)關(guān)控制器轉(zhuǎn)發(fā)功能工作正常

3.2 以太網(wǎng)通信測試

使用JPERF 工具對以太網(wǎng)通信進行測試,結(jié)果如圖10所示。通過圖10 可以看到,傳輸速率穩(wěn)定在88 Mb/s 左右。

圖10 傳輸速率曲線圖

4 結(jié) 語

本文提出一種基于μC/OS-Ⅲ的車載網(wǎng)關(guān)控制器設(shè)計方案。為提高網(wǎng)關(guān)的安全性,本文引入了嵌入式操作系統(tǒng)μC/OS-Ⅲ對網(wǎng)關(guān)控制器的任務(wù)進行調(diào)度,增強處理器對外部事件的處理能力。采用MPC5646 作為網(wǎng)關(guān)的核心處理器。對于車載網(wǎng)關(guān)控制器所要求的報文轉(zhuǎn)發(fā)功能,在CAN 總線負載率為49.465 0%時,能夠滿足6 路CAN 同時工作并轉(zhuǎn)發(fā)報文,以太網(wǎng)傳輸速率能夠穩(wěn)定在88 Mb/s 左右。

主站蜘蛛池模板: 国产欧美日韩综合在线第一| 999国内精品视频免费| 找国产毛片看| 久久国产毛片| 亚洲va在线观看| 国产在线观看一区精品| 国产精品久久久精品三级| 福利国产微拍广场一区视频在线| 亚洲AⅤ无码日韩AV无码网站| 呦女精品网站| 91无码网站| 9久久伊人精品综合| 欧美日韩亚洲综合在线观看| 国产精品视频观看裸模| 91精品日韩人妻无码久久| 亚洲女人在线| www亚洲天堂| 成人免费黄色小视频| 国国产a国产片免费麻豆| 久久免费观看视频| 波多野结衣久久精品| 日韩人妻无码制服丝袜视频| 久久久成年黄色视频| 亚洲日本中文字幕乱码中文 | 亚洲91精品视频| 日韩毛片免费| 尤物精品视频一区二区三区| 亚洲大学生视频在线播放| 久久久久久国产精品mv| 中文字幕欧美日韩| 国内精自线i品一区202| 成人另类稀缺在线观看| 亚洲一级毛片在线观播放| 99在线观看精品视频| 日本欧美一二三区色视频| 精品视频在线观看你懂的一区| 成人看片欧美一区二区| 永久免费av网站可以直接看的| 成AV人片一区二区三区久久| 国产麻豆91网在线看| 国产精品无码AⅤ在线观看播放| 99视频精品全国免费品| 国产精品黄色片| 久视频免费精品6| 日本精品αv中文字幕| 国产成人在线无码免费视频| 欧美精品成人一区二区视频一| 亚洲最大看欧美片网站地址| 欧美天天干| 久久国产精品嫖妓| 欧美亚洲第一页| 夜夜爽免费视频| 999国产精品| 91色在线观看| 狠狠色丁香婷婷| 青青青草国产| 国产一区二区丝袜高跟鞋| 天天操天天噜| 青草免费在线观看| 天天色天天综合| 小说 亚洲 无码 精品| 亚洲免费福利视频| 国产免费久久精品99re丫丫一| 日本午夜三级| 亚洲欧洲自拍拍偷午夜色无码| 中文字幕66页| 91无码视频在线观看| 亚洲国产中文欧美在线人成大黄瓜| 亚洲无码一区在线观看| 国产尹人香蕉综合在线电影| 2022国产无码在线| 香蕉视频在线观看www| 久久亚洲精少妇毛片午夜无码| 日韩成人免费网站| 天天综合天天综合| 色AV色 综合网站| 欧美一区精品| 欧美日韩va| 亚洲欧美综合精品久久成人网| 一级成人a毛片免费播放| 亚洲视频免| 日韩欧美网址|