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

?

基于ARM&FPGA的1394仿真測試前端系統(tǒng)設計

2016-11-17 10:12馬云云王金波
計算機測量與控制 2016年3期
關鍵詞:內核數據包嵌入式

蘇 宇,孔 璐,周 珊,馬云云,王金波

(中國科學院 空間應用工程與技術中心,北京 100094)

?

基于ARM&FPGA的1394仿真測試前端系統(tǒng)設計

蘇 宇,孔 璐,周 珊,馬云云,王金波

(中國科學院 空間應用工程與技術中心,北京 100094)

針對在航天嵌入式軟件測試中遇到的將1394總線仿真測試融合到分布式測試系統(tǒng)中的實際需求,提出了一種基于ARM&FPGA架構的1394仿真測試前端系統(tǒng);在簡單介紹了1394總線和分布式測試系統(tǒng)后,設計和實現(xiàn)了1394仿真測試前端軟硬件,并基于此前端構建分布式仿真測試系統(tǒng);經測試,1394仿真測試前端滿足1394等時數據包和異步數據包的收發(fā)時序要求,并成功應用于某航天器軟件第三方評測中。

IEEE1394協(xié)議;ARM;現(xiàn)場可編程門陣列;分布式系統(tǒng)

0 引言

近年來,伴隨著載人航天技術的飛速發(fā)展,系統(tǒng)的復雜度越來越高,對各個子系統(tǒng)之間的數據傳輸速率的要求也在不斷提高;而且隨著航天器上的載荷設備進行的科學探測和科學實驗的越來越豐富和深入,對數據通信速率的要求也隨之提高,原有的1553B總線的1 Mbps的傳輸速率已經無法滿足高速數據通信要求。IEEE1394是一種高速串行總線,一項與平臺無關的技術,可以應用于各種設備和PC機中,憑借這種與眾不同的跨平臺能力,得到了眾多的IT廠商(Microsoft和Intel)的大力支持[1]。但是在目前的市面上眾多的嵌入式IEEE1394開發(fā)系統(tǒng)中,幾乎都是通用設備,接口較為單一,用戶軟件操作界面較為復雜。有時候為了完成實際的任務,不得不花費較大的精力去學習和配置用戶軟件;甚至有時候還無法將其完美融入到現(xiàn)有的仿真測試系統(tǒng)中,對重新構建分布式集成測試系統(tǒng)也會有較大影響。

綜上所述,本文在對IEEE1394總線協(xié)議以及分布式集成測試系統(tǒng)結構簡單分析的基礎上,由配置項級的航天嵌入式軟件第三方測試中關于IEEE1394總線的具體測試需求,設計了IEEE1394總線仿真測試前端系統(tǒng),屆時IEEE1394總線數據幀和任務調度運行于移植了嵌入式Linux操作系統(tǒng)的ARM11(S3C6410)處理器中,以ARM+FPGA為硬件核心的控制處理器就可以根據仿真監(jiān)控測試系統(tǒng)的測試指令[2],實現(xiàn)靈活對IEEE1394協(xié)議芯片的初始化、工作模式以及消息進行配置,測試人員只要根據測試需求,通過在監(jiān)顯控制終端配置一系列指令就可以完成對IEEE1394總線設備的功能測試、強度測試以及故障測試等。

1 IEEE1394總線簡介

IEEE1394是一種高速串行總線,也稱“火線(FireWire)”,其最早由Apple公司在20世紀80年代主導開發(fā)的一種高速實時數據傳輸總線,意在簡化其計算機的連線。在1995年由IEEE(電氣與電子工程師協(xié)會)正式制定為總線標準,被認定為IEEE1394-1995規(guī)范,即IEEE1394[3]。IEEE1394早期版本如IEEE1394a在Backplace模式下支持12.5 Mbps、25 Mbps以及50 Mbps等傳輸速率,在Cable模式下則可以達到400 Mbps的速率;而在后來發(fā)布的新版本如IEEE1394b,傳輸速率則可達到800 Mbps;在2007年更新的IEEE1394c規(guī)范中傳輸速率則可達到1.6 Gbps和3.2 Gbps。

