基于VxWorks的雙485口管理系統(tǒng)設計_第1頁
基于VxWorks的雙485口管理系統(tǒng)設計_第2頁
基于VxWorks的雙485口管理系統(tǒng)設計_第3頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于VxWorks的雙485口管理系統(tǒng)設計

摘要:VxWorks嵌入式操作系統(tǒng)具有高效的實時任務管理與調度、任務的同步與通信、內存管理、I/O管理、時鐘管理等機制。兩個485口在通信速率、工作模式、控制方式上有較大差別且系統(tǒng)死線要求嚴格。詳細介紹了VxWorks下雙485口串行通信系統(tǒng)BSP、驅動程序和應用程序的開發(fā)過程?;赩xWorks構建的嵌入式串行通信系統(tǒng)實時性好,效率高,可根據(jù)硬件進行優(yōu)化配置;利用VxWorks的I/O系統(tǒng)將驅動程序作為內核過程,設備作為特殊文件處理,解決了工作方式不同的兩個485口的驅動程序開發(fā)和接口統(tǒng)一問題。關鍵詞:通信系統(tǒng);嵌入式串行通信引言VxWorks是美國WindRiver公司專門為嵌入式微處理器設計的一種高模塊化、高性能的實時多任務操作系統(tǒng),具有很好的安全性、可靠性及系統(tǒng)靈活性[1-2]。該系統(tǒng)要求兩個485端口波特率分別為460.8kb和614.4kb;工作方式分別為程序查詢式和中斷驅動式;代寫論文握手方式和通信控制方式也完全不具有相對的獨立性和“并發(fā)性”,而且各個任務根據(jù)不同的“緊迫感”應具有不同的優(yōu)先級。根據(jù)以上多方面的要求和特點,基于優(yōu)先級搶占式的多任務實時操作系統(tǒng)VxWorks是該系統(tǒng)的首選[3]。本文以研制某型訓練裝備為背景,詳細介紹了基于VxWorks的雙485口通信系統(tǒng)設計方法和過程。1串口通信基本原理串口通信作為最常用的通信方式,用途非常廣泛,驅動易于編寫,被絕大多數(shù)操作系統(tǒng)默認支持。其基本功能是實現(xiàn)和串行設備間的編碼轉換發(fā)送數(shù)據(jù)時,字節(jié)數(shù)據(jù)經(jīng)CPU通過通用異步接收發(fā)送器(簡稱UART)轉換為串行位,從串行端口發(fā)送出去;接收數(shù)據(jù)時,串行位通過UART被轉換為字節(jié)數(shù)據(jù),并放入緩沖區(qū),由CPU讀取。通過對UART的內部寄存器的控制實現(xiàn)字節(jié)數(shù)據(jù)和位數(shù)據(jù)的轉換和通信。通信時,UART按初始化設置,把起始位、校驗位和停止位加到來自CPU的8位數(shù)據(jù)上,然后按設置的波特率把這個二進制位串發(fā)送到串行通信線上,如圖1所示;同樣,UART能自動從通信線上接收串行數(shù)據(jù),并取出有效的數(shù)據(jù)位,然后轉換成數(shù)據(jù)字符存入接收數(shù)據(jù)寄存器。2串行通信軟件設計該軟件以WindRiver的TornadoII集成開發(fā)環(huán)境為平臺進行開發(fā)。包括BSP開發(fā)、驅動程序開發(fā)、應用程序開發(fā)等步驟。2.1BSP開發(fā)BSP(BoardSupportPacket,板級支持包)是介于底層硬件和上層軟件之間的底層軟件開發(fā)包。它來源于嵌入式操作系統(tǒng)與硬件無關的設計思想[2,4]。操作系統(tǒng)被設計運行在虛擬的硬件平臺上,對于具體的硬件平臺,與硬件相關的代碼都被封裝在BSP中。它主要功能為屏蔽硬件,提供操作系統(tǒng)的驅動及硬件驅動。它的主要功能包括:系統(tǒng)引導時,初始化目標機硬件;提供目標系統(tǒng)上的驅動程序,如定時器、串口等[2,6]。開發(fā)BSP,主要以目標板CPU的BSP文件為模板,建立工程并修改相關源文件。BSP文件在vx-works/target/config/all和vxworks/target/config/bsp-name文件夾里。其中,all文件夾里的文件是所有BSP的通用文件,bspname文件夾的文件是用戶自己定制的BSP文件。該系統(tǒng)采用PentiumCPU,因此以vxworks/target/config/pcPentium文件夾里的文件為模板進行修改,開發(fā)過程如下。系統(tǒng)配置在config/all目錄包含的文件中完成。需要配置的頭文件有target/config/all/configAll.h和arget/config/pcPentium/config.h;需要配置的模塊文件有target/config/all/usrconfig.c和target/src/config目錄下的初始化模塊。配置頭文件主要利用定義(#define)和去除定義(#undef)實現(xiàn)。ConfigAll.h是全局配置頭文件,包括所有目標系統(tǒng)公用的配置參數(shù)默認定義,一般不修改此文件,而在Config.h中重新定義。以配置引導程序為例:該系統(tǒng)開發(fā)過程中使用串口(此串口為目標機開發(fā)板上的串口)調試VxWorks映像,端口1作為WDB代理通信通道,不設目標機控制臺通#defineN-UART-CHANNELS2這樣,宿主機和目標機通過一根串口線連接,VxWorks映像文件從目標機軟盤上加載,宿主機通過串口來調試目標機上的VxWorks。在config.h中修改如下內容,同時在Makefile里配置ROM起始地址(ROM-BASE-ADRS)、代碼段入口(ROM-TEXT-ADRS)、ROM大小(ROM-SIZE)、VxWorks映像加載地址(RAM-LOW-ADRS)和BootROM加載地址(RAM-HIGH-ADRS)。該系統(tǒng)對模塊文件usrconfig.c和target/src/config目錄下的初始化模塊無需作修改[2]。2.2串口驅動程序開發(fā)VxWorks操作系統(tǒng)有兩種方式實現(xiàn)驅動。1)把設備驅動程序作為獨立任務實現(xiàn),直接在頂層任務中實現(xiàn)硬件操作,完成特有專用的驅動程序。2)VxWorks的I/O系統(tǒng)將設備程序作為內核過程實現(xiàn)。這種方式便于實現(xiàn)I/O子系統(tǒng)的層次模型,便于文件系統(tǒng)一起把設備作為特殊文件處理,提供統(tǒng)一的管理、統(tǒng)一的界面和統(tǒng)一的使用方法,并把設備、文件及網(wǎng)絡通信組織成為一致的更高層次的抽象,為用戶提供統(tǒng)一的系統(tǒng)服務和用戶接口。采用這種驅動方式,向上將TTY設備安裝到標準的I/O系統(tǒng)中,上層應用通過標準的I/O接口完成對硬件設備的操作,向下提供對實際硬件設備的底層設備驅動程序[7-8。串口1、串口2均采用82C52芯片作為UART。根據(jù)上位機的工作方式,端口1采用硬件握手中斷驅動方式,有5根信號線:2根數(shù)據(jù)傳輸線(TXD、RXD),2根握手線(CTS、RTS)和1根地線。端口2采用軟件握手查詢工作方式,有3根信號線:2根數(shù)據(jù)傳輸線(TXD、RXD)和1根地線。各端口的默認字長均為8位、停止位2位、奇偶校驗位1位、端口1默認波特率為614.4kbps,端口2默認波特率為460.8kbps。首先構造設備描述符結構體,設備描述符保存了與設備相關聯(lián)的數(shù)據(jù),它必須以設備頭(DEV-HDR)結構為開頭。由于2個端口的工作方式完全不同,且無法預測數(shù)據(jù)傳輸?shù)南群箜樞蚝蛡鬏敃r機,2個端口的數(shù)據(jù)接收函數(shù)必須分開編寫,其中uartRecQuery()函數(shù)用于端口2的查詢工作方式;uartRecData()函數(shù)用于端口1的中斷握手方式,其優(yōu)先級高于uartRecQuery()函數(shù)。但數(shù)據(jù)發(fā)送函數(shù)可以合并,因為對于單處理器而言,是不可能實現(xiàn)真正的多任務并行處理的,即使編寫成兩個并行任務,也是在處理器的控制下,按時間片輪轉執(zhí)行的。這樣不僅不能提高執(zhí)行效率,反而會因為任務上下文切換造成一定的資源浪費,影響系統(tǒng)實時性。這種情況,更適合采用面向過程的方法對程序進行設計和優(yōu)化。下面對其進行說明:調用后,其首先檢測輸入?yún)?shù)是否合法,而后根據(jù)端口號選擇工作方式(中斷或查詢),作相應操作,開始發(fā)送數(shù)據(jù),每發(fā)送一個字節(jié)檢測并等待TBRE(發(fā)送緩沖寄存器空)信號變?yōu)橛行?,再發(fā)送下一字節(jié),數(shù)據(jù)全部發(fā)送完畢后函數(shù)返回。其工作流程如驅動程序開發(fā)完成后,在usrConfig.c文件的usrRoot()函數(shù)里,調用API函數(shù)iosDrvInstall()對以上驅動程序分別進行安裝,再初始化設備描述符,并用iosDevAdd()將設備增加到設備列表中,最后將設備置為中斷模式。以上操作完成后即可用標準I/O函數(shù)操作兩個不同的串口設備2.3串口通信應用程序設計數(shù)據(jù)通信按幀進行,幀分為命令幀和應答幀。幀格式為命令幀:命令碼長度參數(shù)串異或應答幀:應答碼長度參數(shù)串異或

對于多字節(jié)參數(shù),按高字節(jié)在前,低字節(jié)在后的次序發(fā)送。數(shù)據(jù)采用二進制16位有符號整數(shù)數(shù)據(jù)格式。其中,最高位為符號位,數(shù)據(jù)為二進制格式。數(shù)據(jù)傳輸時,上位機首先發(fā)送一個命令幀,包含數(shù)據(jù)包個數(shù)、最后一個數(shù)據(jù)包的字節(jié)數(shù),除最后一個數(shù)據(jù)包外,每包大小為16kB。模擬器收到后,回復應答幀并將收到的數(shù)據(jù)包個數(shù)、最后一個數(shù)據(jù)包的字節(jié)數(shù)一同發(fā)回校驗,對幀長度校驗無誤后開始發(fā)送數(shù)據(jù)。由于傳輸數(shù)據(jù)量較大,一般校驗方法進行內容誤判率高,不能糾錯,大多數(shù)情況下需要重新發(fā)送,非常費時。循環(huán)冗余校驗法(CRC)由于實現(xiàn)簡單,檢錯能力強,并能糾錯,可以較好地解決這個問題。該系統(tǒng)采用CRC16進行校驗[9]。3結論串行通信以其網(wǎng)絡連接方便、抗干擾性能好、傳輸距離遠等優(yōu)點,在嵌入式系統(tǒng)得到廣泛

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論