引言
脈沖/數據發生器作為通用測試信號源,能夠產生脈沖、群脈沖和數據三種類型的信號輸出。參數連續可調的脈沖信號和大容量、多樣化的數字信號,滿足了高速數字設備中噪聲容限的測試要求以及大型集成電路和射頻系統的設計初期對激勵信號源的需求。隨著嵌入式技術的飛速發展以及廣泛應用,利用嵌入式操作系統支持進行智能儀器設備開發正成為主流。Win CE系統是美國微軟公司推出的一種32位嵌入式操作系統,可以實現實時、多任務、多線程操作,同時具備出色的圖形用戶界面。本文實現了一種以嵌入式WinCE 系統為支撐的脈沖/數據發生器應用軟件設計。
1 系統設計方案
脈沖/數據發生器系統結構如圖1所示,包括嵌入式系統、控制主板模塊、觸發模塊、時鐘模塊以及模擬通道輸出模塊。整個系統中,各個模塊按照一定作用互相支持,協調工作。
時鐘模塊能夠產生系統所需的連續可調、高精度的時鐘信號;觸發模塊用以接收外部觸發信號,實現與外部電路的同步;模擬通道輸出模塊實現對前級產生的脈沖和數據信號的幅度、電平、沿的控制與調整;控制主板模塊采用FPGA 來構建主控制邏輯系統,實現觸發模式、時鐘頻率、脈沖產生和數據地址產生等相關控制。
嵌入式系統以及運行于其上的應用軟件在整個系統結構中處于最前端。
通過儀器人機界面接收操作人員的指令并與后級的控制主板進行數據交換,最終由控制主板操控其后硬件模塊完成用戶指令,在模擬通道輸出端得到相應的脈沖信號和串行數據信號。為了滿足儀器設備實時性的要求,嵌入式操作系統選取WinCE 6.0,微處理器選擇三星公司的S3C2440A,其內核為ARM920T,能夠滿足低價格、低功耗、高性能的需求。
2 人機界面開發
軟件集成開發環境選取微軟公司提供的VisualStudio 2005.用于定制系統的Platform Builder for CE6.0 被作為插件集成到Visual Studio 2005 中,這樣定制操作系統和開發應用程序都在同一開發環境下,避免頻繁切換開發環境的麻煩。在完成WinCE 操作系統的定制、導出軟件開發包SDK之后,便可以進行驅動程序和應用程序的開發[4]。脈沖發生器作為現代電子測量儀器,其軟件開發包含兩部分:界面設計以及功能設計。
界面是人機之間信息傳遞的橋梁,是儀器的重要組成部分。界面設計需要完成簡潔、友好的人機界面,用戶通過操作界面完成對儀器的控制。人機界面軟件流程如圖2所示。功能設計則是建立在硬件模塊的基礎之上,圍繞硬件模塊分別實現儀器系統各個功能。
系統啟動后,軟件開機自動運行,首先進行開機自檢,確認儀器各個硬件設備是否工作正常。然后主線程啟動,進行初始化工作,依次初始化所有工程變量,創建并初始化所有頁面為最近一次關機前的狀態。接著進入消息循環和建立錯誤信息報告循環。程序不斷檢測錯誤消息隊列看是否有錯誤發生,一旦發現錯誤消息隊列有錯誤需要響應時,依次讀取并處理錯誤消息報告,轉而執行相應的功能。比如用戶操作錯誤時,錯誤信息顯示就會彈出,提示用戶正確的操作方法,直至用戶操作正確。如果有鍵盤消息到達,則通過主線程交給相應的各個頁面去響應控件消息,達到與儀器操作人員進行信息交互的目的。整個人機界面設計基于CFormView類。鍵盤信息處理等模塊被設計成動態鏈接庫的形式,既節省了系統資源,同時也便于程序以后的維護和升級。
3 數據傳輸的實現
數據傳輸的功能為實現脈沖/信號發生器上層應用軟件和底層硬件系統之間的數據通信。嵌入式WinCE6.0 操作系統通過對控制主板模塊進行操作,最終實現對各個硬件的控制。ARM 的GPIO 口操作可以實現此功能需求。S3C2440A 提供了130個通用IO 口。
GPIO 操作主要由端口配置寄存器GPXCON、端口數據寄存器GPXDAT、設置接口上拉電阻寄存器GPXUP(其中X表示對應的GPA到GPJ端口)等寄存器來實現。
在WinCE 6.0 系統下,將GPIO 的實地址(例如S3C2440A 的GPIO 的基地址為0X56000000)映射到虛擬地址空間(對應為0XB1600000),通過對這段虛擬地址空間的操作,就能夠完成對GPIO或者其他片內資源的控制、輸入輸出工作。在編程中需要使用到兩個關鍵函數VirtualAlloc 和VirtualCopy.首先通過VirtualAlloc來獲得一段虛擬地址空間的分配,然后VirtualCopy將一個虛擬地址綁定到一個物理地址上,從而實現對物理硬件的訪問。為了增強系統的安全性和穩定性,WinCE 6.0加強了對虛擬地址訪問的限制,驅動被放到內核空間下,使得WinCE6.0在應用程序中不能再直接對物理地址進行操作。雖然在上層應用程序中無法調用Virtu-alAlloc和VirtualCopy,但是可以在內核態下編寫驅動程序,通過VirtualAlloc和VirtualCopy進行內存映射,故在WinCE6.0 系統下,訪問物理地址可以采取的一種方法是:在內核模式中編寫流驅動程序,將驅動程序編譯到內核后再下載到NandFlash中。相關代碼如下:
volatile S3C2440A_IOPReg *v_pIOPRegs;
/*申請空間*/
v_pIOPRegs=
(volatile S3C2440A_IOPReg *) VirtualAlloc (0,
sizeof
(S3C2440A_IOPReg),
MEM_RESERVE,PAGE_NOACCESS);
i(f /*申請空間失敗*/)
{/*進行錯誤處理并返回*/
} else {/*進行映射*/
if (!VirtualCopy ( (PVOID) v_pIOPRegs, (PVOID)
(S3C2440A_IOBase》8) , sizeof (S3C2440A_IOPReg) ,
PAGE_READWRITE|PAGE_NOCACHE ))
{/
*如果映射失敗,釋放申請的空間并返回*/}}
S3C2440A整合了多種接口和總線。基于通用片選nGCSn 的SRAM 接口具有配置簡單、邏輯控制信號少、尋址以及數據讀寫的速度高的特點,因此選擇nGCS2作為片選信號,同時搭配寫使能信號nWE 以及讀使能信號nOE完成對脈沖/數據發生器單數據通道的操作。
nGCS2片選信號為低有效,對應的端口是PortA,其第13 位用來實現nGCS2 的控制,對應的配置寄存器是GPACON,數據寄存器是GPADAT,它們分別對應的物理地址為0X56000000 和0X56000004.當GPA13 設置成0時候,nGCS2為普通輸入輸出口;設制成1的時候,nGCS2成為使能信號。其他信號設置與此類似。在本項目中,nGCS2按照要求被設置成使能信號:
v_pIOPRegs-》rGPACON |=(0×01《13);
BWSCON 是總線位寬和延時控制寄存器,它可以用來配置8 b、16 b或者32 b的總線寬度。將其設置為32 b的總線寬度:
v_pMEMRegs - 》rBWSCON=(v_pMEMRegs - 》rBWSCON~(0XF《8))(| 0XE《8);驅動編譯到內核的過程如下:在BSP中創建驅動文件夾并開發流驅動程序。完成后,再創建makefile 文件、模塊導出文件以及用于編譯的sources文件。最后在注冊表中添加GPIO 流驅動程序,將驅動添加到NK中,用Visual Studio 2005 中的Platform Builder 6.0 編譯得到NK.bin文件,下載到NandFlash中。
4 程序移植及系統測試
人機界面以及各功能模塊開發完成之后,需要進行應用程序的移植。ActiveSync 6.1可以實現連接裝有桌面Windows的PC機和WinCE設備。通過它可以使用串口、USB端口、以太網或紅外線連接在移動設備和PC之間創建同步關系。在本項目中,選擇使用USB口建立連接,這就需要首先安裝BSP下面的USB驅動。建立連接之后,將編譯好了的應用程序下載到定制好的WinCE 6.0系統中,即可實現應用程序在嵌入式WinCE 6.0系統中的運行。脈沖/數據發生器功能包括多樣化觸發、時鐘發生、脈沖生成、脈沖參數可控、信號時延可控、串行數據發生等各項功能。利用嵌入式軟件編程實現的友好簡潔的人機界面如圖3所示。通過現場測試表明該軟件操作簡便,使用函數生成數據時界面刷新無明顯遲滯,具有一定健壯性,能有效處理用戶誤操作。圖4顯示為頻率設置成50 MHz、脈寬設置為1 ns 時,脈沖/數據發生器輸出通道所輸出的脈沖波形。
5 結語
本文結合WinCE 6.0嵌入式系統,制定脈沖/數據發生器軟件實現方案,實現了脈沖/數據發生器界面設計、嵌入式應用程序移植、上層軟件與底層硬件的數據通信等工作。經過實際測試及運行,開發的脈沖發生器軟件平臺運行穩定,界面簡潔美觀且易于操作,上層應用軟件功能齊全,系統的實時響應能力達到儀器的設計要求。
-
FPGA
+關注
關注
1629文章
21729瀏覽量
602997 -
嵌入式
+關注
關注
5082文章
19104瀏覽量
304810 -
操作系統
+關注
關注
37文章
6801瀏覽量
123283
發布評論請先 登錄
相關推薦
評論