IEEE1394是一項成熟的技術,幾乎被所有現(xiàn)代操作系統(tǒng)所支持[4],廣泛應用于數碼相機、數字攝像機、電視機頂盒以及計算機及其外部設備中。其中IEEE1394b還被用于F-22猛禽戰(zhàn)斗機和F-35閃電II攻擊戰(zhàn)斗機數據總線中[5]。此外,美國國家極軌道軍事環(huán)境衛(wèi)星系統(tǒng)(NPOESS)和地球行星探測器(FPT)等航天器都采用了IEEE1394總線進行設備間的通信。

IEEE1394串行總線支持等時傳輸和異步傳輸,分別用于等時事務和異步事務的傳輸[6]。異步傳輸不占據固定的帶寬, 但能保證節(jié)點獲得時間上的公平訪問;等時傳輸以固定的時間間隔(125 μs)發(fā)送數據,有著高于異步傳輸的優(yōu)先級[7]。

IEEE1394總線根據協(xié)議可以分為4個部分,即物理層、鏈路層、事物層以及總線管理層。物理層的作用是提供設備間的電氣連接以及機械連接,主要特點是提供邏輯信號到物理電氣信號的轉換[8]。鏈路層的主要功能是轉化數據流格式使其按照協(xié)議成為總線可以識別的數據包[9]。鏈路層也對進來的等時包或異步包進行地質或信道號的解碼,以及CRC校驗[10]。事務層只處理異步包,提供讀事物、寫事物以及鎖定事物等操作[11],但是不提供任何有關等式傳輸的服務??偩€管理層的主要功能是對總線進行配置,并管理各個節(jié)點[12],同時設定自身的傳輸速度和工作模式等。

2 仿真測試系統(tǒng)概述

分布式仿真測試平臺——DSTP (distributed simulation testing platform)是采用半實物仿真原理,通過對被測試的目標板進行仿真,模擬出被測目標的運作環(huán)境,從而實現(xiàn)對被測試目標系統(tǒng)進行動態(tài)、閉環(huán)、非侵入式的系統(tǒng)仿真測試[13]。

一般來說,DSTP主要由測試服務器、嵌入式測試前端、被測設備以及監(jiān)顯控制終端等構成。如圖1所示。

圖1 分布式仿真測試系統(tǒng)結構圖

監(jiān)顯和控制終端的功能:

1)調用測試數據庫中已構建好的測試指令序列,完成對測試數據和測試指令的配置操作,發(fā)起測試行為;

2)測試結果數據的回顯及回放:即測試監(jiān)顯終端將仿真測試前端回傳的被測軟件反饋數據包進行實時顯示,以供測試人員參考;

3)測試數據的判讀功能:即測試人員事先寫好數據判讀腳本或判讀軟件,并嵌入到測試監(jiān)顯終端中,每當被測軟件有下行數據包需要判讀時,即可通過測試監(jiān)控終端的數據判讀功能,生成判讀結果數據或判讀報告,以供測試人員查看或參考。

根據測試的具體需求,測試服務器上一般運行大型關系型數據庫,如:Oracle、IBM DB2以及Microsoft SQL Server等。測試服務器的功能:

1)測試指令序列存儲:根據被測軟件的實際特點,在數據庫中構建并存儲測試指令序列的數據模型;

2)測試數據存儲:將測試人員配置的測試激勵數據以及被測軟件反饋的原始測試結果數據進行歸檔以及存儲。

由圖1可知,嵌入式仿真測試前端是連接測試監(jiān)控終端和被測設備(軟件)的橋梁,根據被測軟件的具體測試需要,測試前端可由一個或多個測試前端構成,在本設計中,整個系統(tǒng)的工作流程如圖2所示。

圖2 仿真測試系統(tǒng)工作流程圖

3 IEEE1394仿真測試前端硬件設計

本文要實現(xiàn)的IEEE1394仿真測試前端在結構上仿真測試指令的處理以及IEEE1394 總線協(xié)議芯片的幀和消息處理部分,系統(tǒng)硬件結構框圖如圖3所示。

