基于LXI總線的1553B通訊模塊設計與開發(fā)
2.5 1553B接口設計
BU-61580與控制器的接口形式非常靈活,本文根據(jù)需求和資源情況選擇16位緩沖連接方式。為了提高本模塊的抗干擾性,論文采用變壓器耦合方式。BU-61580的外圍電路連接圖如圖5所示。
3 模塊軟件設計與開發(fā)
3.1 軟件結(jié)構(gòu)設計
軟件結(jié)構(gòu)層次由NiosII處理器系統(tǒng)硬件、設備驅(qū)動程序、HAL API、μC/OSII、LwIP協(xié)議棧、系統(tǒng)初始化和應用程序7部分組成,如圖6所示。本文引用地址:http://butianyuan.cn/article/154578.htm
1)NiosII處理器系統(tǒng)硬件:模型的核心,包括在FPGA中實現(xiàn)的NiosII軟核處理器和硬件外設;2)設備驅(qū)動程序:管理以太網(wǎng)、1553B組件和其它外設的軟件函數(shù);3)HAL API:硬件抽象層應用程序接口,對設備驅(qū)動程序提供標準化的接口,對外層提供類似于POSIX的API;4)μC /OSII:實時操作系統(tǒng)層,為LwIP協(xié)議棧、1553B任務和嵌入式Web任務提供多任務和任務間通訊服務;5)LwIP協(xié)議棧:通過套接字API為應用程序和應用系統(tǒng)初始化提供網(wǎng)絡服務;6)系統(tǒng)初始化:包括μC/OSII、LwIP協(xié)議棧和1553B組件初始化函數(shù),也包括所有應用程序的任務、信號量、隊列和事件性標志等實時操作系統(tǒng)任務間通訊資源的創(chuàng)建;7)應用程序:最外一層是建立的各項應用任務。
應用程序工作過程如下:首先進行系統(tǒng)初始化,然后進入工作等待狀態(tài)。以太網(wǎng)任務等待客戶端通過以太網(wǎng)發(fā)來的數(shù)據(jù)包,當有數(shù)包到達時,經(jīng)物理層處理后交于TCP/IP層處理。在TCP/IP協(xié)議層之上,建立了3個套接字接口來偵聽套接字連接:嵌入式Web端口、PING端口和1553B端口。對于1553B任務,根據(jù)客戶端不同的請求,將啟動不同的任務來完成相應的數(shù)據(jù)命令的發(fā)送或狀態(tài)的讀取。
3.2 基于μC/OSII的LwIP協(xié)議實現(xiàn)
輕量型IP(Light Weight IP,LwIP)協(xié)議是用于嵌入式系統(tǒng)開放源代碼的TCP/IP協(xié)議棧。LwIP在保持TCP協(xié)議主要功能的基礎(chǔ)上減少對RAM的占用,非常適合在嵌入式系統(tǒng)中使用。
LwIP協(xié)議棧在設計時就考慮了移植問題,把所有與硬件、OS和編譯器相關(guān)的部分獨立了出來,因此LwIP在μC/OSII上移植只需修改目錄下的文件即可。
3.3 1553B總線協(xié)議任務的實現(xiàn)
為方便對BU-61580芯片操作,開發(fā)了BU-61580的驅(qū)動程序。驅(qū)動程序包括BU-61580芯片的初始化函數(shù)、BC發(fā)送接收命令函數(shù)、BC發(fā)送發(fā)送命令函數(shù)、BC發(fā)送接收/發(fā)送命令函數(shù)、BC發(fā)送不帶數(shù)據(jù)字的方式命令函數(shù)和BC發(fā)送帶數(shù)據(jù)字的方式命令函數(shù)。
參考嵌入式Web服務器的實現(xiàn)方式,基于LwIP和μC/OSII建立了端口號為8000的1553B套字接口任務,流程如圖7所示。
首先建立1553B任務接口守護進程,創(chuàng)建TCP套接字,綁定端口,將TCP套接字轉(zhuǎn)換成偵聽套接字,進入循環(huán)結(jié)構(gòu),等待接受用戶的連接請求。當有客戶端請求連接端口8000時,調(diào)用套接字數(shù)據(jù)接收函數(shù)recv()將客戶端發(fā)送的數(shù)據(jù)讀取過來,將數(shù)據(jù)映射到定義的結(jié)構(gòu)體變量alt_avalon_BU61580*bdev上;用請求解析函數(shù)int 1553B_request(alt_avalon BU61580*bdev)根據(jù)messagemode判斷需要采取什么操作方式:然后BU-61580的發(fā)送數(shù)據(jù)函數(shù)將數(shù)據(jù)內(nèi)容寫到相應的寄存器或存儲器內(nèi),啟動BC發(fā)送;如果調(diào)用讀取數(shù)據(jù)函數(shù),則將存儲器或寄存器地址傳遞給讀取函數(shù),將讀取到的數(shù)據(jù)調(diào)用函數(shù)int 1553B_transmit(bdev[i],i)經(jīng)以太網(wǎng)打包后發(fā)送給客戶端。
4 儀器驅(qū)動程序開發(fā)
儀器驅(qū)動程序是介于上層用戶應用程序和底層儀器硬件之間的一組函數(shù),用戶在開發(fā)上層應用程序時,可以調(diào)用這些基本動作函數(shù)來使用儀器,而無須與底層硬件通訊。
參閱VPP規(guī)范,模塊提供了基于VISA函數(shù)的儀器驅(qū)動程序。通過調(diào)用VISA函數(shù),向模塊發(fā)送命令來完成模塊的功能。開發(fā)環(huán)境為LabWindo ws/CVI,而選用Agilent VISA作為VISA函數(shù)庫,主要是考慮Agilent是LxI總線的發(fā)起者,而且其提供的Agilent I/O Libraries封裝了許多關(guān)于LxI的功能。VISA函數(shù)所用的LxI儀器描述符有兩種:
1)對于VXI-11規(guī)范為:TCPIPO::192.168.4.10::instO::INSTR;
2)對于Sockets接口為:TCPIPO::192.168.4.10::8000::SOCKET。
其中192.168.4.10為模塊地址(非固定),8000為1553B接口任務的端口號。開發(fā)的驅(qū)動程序以動態(tài)鏈接庫形式提供給上層應用程序使用。
tcp/ip相關(guān)文章:tcp/ip是什么
評論