<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è) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM LPC2292 的CAN總線(xiàn)和以太網(wǎng)間的網(wǎng)關(guān)設計

基于A(yíng)RM LPC2292 的CAN總線(xiàn)和以太網(wǎng)間的網(wǎng)關(guān)設計

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

  3.2 系統構成

  嵌入式的功能主要是進(jìn)行數據報文和 數據幀之間的協(xié)議轉換,實(shí)現 的互連;其次是根據應用環(huán)境,通過(guò)人機交互接口改變的IP 地址和 的波特率。整個(gè)嵌入式系統的構成如圖3 所示。在進(jìn)行任務(wù)之前的前期工作有:

 ?、?實(shí)時(shí)操作系統的移植。μC/OS-II 可以在絕大多數8 位、16 位、32 位、以至64 位微處理器、微控制器、數字信號處理器(DSP)上運行。μC/OS-II 在 上的移植可參考文獻[1]。

 ?、?TCP/IP 協(xié)議和CAN 協(xié)議的嵌入。由于μC/OS-II 操作系統只包含了實(shí)時(shí)內核、任務(wù)管理、時(shí)間管理、任務(wù)間的通信同步(信號量、郵箱、消息隊列)和內存管理等功能,所以用戶(hù)必須根據自己的需要添加一些功能模塊。將TCP/IP 和CAN 協(xié)議嵌入到操作系統中,并提供一些API 接口函數供用戶(hù)調用。

  3.3 系統實(shí)現

  采用RTOS 使整個(gè)簡(jiǎn)單且易調試,各個(gè)任務(wù)相互獨立,而且各個(gè)任務(wù)具有不同的優(yōu)先級可以保證緊急任務(wù)及時(shí)響應,從而能有效地對任務(wù)進(jìn)行調度。系統軟件設計由操作系統和一系列用戶(hù)應用程序構成。 主函數是程序首先執行的一個(gè)函數。該函數永遠不返回,主要實(shí)現系統的硬件(包括中斷、鍵盤(pán)、顯示等)和操作系統(包括任務(wù)控制塊、事件控制塊)的初始化,而且在啟動(dòng)多任務(wù)調度之前,必須至少創(chuàng )建一個(gè)任務(wù)。在本系統中創(chuàng )建了一個(gè)啟動(dòng)任務(wù),主要負責時(shí)鐘的初始化和啟動(dòng)、中斷的啟動(dòng)、CAN 控制器的初始化與啟動(dòng)、端口與IP 地址的初始化和RTL8019 的初始化與啟動(dòng),并且對各個(gè)應用任務(wù)進(jìn)行了劃分。在交出CPU 的使用權之后自做一些空閑處理。

  3.3.1 任務(wù)的劃分

  要完成多任務(wù)系統的各種功能必須對任務(wù)進(jìn)行劃分。本程序根據各個(gè)任務(wù)的重要性和實(shí)時(shí)性,把整個(gè)模塊分成7 個(gè)具有不同優(yōu)先級的應用任務(wù):系統監控、CAN 數據發(fā)送、鍵盤(pán)掃描、數據發(fā)送、協(xié)議轉換、LED顯示、系統配置等。表1 所示為任務(wù)劃分表。

表1 任物劃分表

除了7 個(gè)主要應用任務(wù)之外,還有兩個(gè)中斷服務(wù)子程序:一個(gè)時(shí)鐘節拍中斷,提供周期性信號源;另一個(gè)接收中斷,把接收到的數據寫(xiě)入緩沖區。

  3.1.2 任務(wù)的具體實(shí)現任務(wù)劃分后,各任務(wù)具有獨立的堆??臻g,彼此爭奪CPU 的使用權。一旦獲得CPU 的使用權,就會(huì )獨立運行而完成特定的功能。

  CAN 通信模塊包括數據傳輸和總線(xiàn)管理兩個(gè)部分。數據傳輸實(shí)現的功能有CAN 初始化、CAN 報文發(fā)送和CAN 報文接收。CAN 初始化及報文的接收在啟動(dòng)任務(wù)與中斷服務(wù)程序中實(shí)現,CAN 報文發(fā)送和總線(xiàn)管理作為一個(gè)單獨的任務(wù)獨立運行??偩€(xiàn)管理功能塊實(shí)現的主要是總線(xiàn)檢測,判斷一路總線(xiàn)是否良好。如果不是,就進(jìn)入另一路總線(xiàn)檢測;如果冗余總線(xiàn)良好,就采用冗余總線(xiàn)通信。CAN 數據發(fā)送任務(wù)需要系統調度器通知是否有待發(fā)送數據進(jìn)入發(fā)送隊列,任務(wù)的實(shí)現如圖4 所示。