圖3 系統(tǒng)硬件設計框圖

在本設計中,仿真測試前端板采用了核心板+底板的設計模式,核心板采用的是ARM+FPGA的通用架構,不同測試前端之間的核心板可以互換;由于底板的硬件資源有限,底板是采用通用接口和專用接口組成,通用接口是指RS232、SD卡、以太網以及電源模塊等;專用接口根據測試需要可包含RS422接口、1553B總線接口、IEEE1394接口、USB3.0接口等在內的一種或多種專用接口。

測試開始時,由測試監(jiān)控終端調用測試服務器內已經組建完成的測試指令序列,IEEE1394仿真測試前端通過以太網接收測試指令序列,并對其進行解析處理,從而完成對IEEE1394協(xié)議芯片的配置以及測試激勵數據的轉發(fā),驅動IEEE1394協(xié)議芯片和IEEE1394 PHY芯片的運行;同時通過多線程設計將被測目標軟件反饋的數據打包并傳送至測試監(jiān)控終端。

系統(tǒng)上電后,運行于ARM中的應用程序軟件會完成對IEEE1394協(xié)議芯片內部寄存器的初始化,以及芯片工作模式的設置,然后等待測試控制終端發(fā)起測試任務。FPGA 內部對IEEE1394協(xié)議芯的讀寫操作分別進行, 為了通信的快速性和有效性,讀操作和寫操作都實例化了雙口的RAM,ARM 與IEEE1394協(xié)議芯片之間往來的數據幀首先經過雙口的RAM,F(xiàn)PGA 內部將數據幀和控制信號轉化成ARM 和IEEE1394 協(xié)議芯片需要的時序,再進行數據傳輸。

3.1 NAND Flash和SDRAM存儲器

NAND Flash 存儲器是斷電非易失型存儲器,主要用于存放Bootloader、內核映像文件、根文件系統(tǒng)以及用戶應用程序等,在本文中,使用一片SAMSUNG公司型號為K9G8G08U0A容量大小為1 GB NAND Flash芯片;SDRAM 存儲器是斷電易失型存儲器,本文中SDRAM采用兩片SAMSUNG公司的K4X51163PC芯片,每片容量大小為128 MB,數據運行速度可達266 MHz。

3.2 ARM處理器和FPGA芯片

本文中,嵌入式仿真測試前端的微處理器采用SAMSUNG公司的ARM11—S3C6410微處理器,該微處理器基于ARM1176JZF-S內核,擁有強大的內部資源,可穩(wěn)定工作在533 MHz,支持多種NAND Flash和Mobile DDR,同時支持以太網、RS232以及SD卡等多種外部接口;FPGA采用的是Xilinx公司的Virtex5系列的XC5VLX110T芯片,該芯片資源豐富,與ARM之間采用的是三態(tài)總線相連。同時該款FPGA芯片與IEEE1394協(xié)議芯片輸出都是3.3 V信號,因此它們之間采用直連進行通信。

3.3 IEEE1394協(xié)議芯片

在本設計中,IEEE1394協(xié)議芯片采用的是美國德州儀器公司(TI)的TSB12LV32芯片,物理層芯片采用TI公司的TSB41AB3芯片。TSB12LV32鏈路層芯片全面支持 IEEE 1394-1995 和P1394a高速串行總線協(xié)議規(guī)范;支持等時數據和異步數據傳輸等功能;芯片中含有一個通用發(fā)送FIFO和一個通用接收FIFO,大小均為2 kB。

物理層芯片TSB41AB3全面支持 1394-1995和P1394a高速串行總線協(xié)議規(guī)范; 提供 3個線纜端口,最高速度可達 400 Mb/s; 芯片工作時鐘為24.576 MHz,由外部晶振提供。物理層芯片的/ISO管腳是鏈路層接口隔離控制標識位。該引腳電平的高低決定了鏈路層芯片和物理層芯片之間電路的連接方式:直接連接方式還是隔離電路方式;本文中/ISO引腳接低電平,即鏈路層芯片和物理層芯片采用了直連的方式。

4 IEEE1394仿真測試前端軟件設計

