使用圖形化的開(kāi)發(fā)環(huán)境――LabView開(kāi)發(fā)嵌入式系統(tǒng)
快速構(gòu)建原型—溝通虛擬世界與物理世界的橋梁
如前所述,很多設(shè)計(jì)比預(yù)期時(shí)間晚上市,并且有一些在投入市場(chǎng)以后發(fā)現(xiàn)未達(dá)到預(yù)定的功能和指標(biāo),因此必須采取一定的措施來(lái)加快設(shè)計(jì)流程、提高設(shè)計(jì)質(zhì)量。一種解決方案就是更早地將真實(shí)世界的信號(hào)和硬件引入到設(shè)計(jì)流程之中,進(jìn)行更好的系統(tǒng)原型化,從而在早期就發(fā)現(xiàn)并修正潛在的問(wèn)題。
但是在任何設(shè)計(jì)和開(kāi)發(fā)流程中,基于軟件設(shè)計(jì)和仿真工具的虛擬世界與電子或機(jī)械測(cè)量的物理世界之間有一個(gè)很大的鴻溝,而LabVIEW平臺(tái)最明顯的價(jià)值就是在虛擬和物理世界的鴻溝上建一座橋梁。物理測(cè)量是與設(shè)計(jì)和仿真完全不同的挑戰(zhàn),要求與廣泛的測(cè)量和控制硬件緊密集成,并以?xún)?yōu)化的性能處理大量的通道數(shù)或超高速吞吐量。LabVIEW平臺(tái)經(jīng)過(guò)不斷演進(jìn),在物理測(cè)量領(lǐng)域具有很高的性能和靈活性。更重要的是,LabVIEW平臺(tái)是開(kāi)放的,設(shè)計(jì)人員可以將測(cè)量數(shù)據(jù)與仿真結(jié)果相映射,甚至互換仿真和物理數(shù)據(jù),以用于設(shè)計(jì)中的行為建?;蛘咭苑抡婕?lì)驅(qū)動(dòng)物理測(cè)試,從而更有效快速地進(jìn)行系統(tǒng)原型構(gòu)建。
嵌入式系統(tǒng)開(kāi)發(fā)人員如果要定制硬件用于最終的發(fā)布,很難同時(shí)并行地開(kāi)發(fā)軟件和硬件。而如果直到系統(tǒng)集成測(cè)試的時(shí)候才引入I/O用真實(shí)世界的信號(hào)檢驗(yàn)設(shè)計(jì),一旦發(fā)現(xiàn)存在問(wèn)題,那就意味著很難在預(yù)期時(shí)間完成設(shè)計(jì)任務(wù)了。大多數(shù)設(shè)計(jì)師當(dāng)前用評(píng)估板來(lái)進(jìn)行系統(tǒng)的原型化,但是,原型板往往只具備少量的模擬和數(shù)字I/O通道,也很少支持視覺(jué)、運(yùn)動(dòng)或同步的功能。此外,設(shè)計(jì)師經(jīng)常因?yàn)樾枰獋鞲衅骰蛱厥釯/O的支持而花費(fèi)大量時(shí)間來(lái)開(kāi)發(fā)定制的原型板,而這些僅僅是為了設(shè)計(jì)概念的驗(yàn)證。使用靈活的、商業(yè)化的原型平臺(tái)可以大大簡(jiǎn)化這個(gè)過(guò)程,消除其中硬件驗(yàn)證和板級(jí)設(shè)計(jì)的大量工作。對(duì)于大多數(shù)系統(tǒng),原型化平臺(tái)必須包括最終發(fā)布系統(tǒng)的同樣部件,比如用于執(zhí)行算法的實(shí)時(shí)處理器、用于高速處理的可編程邏輯器件,或者將實(shí)時(shí)處理器接口到其他部件。因此,如果這個(gè)商業(yè)化的系統(tǒng)不能滿(mǎn)足所有的要求,那么這個(gè)平臺(tái)必須是可擴(kuò)展的,并且支持自定義。NI提供了各種硬件平臺(tái)與LabVIEW集成,完成從設(shè)計(jì)、原型到部署的全過(guò)程。例如使用LabVIEW和NI可重復(fù)配置I/O(RIO)設(shè)備或NICompactRIO平臺(tái),可以快速而便捷地創(chuàng)建嵌入式系統(tǒng)的原型。
例如BostonEngineering公司要開(kāi)發(fā)一種牽力控制機(jī)用于數(shù)碼照片打印系統(tǒng)。其中,彩色墨盒通過(guò)驅(qū)動(dòng)馬達(dá)饋送到打印頭,由卷帶電機(jī)和推進(jìn)電機(jī)來(lái)控制牽力。切割機(jī)底盤(pán)的振動(dòng)、每次打印的照片數(shù)目和每個(gè)電機(jī)的速度變化都會(huì)影響到底層的牽力??刂葡到y(tǒng)通過(guò)兩個(gè)電機(jī)的位置來(lái)保證卷帶和推進(jìn)的牽力處于設(shè)定范圍之內(nèi),否則就會(huì)有色差。設(shè)計(jì)的牽力控制硬件需要兩個(gè)脈寬調(diào)制輸出來(lái)控制電機(jī),兩個(gè)編碼器將轉(zhuǎn)速反饋給電機(jī),兩個(gè)模擬輸入通道連接霍爾傳感器用來(lái)測(cè)量位置,兩根數(shù)字線(xiàn)用于信令。傳統(tǒng)的原型板無(wú)法滿(mǎn)足這些要求,需要使用可以自定義I/O的原型平臺(tái),因此他們使用CompactRIO平臺(tái)來(lái)進(jìn)行原型化工作。他們?cè)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/嵌入式">嵌入式控制器中運(yùn)行管理程序,在FPGA中運(yùn)行電機(jī)控制算法,這種資源配置使得原型化構(gòu)建和最終系統(tǒng)發(fā)布在編程模式上是非常相似的。為了在FPGA中運(yùn)行控制算法,他們將ZPK(zero-pole-gain)模型轉(zhuǎn)化為L(zhǎng)abVIEW數(shù)字濾波器設(shè)計(jì)工具包中提供的一種濾波器,由于這個(gè)工具包支持LabVIEWFPGA代碼的自動(dòng)生成和優(yōu)化,所以原先的ZPK模型就可以直接轉(zhuǎn)化成能夠在FPGA上運(yùn)行的代碼。另外,他們還使用這個(gè)工具包對(duì)原先的浮點(diǎn)算法進(jìn)行了定點(diǎn)轉(zhuǎn)換,以節(jié)約FPGA資源,并對(duì)量化后的模型進(jìn)行測(cè)試、驗(yàn)證、修正從而得到預(yù)期的結(jié)果。通過(guò)這種原型化方式,他們節(jié)約了大量的開(kāi)發(fā)時(shí)間。
發(fā)布到任何32位處理器
LabVIEW包括一個(gè)廣泛的工具集,該工具集構(gòu)成了一個(gè)用于設(shè)計(jì)、控制和測(cè)試的圖形化開(kāi)發(fā)平臺(tái)。新的NILabVIEW嵌入式開(kāi)發(fā)模塊是LabVIEW圖形化編程環(huán)境的一款全新附加模塊,是一個(gè)開(kāi)放的框架,它可以集成任意的第三方工具鏈,將生成的C代碼與LabVIEW運(yùn)行庫(kù)函數(shù)和板卡支持程序包,編譯成為針對(duì)某一目標(biāo)并能在之上運(yùn)行的二進(jìn)制代碼。通過(guò)LabVIEW嵌入式開(kāi)發(fā)模塊和工具鏈,可以發(fā)布到運(yùn)行任何操作系統(tǒng)的任何的32位處理器。該模塊包含了近千個(gè)內(nèi)建的庫(kù)函數(shù),涵蓋了高等算法、文件I/O、邏輯和信號(hào)處理各個(gè)方面。原先無(wú)法利用到嵌入式編程的工程師們都可以進(jìn)入32位微處理器的領(lǐng)域之中,通過(guò)LabVIEW中附加的狀態(tài)圖、控制圖表、信號(hào)處理庫(kù)函數(shù)等這一完整的工具來(lái)設(shè)計(jì)他們的應(yīng)用,解決各種問(wèn)題。此外,通過(guò)LabVIEW嵌入式方式,工程師和科學(xué)家可以使用一種叫做內(nèi)聯(lián)C節(jié)點(diǎn)(InlineCNode)的新特性,整合現(xiàn)有的嵌入式代碼,來(lái)保持LabVIEW的開(kāi)放架構(gòu)。另外,在LabVIEW嵌入式項(xiàng)目環(huán)境中,還可以直接添加用C或者匯編開(kāi)發(fā)的源代碼,或者庫(kù)文件,幫助開(kāi)發(fā)人員充分利用以前的工作成果。
圖2內(nèi)聯(lián)C節(jié)點(diǎn)
LabVIEW嵌入式環(huán)境的調(diào)試功能非常強(qiáng)大。除了用于快速調(diào)試的圖形化用戶(hù)接口顯示件、探針、斷點(diǎn)和函數(shù)單點(diǎn)調(diào)試之外,LabVIEW嵌入式開(kāi)發(fā)模塊為代碼調(diào)試提供了另外兩種無(wú)縫的接口。在嵌入式目標(biāo)平臺(tái)上,工程師可以使用“儀器調(diào)試”通過(guò)TCP/IP、RS232或CAN進(jìn)行調(diào)試。使用內(nèi)建的片上調(diào)試接口,工程師可在不影響程序性能基礎(chǔ)上通過(guò)工業(yè)標(biāo)準(zhǔn)協(xié)議如JTAG、BDI和Nexus等進(jìn)行調(diào)試。
減少與特定硬件以及操作系統(tǒng)的相關(guān)性
基于平臺(tái)的工具,需要能夠表達(dá)整個(gè)系統(tǒng),而減少與特定硬件以及操作系統(tǒng)的相關(guān)性。在傳統(tǒng)的開(kāi)發(fā)模式中,嵌入式目標(biāo)本身要求程序員在編寫(xiě)代碼之前對(duì)目標(biāo)有深入的了解。程序需要知道板卡上各種關(guān)于內(nèi)存映射和寄存器的信息,才能在板卡上執(zhí)行他們的代碼。另外,大部分代碼是專(zhuān)為某一特定目標(biāo)編寫(xiě)的。這樣,在一塊板卡上使用不同的微處理器或是不同的外圍設(shè)備,可能就需要重新編寫(xiě)大部分已有的代碼,或是完全從頭開(kāi)始。這意味著最終產(chǎn)品的擴(kuò)展性方面是有缺陷的。使用LabVIEW嵌入式開(kāi)發(fā)模塊,工程師和科學(xué)家們不需要了解最終的目標(biāo)就可以進(jìn)行代碼開(kāi)發(fā),因?yàn)檐浖傻氖荓abVIEW應(yīng)用的ANSIC代碼,而不是針對(duì)某個(gè)特定目標(biāo)的二進(jìn)制代碼。如圖3所示,灰色區(qū)域的部分對(duì)于開(kāi)發(fā)員來(lái)說(shuō)是透明的,他們?cè)陂_(kāi)發(fā)過(guò)程中不需要了解目標(biāo)硬件上內(nèi)存映射和寄存器的情況。同時(shí),LabVIEW嵌入式方式是一個(gè)開(kāi)放的框架,它可以整合任意的第三方工具鏈,將生成的C代碼、LabVIEW運(yùn)行庫(kù)函數(shù)和板卡支持程序包(BSP)編譯成為針對(duì)某一目標(biāo)并能在這個(gè)目標(biāo)上運(yùn)行的二進(jìn)制代碼。BSP是一種作為C代碼與板上外圍硬件接口的底層代碼。因此,如果板卡需要升級(jí),工程師可以簡(jiǎn)單地將不同的BSP鏈接到LabVIEW中,在現(xiàn)有的圖形化代碼上作一小部分改動(dòng)就可以完成。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論