圖4 數據發(fā)送任務(wù)實(shí)現圖

  以太網(wǎng)通信模塊由以太網(wǎng)數據收發(fā)功能塊和數據協(xié)議管理功能塊構成。數據的收發(fā)功能塊主要實(shí)現RTL8019 的初始化、數據報文的發(fā)送與接收。同理,RTL8019 的初始化在系統的啟動(dòng)任務(wù)中實(shí)現。數據的接收在RTL8019 的中斷服務(wù)程序中實(shí)現。數據協(xié)議管理主要實(shí)現對接收數據報文的解析,以及給待發(fā)送數據添加協(xié)議報頭。以太網(wǎng)數據發(fā)送與協(xié)議管理分別作為獨立任務(wù)運行。

  以太網(wǎng)數據發(fā)送任務(wù)同樣需要系統調度器通知發(fā)送隊列中是否有待發(fā)送的數據。若沒(méi)有數據發(fā)送,則將 該任務(wù)掛起,系統運行其他任務(wù)。以太網(wǎng)數據發(fā)送任務(wù)通過(guò)對RTL8019 的操作完成,根據RTL8019 的狀態(tài),將發(fā)送隊列中數據通過(guò)DMA 傳送到8019 的發(fā)送緩沖區啟動(dòng)發(fā)送,并根據發(fā)送結果,對發(fā)送隊列指針進(jìn)行調整。


  以太網(wǎng)協(xié)議管理即協(xié)議轉換任務(wù)在用戶(hù)數據與8019 驅動(dòng)需要的數據報文之間進(jìn)行協(xié)議轉換。TCP/IP 協(xié)議為應用層、傳輸層、網(wǎng)絡(luò )層和數據鏈路層等4 層模型,每層具有不同的功能,并對應相應的子協(xié)議,而且層與層之間在邏輯上是相互獨立的。在編程時(shí),可以直接調用嵌入的TCP/IP 協(xié)議的API 函數對數據報文進(jìn)行分層。該任務(wù)對從8019 傳過(guò)來(lái)的數據處理示意圖如圖5 所示。不同的子協(xié)議具有不同的功能號,任務(wù)根據功能號對協(xié)議進(jìn)行區別。把用戶(hù)數據傳遞給8019 驅動(dòng)的示意圖是圖5 的逆序表示。

圖5 協(xié)議轉換任務(wù)的數據處理的示意圖

  3.3.3 任務(wù)間的同步與調度

  通常多任務(wù)操作系統的任務(wù)不同于一般的函數,它是一個(gè)無(wú)限循環(huán),而且沒(méi)有返回值。如果沒(méi)有更高優(yōu)先級的任務(wù)進(jìn)入就緒態(tài),當前任務(wù)是不會(huì )放棄對CPU 的使用權的。為了實(shí)現操作系統的正常運行和有關(guān)事件的同步,必須正確處理任務(wù)間的通信和事件標志的設置。整個(gè)系統的功能結構如圖6 所示。

圖6 系統運行示意圖

  各個(gè)任務(wù)具有不同的優(yōu)先級,通過(guò)調用系統掛起函數或延時(shí)函數可以啟動(dòng)具有更高優(yōu)先級的進(jìn)入就緒態(tài)的任務(wù)。高優(yōu)先級的任務(wù),例如1、2、3、4 號任務(wù),往往由于申請某個(gè)資源而發(fā)生阻塞,進(jìn)入掛起態(tài)。系統調度器啟動(dòng)低優(yōu)先級的任務(wù),通過(guò)對延時(shí)參數的設置,每隔一定時(shí)鐘節拍就啟動(dòng)鍵盤(pán)掃描或LED 顯示任務(wù)。如果其中有任何一事件發(fā)生就啟動(dòng)相關(guān)的任務(wù),這個(gè)過(guò)程通過(guò)信號量的通信機制來(lái)實(shí)現。對每一個(gè)事件分配一個(gè)信號量,一旦事件發(fā)生就啟動(dòng)信號量的等待任務(wù)列表中進(jìn)入就緒態(tài)的任務(wù),從而保證任務(wù)與事件的同步。

  4 結束語(yǔ)

  在嵌入式硬件平臺的基礎上,用μC/OS-II 實(shí)時(shí)操作系統開(kāi)發(fā)應用程序有其獨到之處,用戶(hù)可以直接利用系統的接口函數編寫(xiě)自己的應用程序,毋需另行開(kāi)發(fā),大大方便了用戶(hù)編程,縮短了軟件的開(kāi)發(fā)周期,提高了開(kāi)發(fā)效率; CAN 總線(xiàn)和以太網(wǎng)間的網(wǎng)關(guān),在實(shí)驗調試過(guò)程中運行狀況良好,工作穩定。

tcp/ip相關(guān)文章:tcp/ip是什么



上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>