在本設計中,不僅要求系統(tǒng)能夠控制IEEE1394協(xié)議芯片的上電初始化、復位、工作模式的設定等,還要求其能夠實時響應測試控制終端發(fā)送的測試指令序列和被測設備的反饋數據,因此在ARM處理器上移植了嵌入式操作系統(tǒng),測試人員只需根據測試具體需求建立不同優(yōu)先級的測試任務,由嵌入式操作系統(tǒng)完成各個任務的調度,這樣大大提高了編程的效率和代碼可維護性。

在本設計中,IEEE1394嵌入式仿真測試前端系統(tǒng)選用了嵌入式Linux 操作系統(tǒng),嵌入式Linux操作系統(tǒng)具有內核小巧、開放源代碼、開發(fā)簡單等優(yōu)點。嵌入式Linux系統(tǒng)軟件的開發(fā)包含了Bootloader與嵌入式Linux內核的修改與編譯、設備驅動程序的開發(fā)以及用戶應用程序的開發(fā)3個部分。

4.1 Bootloader與嵌入式Linux內核的修改與編譯

一個完整的嵌入式Linux系統(tǒng)需要包含Bootloader、內核映像文件以及根文件系統(tǒng)3個部分。Bootloader是在硬件板上電時就加載運行的用于初始化硬件設備、引導嵌入式Linux系統(tǒng)運行的一段程序。

在本設計中,選用U-Boot1.6作為Bootloader。為了提高ARM與FPGA之間的通信能力,修改U-Boot1.6中Board/Samsung/smdk6410/smdk6410.c 下的函數DM9000_pre_init(),將其中的宏SROM_BC4_REG 和SROM_BC5_REG 修改為0x22032200,這樣ARM 與FPGA 之間設備通信軟總線由原來的8 bit位寬提高至16 bit位寬,大大提高了通信效率。

在Linux內核源代碼的根目錄下執(zhí)行make menuconfig命令,以此來對Linux內核配置進行簡單的修改。在本文中,通過去除“Device Drivers->Input device support->Keyboards”選項及其子選項來釋放原操作系統(tǒng)中被外部鍵盤占用的CPU外部中斷接口,以便FPGA與ARM之間以中斷方式進行通信。然后運行make zImage -jn進行編譯內核映像文件,n值通常為執(zhí)行編譯計算機CPU的邏輯內核數。編譯結束后,在/arch/arm/boot路徑下即可得到內核映像文件:zImage。

4.2 嵌入式Linux驅動程序開發(fā)

驅動程序是聯(lián)系用戶應用程序和硬件的橋梁。Linux內核已經集成了市面上多數硬件芯片的驅動程序,如本設計中使用的網絡芯片DM9000E的驅動程序,大大節(jié)省了開發(fā)周期。在本設計中,F(xiàn)PGA芯片作為嵌入式Linux操作系統(tǒng)的一個外設,而Linux內核并沒有集成該款芯片的驅動程序,因此需要重新開發(fā)驅動程序。將所有外設均視為文件進行處理是Linux設備驅動的一個非常重要的性質,因此在本文中將所有的外設均當作字符設備來編寫驅動程序。

通過static const struct file_operations fdev_fops來定義頂層用戶應用程序層調用設備文件的常用函數,包括設備讀、寫操作,設備的打開與關閉等操作。通過static int __init fdev_init(void)和static int __exit fdev_exit(void)函數分別完成設備注冊、內存堆棧空間的分配以及設備的注銷和內存堆??臻g的回收等。為設備分配新的設備號,建立與實際使用的Linux內核版本號以及內核配置相一致的依賴關系,然后編譯并生成可以動態(tài)加載的*.ko文件,然后通過insmod命令將編譯好的*.ko文件加載到內核中,用戶應用程序可以根據相應的文件名直接調用該設備。

4.3 用戶應用程序開發(fā)

應用程序的開發(fā)可以根據用戶實際測試任務的需要,來決定任務的類型以及開啟線程的數量,本設計中,根據實際測試的需要,將任務分為4個主要的部分,為每個任務線程分配足夠的堆??臻g,線程之間的通信通過互斥鎖以及信號量來實現(xiàn)。本文中用戶的應用程序框架如圖4所示。

