使用圖形化的開發工具——LabVIEW開發嵌入式系統
在嵌入式系統中實現圖形化,已經成為大勢所趨。現在市場上的工具都在向圖形化的方向轉變,但往往僅限于基于嵌入式操作系統的圖形界面開發,而且由于它們是針對特定硬件或操作系統的工具,與硬件和操作系統平臺有很大的相關性,而這是不足以徹底解決行業將要面臨的挑戰的。現在市場所需的是一種完全的圖形化編程語言,提供足夠的靈活性和功能,以滿足更廣泛應用的需求。因此,圖形化系統設計的關鍵因素是圖形化編程。
對于時間和平行性的支持
20年來,科學家和工程師一直在使用LabVIEW為他們的設計實驗室、驗證實驗室和生產現場構建自動化數據采集和儀器控制解決方案,并在這些應用領域成為業界的事實標準。其核心在于,LabVIEW圖形化編程語言使得沒有經過正規編程培訓或相關背景的技術專家能夠快速搭建高級自動化測量和控制系統。
和傳統的文本編程相比,LabVIEW天生是一種并行結構的編程語言,而時間和并行性在現在的嵌入式系統中是必不可少的。比如,LabVIEW在已有的定時循環結構上新加了硬件定時功能,它是一種表示時間和并行的語義,可以設置操作系統優先級,延時,循環速率等等,如圖1所示;如果我們將圖1所示的兩個并行任務的執行目標擴展到嵌入式對象,比如FPGA或微處理器,就可以看到,通過編程環境的一致性和可升級性,LabVIEW能夠容易的實現和管理嵌入式系統的并行性。回想在文章前面所提到的向多處理器轉移的趨勢,現在我們可以憧憬使用可擴展的直觀圖形化編程,來開發應用,并將處理過程分配到不同的處理器上。
圖1 LabVIEW對于兩個并行任務的編程
支持多種算法設計
談到嵌入式系統設計,人們所指的其實包括兩部分工作:算法設計和固件設計。對于嵌入式系統設計來說,另一個關鍵要求是軟件平臺必須能夠兼顧實時嵌入式設計中常見的多種算法設計,即計算模型(Computation Model),這些計算模型符合系統設計師們籌劃系統時的方式,從而降低從‘系統要求’轉換到‘軟件設計’的復雜性。
近幾年來LabVIEW已經包含了多種計算模型以更好地滿足不同專業背景的嵌入式系統開發者的需求。LabVIEW現在可以通過連續時間仿真,狀態圖,圖形化數據流模型和基于文本的數學語言mathscript等多種方式來表達各種算法,同時它提供了很多交互式的工具用來幫助數字濾波器的設計,控制模型的設計,通信系統的設計,以及數字信號處理算法的開發,從而在這些頂層應用中更進一步簡化設計師的工作。LabVIEW 目前提供了600多個數學運算和信號處理的函數為各種各樣的應用服務。
快速構建原型——溝通虛擬世界與物理世界的橋梁
正如前文所提,很多設計比預期時間晚上市,并且有一些在投入市場以后發現未達到預定的功能和指標,因此必須采取一定的措施來加快設計流程,提高設計質量。一種解決方案就是更早地將真實世界的信號和硬件引入到設計流程之中,進行更好的系統原型化,從而在早期就發現并修正潛在的問題。
但是在任何設計和開發流程中,在基于軟件設計和仿真工具的虛擬世界,與電子或機械測量的物理世界之間有一個很大的鴻溝。LabVIEW平臺最明顯的價值就是在虛擬世界和物理世界間的鴻溝之間建立一座橋梁。物理測量是與設計和仿真完全不同的挑戰,要求與廣泛的測量和控制硬件緊密集成,并以優化的性能處理大量的通道數或超高速吞吐量。LabVIEW平臺經過不斷演進,在物理測量領域提供無與匹敵的性能和靈活性。更重要的是,LabVIEW平臺是開放的,因此,設計人員可以將測量數據與仿真結果相映射,甚至互換仿真和物理數據,以用于設計中的行為建模,或者以仿真的激勵驅動物理測試,從而更為有效快速的進行系統原型構建。
嵌入式系統開發人員如果要定制硬件用于最終的發布,很難同時并行的開發軟件和硬件,因為直到系統集成步驟之前,軟件從未在有代表性的硬件上經過測試。此外,設計師們也不希望軟件開發是純理論的進行,如果直到系統集成測試的時候才引入I/O用真實世界的信號檢驗設計,一旦發現存在問題,那就意味著很難在預期時間完成設計任務了。
大多數設計師當前用評估板來進行系統的原型化,但是,原型板往往只具備少量的模擬和數字I/O通道,也很少支持視覺,運動或同步的功能。此外,設計師經常因為需要傳感器或特殊I/O的支持而花費大量時間來開發定制的原型板,而這些僅僅是為了設計概念的驗證。使用靈活的、商業化的原型平臺可以大大簡化這個過程,消除其中硬件驗證和板級設計的大量工作。對于大多數系統,原型化平臺必須包括最終發布系統的同樣部件,比如用于執行算法的實時處理器、用于高速處理的可編程邏輯器件,或者將實時處理器接口到其他部件。因此,如果這個商業化的系統不能滿足所有的要求,那么這個平臺必須是可擴展的,并且支持自定義。NI提供了各種硬件平臺與LabVIEW集成,完成從設計、原型到部署的全過程。例如使用LabVIEW和NI 可重復配置I/O(RIO)設備或NI CompactRIO平臺,可以快速而便捷地創建嵌入式系統的原型。
一個客戶案例是Boston Engineering公司。他們要開發一種牽力控制機用于數碼照片打印系統。其中,彩色墨盒通過驅動馬達饋送到打印頭,由卷帶電機和推進電機來控制牽力。切割機底盤的振動、每次打印的照片數目和每個電機的速度變化都會影響到底層的牽力。控制系統通過兩個電機的位置來保證卷帶和推進的牽力處于設定范圍之內,否則就會有色差。設計的牽力控制硬件需要兩個脈寬調制輸出來控制電機,兩個編碼器將轉速反饋給電機,兩個模擬輸入通道連接霍爾傳感器用來測量位置,兩根數字線用于信令。由于傳統的原型板無法滿足這些要求,所以需要使用可以自定義I/O的原型平臺,因此他們使用CompactRIO平臺來進行原型化工作。CompactRIO系統包含一個266 MHz的嵌入式微處理器,以太網控制器,以及背板上的1M 門FPGA。通過LabVIEW FPGA對背板上的FPGA編程,由于LabVIEW FPGA是一種圖形化的編程環境,不需要VHDL的經驗,他們的控制、機械和電子工程師就可以直接參與到編程工作中。他們在嵌入式控制器中運行管理程序,在FPGA中運行電機控制算法,這種資源配置使得原型化構建和最終系統發布在編程模式上是非常相似的。為了在FPGA中運行控制算法,他們將ZPK(zero-pole-gain)模型轉化為LabVIEW數字濾波器設計工具包中提供的一種濾波器,由于這個工具包支持LabVIEW FPGA代碼的自動生成和優化,所以原先的ZPK模型就可以直接轉化成能夠在FPGA上運行的代碼。另外,他們還使用這個工具包對原先的浮點算法進行了定點轉換,以節約FPGA 資源,并對量化后的模型進行測試、驗證、修正從而得到預期的結果。通過這種原型化方式,他們節約了大量的開發時間。
發布到任何32位處理器
LabVIEW包括一個廣泛的工具集,該工具集構成了一個用于設計、控制和測試的圖形化開發平臺。新的NI LabVIEW嵌入式開發模塊(LabVIEW Embedded Development Module,)是LabVIEW圖形化編程環境的一款全新附加模塊。LabVIEW嵌入式開發模塊是一個開放的框架,它可以集成任意的第三方工具鏈,將生成的C代碼與LabVIEW運行庫函數和板卡支持程序包,編譯成為針對某一目標并能在之上運行的二進制代碼。通過LabVIEW嵌入式開發模塊和工具鏈,可以發布到運行任何操作系統的任何的32位處理器。
LabVIEW嵌入式開發模塊包含了近千個內建的庫函數,涵蓋高等算法、文件I/O、邏輯和信號處理各個方面。原先無法利用到嵌入式編程的工程師們都可以進入32位微處理器的領域之中。通過LabVIEW中附加的狀態圖、控制圖表、信號處理庫函數等這一完整的工具來設計他們的應用,以解決各種問題。此外,通過LabVIEW嵌入式方式 ,工程師和科學家可以使用一種叫做內聯C節點(Inline C Node)的新特性,整合現有的嵌入式代碼,來保持LabVIEW的開放架構。另外,在LabVIEW嵌入式項目環境中,還可以直接添加用C或者匯編開發的源代碼,或者庫文件,幫助開發人員充分利用以前的工作成果。
圖2內聯C節點(Inline C Node)
LabVIEW嵌入式環境的調試功能非常強大。除了用于快速調試的圖形化用戶接口顯示件、探針、斷點和函數單點調試之外,LabVIEW嵌入式開發模塊為代碼調試提供了另外兩種無縫的接口。在嵌入式目標平臺上,工程師可以使用“儀器調試”(instrumented debugging),以便于通過TCP/IP、RS232,或CAN進行調試。使用內建的片上調試接口,工程師可以通過工業標準協議,如JTAG、BDI和Nexus等,進行調試,同時不影響程序性能。
LabVIEW嵌入式開發模塊使領域專家可以使用現有的技術進行更多的應用,使用同一環境進行算法設計、原型,實現他們的解決方案,極大地縮短開發時間和產品上市時間。
減少與特定硬件以及操作系統的相關性
基于平臺的工具,需要能夠表達整個系統,而減少與特定硬件以及操作系統的相關性。在傳統的開發模式中,嵌入式目標本身要求程序員在編寫代碼之前對目標有深入的了解。程序需要知道板卡上各種關于內存映射和寄存器的信息,才能在板卡上執行他們的代碼。另外,大部分代碼是專為某一特定目標編寫的。這樣,在一塊板卡上使用不同的微處理器或是不同的外圍設備,可能就需要重新編寫大部分已有的代碼,或是完全從頭開始。這意味著最終產品的擴展性方面是有缺陷的。
但是,使用LabVIEW嵌入式開發模塊,工程師和科學家們不需了解最終的目標,就可以進行代碼開發,因為軟件生成的是LabVIEW應用的ANSI C代碼,而不是針對某個特定目標的二進制代碼。如圖3所示,灰色區域的部分對于開發員來說是透明的,他們在開發過程中不需要了解目標硬件上內存映射和寄存器的情況。
同時,LabVIEW嵌入式方式是一個開放的框架,它可以整合任意的第三方工具鏈,將生成的C代碼、LabVIEW運行庫函數和板卡支持程序包(BSP)編譯成為針對某一目標并能在這個目標上運行的二進制代碼。BSP是一種作為C代碼與板上外圍硬件接口的底層代碼。因此,如果板卡需要升級,工程師可以簡單地將不同的BSP鏈接到LabVIEW中,在現有的圖形化代碼上作一小部分改動就可以完成。
圖3 LabVIEW嵌入式模塊的開發流程
與目標無關的代碼開發意味著工程師和科學家不再需要等待硬件確定之后再開始設計算法。這樣并行的工作和效率的提升,使開發周期和產品上市時間大大縮短。最后,所生成的LabVIEW代碼不是針對某個特定平臺的,所以您很容易升級到新的硬件。
3. 結論
隨著嵌入式系統復雜性的不斷增加,設計師們正在面對嚴峻的挑戰。由于市場上嵌入式硬件和操作系統的多樣化,嵌入式系統結構的復雜化,圖形化和向基于平臺的工具轉移是一種必然的趨勢。LabVIEW為嵌入式系統開發提供了一個跨越多種、多代產品的連貫性的平臺,使設計人員能夠多年重復并改進其設計,而不必替換其整個工具集或者重新學習不同的設計方法,從而使設計的速度和質量得到提高。同時,其圖形化的編程模式使得更多的工程師和科學家可以使用他們的專業知識開發嵌入式應用,而不需要再依賴嵌入式方面的專家。使用統一的環境進行設計、原型到部署,LabVIEW為嵌入式系統開發提供了前所未有的革新方式。
評論
查看更多