圖4 系統(tǒng)軟件設計結構圖

IEEE1394協(xié)議芯片參數設置和工作模式的設置是系統(tǒng)應用軟件設計的關鍵。系統(tǒng)上電后,1394處理線程即對1394協(xié)議芯片內部寄存器進行初始化;測試人員通過測試監(jiān)控終端配置參數來完成IEEE1394協(xié)議芯片的復位以及工作模式的設定,并通過監(jiān)顯終端實時回顯的數據查看芯片當前的工作狀態(tài)以及工作模式。

4.4 FPGA固件編程

本文中,在充分考慮了系統(tǒng)的可靠性和可維護性,程序設計按照功能塊劃分,可分為以下3個模塊。

1)1394異步數據處理模塊。

本模塊與1394芯片的異步數據接口連接,主要完成1394異步數據接口與ARM處理器接口之間的時序轉換。當仿真測試平臺向1394芯片發(fā)送異步數據包時,本模塊根據接收到的ARM處理器寫使能信號、寫地址和寫數據,按照1394異步數據傳輸時序要求將數據包依次寫入用戶配置的地址中;當仿真測試平臺請求讀取1394芯片中某寄存器的值時,ARM處理器向本模塊發(fā)起兩次讀操作,第一次讀操作后,本模塊根據接收到的讀地址從1394芯片中讀取相應的值,并在第二次讀操作時將該值輸出至ARM數據總線上,供ARM處理器讀取。

2)1394等時數據處理模塊:

本模塊與1394芯片的等時接口連接,主要功能是按照用戶配置要求接收固定長度的等時數據包,并寫入USB3.0接收模塊中,最終傳輸到PC機上保存成數據文件。

3)處理器接口處理模塊:

本模塊與1394等時數據處理模塊配合使用,主要功能為解析ARM處理器發(fā)送的用戶指令,控制1394等時數據處理模塊開始或停止接收等時數據包。

各個模塊之間的關系如圖5所示。

圖5 FPGA內部各模塊之間的關系圖

5 1394測試前端測試結果與分析

為了驗證本設計的實用性與完整性,利用本設計按圖1所示構建一套1394分布式仿真測試系統(tǒng),采用ChipScope(片上示波器)與1394總線分析儀相結合的方式對所設計的1394總線仿真測試系統(tǒng)的功能進行測試。根據實際測試的需要,對1394等時和異步數據包的傳輸分別進行了測試,結果如圖6和圖7所示。

圖6 等時數據包接收時序圖

圖7 異步數據包的發(fā)送時序圖

最終的測試結果表明,測試前端的發(fā)送數據包和接收數據包與1394總線分析儀監(jiān)測到的數據內容完全一致,時序也滿足1394協(xié)議時序要求,因此本設計完整實現(xiàn)了1394總線等時數據包和異步數據包的發(fā)送和接收功能。

6 結論

本文在充分分析了當前載人航天嵌入式軟件測試過程中遇到的實際問題的基礎上,設計并研發(fā)了基于ARM&FPGA架構的分布式1394仿真測試前端,工程實踐表明,本設計作為測試系統(tǒng)的一部分,成功完成了對載人航天工程某型號航天器嵌入式1394軟件的配置項級測試,包括功能測試、性能測試、強度測試以及故障測試等,不僅大大提高了測試的效率,而且對類似測試系統(tǒng)(前端)的研制也具有較高的參考意義。

[1] 杜 倩. 基于1394串行總線圖像采集的硬件設計[D]. 天津:天津大學,2006.

[2] 王 彬,張 濤. 基于ARM-Linux 的1553B 仿真測試前端系統(tǒng)[J]. 電子設計工程,2013,20:147-150.

[3] 王桂強. 基于 IEEE1394 總線的高速相機數據傳輸方案設計[D]. 哈爾濱:哈爾濱工業(yè)大學,2011.

[4] Brown K A, Frak B, Gassner D, et al. IEEE 1394 Camera Imaging System for Brookhaven’s Booster Application Facility Beam Diangostics*[A]. EPAC’02[C].2002.June,2-7.

[5] 蔡偉鵬. 應用于1394b物理層實現(xiàn)的時鐘數據恢復電路的研究和設計[D]. 北京:北京交通大學,2014.

[6] 常 安. IEEE1394物理層鏈路接口的設計與驗證[D]. 西安:西安電子科技大學,2014.

[7] 金曉紅, 高有行. IEEE1394 協(xié)議在外設端接口中的應用[J]. 計算機測量與控制,2003,11(10):809-811.

[8] 陳爾釤. 1394總線鏈路層系統(tǒng)架構設計及接收模塊實現(xiàn)[D]. 西安:西安電子科技大學,2014.

[9] 李 潔. 基于IEEE1394數據鏈路層芯片設計與驗證[D]. 西安:西安電子科技大學,2014.

[10] 張 偉. 基于IEEE1394總線數控系統(tǒng)實時通信的DMA方式實現(xiàn)[D]. 上海:上海交通大學,2009.

[11] 張盼盼. 基于IEEE1394b交叉通道數據鏈路FPGA的驗證[D]. 西安:西安電子科技大學,2014.

[12] 張 琨. 基于IEEE1394數據傳輸系統(tǒng)的驅動程序及應用程序設計[D]. 西安:西安電子科技大學,2014.

[13] 蔡建軍. 嵌入式軟件測試實用技術[M]. 北京:清華大學出版社,2010.

Design of Front End System of IEEE1394 Simulation Test Based on ARM&FPGA

Su Yu, Kong Lu, Zhou Shan, Ma Yunyun, Wang Jinbo

(Technology and Engineering Center for Space Utilization,Chinese Academy of Sciences,Beijing 100094,China)

Analyzing the actual needs of the 1394 bus simulation tests are integrated into the distributed test system in the testing of aerospace embedded software, a front end system of 1394 Simulation Test Based on ARM&FPGA was proposed. After a brief introduction of the 1394 bus and distributed test system, the hardware and software of front End System of 1394 simulation tests are designed and implemented, and then the distributed test system is built. The result of the test shows that the 1394 simulation test front end could meet the sending and receiving timing requirements of the 1394 isochronous data and asynchronous data packages, and successfully applied to a spacecraft software third party evaluation.

IEEE Std 1394;ARM;FPGA;distributed systems

2015-09-14;

2015-10-20。

國家重大專項載人航天應用系統(tǒng)軟件第三方評測 (Y5181021RN)。

蘇 宇(1985-),男,吉林長春人,碩士,助理工程師,主要從事高可靠軟件測試與驗證,嵌入式系統(tǒng)開發(fā)方向的研究。

1671-4598(2016)03-0035-05

10.16526/j.cnki.11-4762/tp.2016.03.011

TP39

A

猜你喜歡
內核數據包嵌入式
二維隱蔽時間信道構建的研究*
基于Jpcap的網絡數據包的監(jiān)聽與分析
強化『高新』內核 打造農業(yè)『硅谷』
基于嵌入式Linux內核的自恢復設計
Linux內核mmap保護機制研究
SmartSniff
搭建基于Qt的嵌入式開發(fā)平臺
嵌入式軟PLC在電鍍生產流程控制系統(tǒng)中的應用
微生物內核 生態(tài)型農資
Altera加入嵌入式視覺聯(lián)盟
伊宁市| 长春市| 中阳县| 临泉县| 城市| 施甸县| 莒南县| 天镇县| 沅陵县| 通化县| 轮台县| 湛江市| 武宣县| 江口县| 油尖旺区| 芜湖县| 延津县| 聊城市| 宝清县| 邢台县| 石家庄市| 陈巴尔虎旗| 赤壁市| 分宜县| 宁都县| 乌鲁木齐市| 江孜县| 朝阳市| 始兴县| 海原县| 海宁市| 南澳县| 西乌| 龙山县| 民勤县| 清新县| 太保市| 鄂尔多斯市| 四平市| 军事| 霍城县|