基于LabVIEW的32位處理器嵌入式系統(tǒng)的開(kāi)發(fā)
隨著32位多核處理器應(yīng)用逐漸走熱,設(shè)計(jì)者正面臨著新的挑戰(zhàn), 業(yè)內(nèi)專(zhuān)家指出面向角色(actor-oriented)的圖形化方法是更適合嵌入式軟件設(shè)計(jì)的工具。NI 的LabVIEW嵌入式開(kāi)發(fā)模塊是LabVIEW圖形化編程環(huán)境的一款全新附加模塊,通過(guò)這個(gè)軟件和圖形化系統(tǒng)設(shè)計(jì)的理念,原先無(wú)法利用到嵌入式編程的工程師們都可以進(jìn)入32位微處理器的領(lǐng)域之中。通過(guò)LabVIEW中附加的狀態(tài)圖、控制圖表、信號(hào)處理庫(kù)函數(shù)等這一完整的工具來(lái)設(shè)計(jì)它們的應(yīng)用,以解決各種問(wèn)題。本文對(duì)該開(kāi)發(fā)工具進(jìn)行了介紹。
隨著嵌入式系統(tǒng)變得越來(lái)越復(fù)雜,設(shè)計(jì)者正面臨著新的挑戰(zhàn):隨著基于32位微控制器(MCU)的嵌入式系統(tǒng)的成本向16位系統(tǒng)逐步接近,在許多高級(jí)應(yīng)用中8位和16位微控制器正逐步讓位給擴(kuò)展性更佳,性能更好的32位片上系統(tǒng)(SoC)。此外,由于單純通過(guò)CPU的性能提升來(lái)增加整個(gè)系統(tǒng)的性能已經(jīng)不是一種持久的發(fā)展趨勢(shì)了,所以主要的處理器制造商已經(jīng)轉(zhuǎn)向了多核心架構(gòu)。從Dell在幾個(gè)月前推出的多處理器核心的臺(tái)式計(jì)算機(jī),就可以看到這種趨勢(shì)。從消費(fèi)者和用戶(hù)的觀點(diǎn)上來(lái)看,處理性能的提升是一樣的。但是,從一個(gè)嵌入式系統(tǒng)開(kāi)發(fā)者的觀點(diǎn)來(lái)看,設(shè)計(jì)將變得更加復(fù)雜,因?yàn)槟仨毩私馊绾卧诙嗵幚砥鳝h(huán)境下開(kāi)發(fā)和分割您的應(yīng)用。根據(jù)十年前的估計(jì),嵌入式系統(tǒng)的平均代碼量為10萬(wàn)行。到2001年,這個(gè)數(shù)字實(shí)際已經(jīng)超過(guò)了100萬(wàn),而現(xiàn)在的數(shù)字估計(jì)為500萬(wàn)。
現(xiàn)在我們將視線轉(zhuǎn)移到當(dāng)前嵌入式系統(tǒng)的開(kāi)發(fā)工具上來(lái),隨著復(fù)雜度的逐漸上升,現(xiàn)在傳統(tǒng)工具很難降低編程工作的復(fù)雜度,嵌入式領(lǐng)域需要另一種方法來(lái)應(yīng)對(duì)這些挑戰(zhàn)。挑戰(zhàn)不僅是工具方面的,還有解決問(wèn)題的途徑:基于文本編程的嵌入式應(yīng)用開(kāi)發(fā)在將來(lái)不可能解決這些問(wèn)題。這已經(jīng)是許多業(yè)內(nèi)專(zhuān)家的共識(shí);Edward Lee博士是加州大學(xué)伯克利分校嵌入式研究方面的領(lǐng)先者,他指出現(xiàn)在嵌入式系統(tǒng)的開(kāi)發(fā)手段如基于文本編程和面向?qū)ο蟮墓ぞ叨茧y以用來(lái)構(gòu)建嵌入式實(shí)時(shí)系統(tǒng),因?yàn)槊嫦驅(qū)ο蠛茈y直觀地表達(dá)時(shí)間和平行性(parallelism),而時(shí)間和平行性或并行(concurrency)在現(xiàn)在的嵌入式系統(tǒng)中是必不可少的。Lee博士提出面向角色(actor-oriented)的圖形化方法是更適合嵌入式軟件設(shè)計(jì)的工具。
雖然嵌入式系統(tǒng)的挑戰(zhàn)越來(lái)越嚴(yán)峻,但是現(xiàn)在已經(jīng)有了許多解決的方向。許多供應(yīng)商采取了將底層工具的設(shè)計(jì)抽象出來(lái)的辦法。這種方法每前進(jìn)一步,都會(huì)吸引更多的用戶(hù)。另一個(gè)方向是可以更徹底地解決面臨的挑戰(zhàn),也就是向基于平臺(tái)的工具轉(zhuǎn)移,它能夠更好地表達(dá)整個(gè)系統(tǒng),而減少與特定硬件的相關(guān)性,這使得更多的軟件設(shè)計(jì)容易理解并被重復(fù)使用,而從基于文本的工具向圖形化工具的轉(zhuǎn)移則可以直觀地表達(dá)系統(tǒng),并解決系統(tǒng)的挑戰(zhàn)。圖形化系統(tǒng)設(shè)計(jì)(Graphical System Design)的理念就是源于這些趨勢(shì)。通過(guò)簡(jiǎn)化嵌入式編程的復(fù)雜性,它降低了對(duì)領(lǐng)域?qū)<以谇度胧皆O(shè)計(jì)流程中各個(gè)步驟的要求;同時(shí)提供了從設(shè)計(jì)、原型到部署的一條捷徑,使得工程師和科學(xué)家們可以更快速地進(jìn)行重復(fù)設(shè)計(jì)。
盡管市場(chǎng)上的工具都在向圖形化的方向轉(zhuǎn)變,但由于它們是針對(duì)特定領(lǐng)域特定應(yīng)用的工具,所以仍舊受到自身的限制,而這是不足以解決行業(yè)將要面臨的挑戰(zhàn)的。事實(shí)上,現(xiàn)在的嵌入式系統(tǒng)市場(chǎng)與八十年代早期的臺(tái)式計(jì)算機(jī)市場(chǎng)有很多相似之處,其中的一個(gè)特點(diǎn)就是非常分散?,F(xiàn)在市場(chǎng)所需的是一種完全的圖形化編程語(yǔ)言,提供足夠的靈活性和功能,以滿(mǎn)足更廣泛應(yīng)用的需求。因此,圖形化系統(tǒng)設(shè)計(jì)的關(guān)鍵因素是圖形化編程。
將設(shè)計(jì)方法學(xué)直接應(yīng)用于實(shí)現(xiàn)
自1986年誕生以來(lái),LabVIEW圖形化編程語(yǔ)言已經(jīng)開(kāi)始簡(jiǎn)化了系統(tǒng)的復(fù)雜性,并在同一個(gè)平臺(tái)上提供采集、分析和顯示等功能,在使用計(jì)算能力對(duì)處理過(guò)程自動(dòng)化的同時(shí),允許在研發(fā)原型,制造和測(cè)試過(guò)程中對(duì)軟硬件的重用,彌補(bǔ)了原先因?yàn)樵汀⒅圃旌蜏y(cè)試三個(gè)步驟間因工具不同而造成的這一鴻溝。在所有涉及到數(shù)據(jù)采集和控制的領(lǐng)域里,LabVIEW圖形化方式都已經(jīng)成為標(biāo)準(zhǔn)的開(kāi)發(fā)工具。從那時(shí)開(kāi)始,我們就一直向這個(gè)編程環(huán)境添加功能上的改進(jìn),現(xiàn)在LabVIEW在已有的定時(shí)循環(huán)結(jié)構(gòu)上新加了硬件定時(shí)功能,它是一種表示時(shí)間和并行的語(yǔ)義?,F(xiàn)在,我們就可以通過(guò)點(diǎn)擊來(lái)設(shè)置操作系統(tǒng)優(yōu)先級(jí),延時(shí),循環(huán)速率等等;回想在文章前面所提到的向多處理器轉(zhuǎn)移的趨勢(shì),現(xiàn)在我們可以憧憬使用可擴(kuò)展的直觀圖形化編程,來(lái)開(kāi)發(fā)應(yīng)用,并將處理過(guò)程分配到不同的處理器上。
新的NI LabVIEW嵌入式開(kāi)發(fā)模塊(LabVIEW Embedded Development Module,)是LabVIEW圖形化編程環(huán)境的一款全新附加模塊,通過(guò)這個(gè)軟件和圖形化系統(tǒng)設(shè)計(jì)的理念,原先無(wú)法利用到嵌入式編程的工程師們都可以進(jìn)入32位微處理器的領(lǐng)域之中。通過(guò)LabVIEW中附加的狀態(tài)圖、控制圖表、信號(hào)處理庫(kù)函數(shù)等這一完整的工具來(lái)設(shè)計(jì)它們的應(yīng)用,以解決各種問(wèn)題。
領(lǐng)域?qū)<遥谀硞€(gè)科學(xué)或工程領(lǐng)域的專(zhuān)家,但不一定是嵌入式的程序員-一般使用不同的模型或工具解決他們學(xué)術(shù)上或工程上的問(wèn)題。例如,開(kāi)發(fā)引擎控制單元(ECU)的工程師可能使用狀態(tài)圖來(lái)對(duì)引擎控制單元的功能進(jìn)行圖形化的描述。這位工程師可能是一個(gè)控制理論方面的專(zhuān)家,但是卻可能沒(méi)有任何嵌入式或C編程方面的經(jīng)驗(yàn)。直到現(xiàn)在,嵌入式應(yīng)用的實(shí)現(xiàn)仍然需要深入了解關(guān)于嵌入式編程工具,如C語(yǔ)言等方面的知識(shí)。因此,很多領(lǐng)域?qū)<乙獙?shí)現(xiàn)他們的解決方案,甚至只是簡(jiǎn)單的驗(yàn)證一個(gè)概念仍然要依賴(lài)專(zhuān)門(mén)的嵌入式開(kāi)發(fā)人員。這個(gè)存在于領(lǐng)域?qū)<液颓度胧匠绦騿T之間的鴻溝,使得開(kāi)發(fā)時(shí)間增加,而且容易在系統(tǒng)中引入錯(cuò)誤。
LabVIEW嵌入式開(kāi)發(fā)模塊在設(shè)計(jì)和實(shí)現(xiàn)間的鴻溝之上架起了一座橋梁。領(lǐng)域的專(zhuān)家現(xiàn)在可以使用相同環(huán)境快速地設(shè)計(jì)算法,對(duì)定制的設(shè)計(jì)進(jìn)行原型設(shè)計(jì),將他們的解決方案在所選的目標(biāo)上實(shí)現(xiàn),并進(jìn)行調(diào)試——所有這些過(guò)程都是通過(guò)圖形化方式實(shí)現(xiàn)的。
開(kāi)發(fā)與目標(biāo)無(wú)關(guān)的代碼
嵌入式目標(biāo)本身要求程序員在編寫(xiě)代碼之前對(duì)目標(biāo)有深入的了解。程序需要知道板卡上各種關(guān)于內(nèi)存映射和寄存器的信息,才能在板卡上執(zhí)行他們的代碼。另外,大部分代碼是專(zhuān)為某一特定目標(biāo)編寫(xiě)的。這樣,在一塊板卡上使用不同的微處理器或是不同的外圍設(shè)備,可能就需要重新編寫(xiě)大部分已有的代碼,或是完全從頭開(kāi)始。這意味著最終產(chǎn)品的擴(kuò)展性方面是有缺陷的。
圖1:LabVIEW 開(kāi)發(fā)界面
但是,使用LabVIEW嵌入式開(kāi)發(fā)模塊,工程師和科學(xué)家們不需了解最終的目標(biāo),就可以進(jìn)行代碼開(kāi)發(fā),因?yàn)檐浖傻氖荓abVIEW應(yīng)用的ANSI C代碼,而不是針對(duì)某個(gè)特定目標(biāo)的二進(jìn)制代碼。LabVIEW嵌入式方式是一個(gè)開(kāi)放的框架,它可以整合任意的第三方工具鏈,將生成的C代碼、LabVIEW實(shí)時(shí)庫(kù)函數(shù)和板卡支持程序包(BSP)編譯成為針對(duì)某一目標(biāo)并能在這個(gè)目標(biāo)上運(yùn)行的二進(jìn)制代碼。BSP是一種作為C代碼與板上外圍硬件接口的底層代碼。因此,如果板卡需要升級(jí),工程師可以簡(jiǎn)單地將不同的BSP鏈接到LabVIEW中,在現(xiàn)有的圖形化代碼上作一小部分改動(dòng)就可以完成。
與目標(biāo)無(wú)關(guān)的代碼開(kāi)發(fā)意味著工程師和科學(xué)家不再需要等待硬件確定之后再開(kāi)始設(shè)計(jì)算法。這樣并行的工作和效率的提升,使開(kāi)發(fā)周期和產(chǎn)品上市時(shí)間大大縮短。最后,所生成的LabVIEW代碼不是針對(duì)某個(gè)特定平臺(tái)的,所以您很容易升級(jí)到新的硬件。
使用LabVIEW嵌入式特性縮短開(kāi)發(fā)時(shí)間
LabVIEW嵌入式開(kāi)發(fā)模塊構(gòu)建在自LabVIEW誕生以來(lái)近20年的創(chuàng)新精神之上,幫助工程師和科學(xué)家們利用數(shù)百個(gè)內(nèi)建的庫(kù)函數(shù),涵蓋高等算法、文件I/O、邏輯和信號(hào)處理各個(gè)方面。通過(guò)LabVIEW嵌入式方式 ,工程師和科學(xué)家可以使用一種叫做內(nèi)聯(lián)C節(jié)點(diǎn)(Inline C Node)的新特性,整合現(xiàn)有的嵌入式代碼,來(lái)保持LabVIEW的開(kāi)放架構(gòu)。
除了用于快速調(diào)試的內(nèi)建圖形化用戶(hù)接口顯示件、探針、斷點(diǎn)和函數(shù)步進(jìn)之外,LabVIEW嵌入式開(kāi)發(fā)模塊為代碼調(diào)試提供了另外兩種無(wú)縫的接口。在嵌入式目標(biāo)平臺(tái)上,工程師可以使用“儀器調(diào)試”(instrumented debugging),以便于通過(guò)TCP/IP、RS232,或CAN進(jìn)行調(diào)試。使用內(nèi)建的片上調(diào)試接口,工程師可以通過(guò)工業(yè)標(biāo)準(zhǔn)協(xié)議,如JTAG、BDI和Nexus等,進(jìn)行調(diào)試,同時(shí)不影響程序性能。
LabVIEW嵌入式開(kāi)發(fā)模塊使領(lǐng)域?qū)<铱梢允褂矛F(xiàn)有的技術(shù)進(jìn)行更多的應(yīng)用,使用同一環(huán)境進(jìn)行算法設(shè)計(jì)、原型,實(shí)現(xiàn)他們的解決方案,極大地縮短開(kāi)發(fā)時(shí)間和產(chǎn)品上市時(shí)間。
NI提供了各種硬件平臺(tái)與LabVIEW集成,完成從設(shè)計(jì)、原型到部署的全過(guò)程。例如使用LabVIEW和NI 可重復(fù)配置I/O(RIO)設(shè)備或NI CompactRIO平臺(tái),他們可以快速而便捷地創(chuàng)建嵌入式系統(tǒng)的原型。NI現(xiàn)有的一個(gè)成功案例就是幫助汽車(chē)控制和數(shù)據(jù)采集解決方案的提供商--Drivven公司通過(guò)NI CompactRIO對(duì)基于FPGA的2004 Yamaha YZF-R6摩托車(chē)引擎控制系統(tǒng)設(shè)計(jì)原型,他們的目標(biāo)是為基于FPGA傳動(dòng)控制器提供一條無(wú)縫的從原型設(shè)計(jì)到生產(chǎn)的路徑。對(duì)于這個(gè)項(xiàng)目,Drivven在軟件上使用LabVIEW;在硬件上選擇了一個(gè)4插槽的NI CompactRIO嵌入式系統(tǒng),因?yàn)樗`活性強(qiáng)、體積小巧而且波形因數(shù)穩(wěn)定。利用這一系統(tǒng),他們可以在輕松地添加傳感器和激勵(lì)器的同時(shí)快速且便捷地觀察數(shù)據(jù),除此之外,還可以在一個(gè)超級(jí)運(yùn)動(dòng)型摩托車(chē)上利用的極為有限的空間放置控制器。這個(gè)項(xiàng)目包含三個(gè)主要的階段: 1,通過(guò)自定義I/O模塊的開(kāi)發(fā)。共有三個(gè)自定義I/O模塊監(jiān)視著所有摩托車(chē)的傳感器并控制它的激勵(lì)器,此外現(xiàn)在正在開(kāi)發(fā)其他的CompactRIO的模塊以用于傳動(dòng)控制應(yīng)用,包括用于驅(qū)動(dòng)電子節(jié)流閥的模塊和與通用的廢氣氧氣傳感器連接的模塊。2,映射工廠級(jí)ECU(Factory ECU)。把ECU數(shù)據(jù)記錄在1MB的文件上(在每分鐘一個(gè)文件的速率下高達(dá)20個(gè)文件)同時(shí)在許多種不同的節(jié)流閥位置和引擎速率(接近700個(gè)操作點(diǎn))的組合下駕駛摩托車(chē)從而完整地映射了工廠級(jí)ECU(Factory ECU)的性能。駕駛員仔細(xì)地駕駛著摩托車(chē),以盡可能的減少瞬時(shí)操作。在一輛跟隨的汽車(chē)?yán)锏墓こ處焺t周期地以無(wú)線的方式從CompactRIO接收數(shù)據(jù)文件,傳輸至一臺(tái)筆記本電腦并且立即分析這些數(shù)據(jù)以覆蓋所有操作點(diǎn)。一個(gè)基于筆記本電腦的NI LabVIEW應(yīng)用程序迅速地將數(shù)據(jù)分類(lèi)至速度/負(fù)載操作表,與此同時(shí)濾除瞬時(shí)數(shù)據(jù)。對(duì)每一個(gè)操作點(diǎn)都從這些數(shù)據(jù)計(jì)算出平均和標(biāo)準(zhǔn)的偏差。在兩個(gè)小時(shí)里,這個(gè)團(tuán)隊(duì)采集了90%摩托車(chē)的操作點(diǎn)的數(shù)據(jù),這對(duì)于全面理解工廠級(jí)ECU的映射是一個(gè)足夠充分的覆蓋。后來(lái),在實(shí)驗(yàn)室里,工程師又使用LabVIEW對(duì)這些數(shù)據(jù)進(jìn)行處理,在圖形化地修改原始數(shù)據(jù)以填充丟失的操作點(diǎn)的同時(shí)提供了3維和2維的可視化信息。3,引擎控制。在最后階段,Drivven使用CompactRIO對(duì)一個(gè)研究性質(zhì)的ECU進(jìn)行原型設(shè)計(jì),它的性能可以與工廠級(jí)ECU相媲美,但是卻提供了可以實(shí)施未來(lái)控制算法研究和開(kāi)發(fā)的功能(這對(duì)使用生產(chǎn)目的的電子是不可能的)。利用CompactRIO,Drivven實(shí)現(xiàn)了許多引擎管理FPGA核,它們都具有可配置的LabVIEW FPGA圖表并放置在方框圖里。使用LabVIEW實(shí)時(shí)模塊,實(shí)現(xiàn)了速度-密度和alpha-N引擎控制策略(經(jīng)常用于高性能的賽車(chē)場(chǎng)合)的結(jié)合。所以說(shuō),Compact RIO和LabVIEW提供了所需的可靠性和精確的定時(shí)資源,而且這個(gè)系統(tǒng)具有足夠穩(wěn)定性來(lái)承受工作環(huán)境的高溫和高振動(dòng)。如果讀者想要閱讀完整的解決方案,請(qǐng)?jiān)L問(wèn)ni.com/china,輸入信息碼(info code)cn5k8t。
另外使用LabVIEW嵌入式開(kāi)發(fā)模塊,還可以制造嵌入式板卡并部署到任意的32位微處理器。正如LabVIEW使工程師們可以開(kāi)發(fā)定制的虛擬儀器,而不再依賴(lài)供應(yīng)商定義的臺(tái)式儀器,從而在測(cè)試和測(cè)量領(lǐng)域掀起一場(chǎng)革命一樣,LabVIEW嵌入式開(kāi)發(fā)模塊使得業(yè)內(nèi)專(zhuān)家可以使用他們的專(zhuān)業(yè)知識(shí)開(kāi)發(fā)嵌入式應(yīng)用,而不需要再依賴(lài)嵌入式方面的專(zhuān)家。
NI嵌入式開(kāi)發(fā)模塊示意圖
隨著嵌入式系統(tǒng)設(shè)計(jì)的復(fù)雜性日益增加,圖形化方式是一個(gè)必然的趨勢(shì),它正在對(duì)嵌入式設(shè)計(jì)進(jìn)行重新的定義,使更多的工程師可以以一種前所未有的方式使用嵌入式開(kāi)發(fā),從而使設(shè)計(jì)的速度和質(zhì)量得到提高。將分散的市場(chǎng)整合、采用標(biāo)準(zhǔn)和現(xiàn)成可用的技術(shù),并發(fā)布集成的、易用的軟硬件平臺(tái)——這就是NI多年來(lái)所持之以恒的運(yùn)營(yíng)模式。圖形化系統(tǒng)設(shè)計(jì),這是一個(gè)將嵌入式設(shè)計(jì)推向更廣大受眾的平臺(tái),我們通過(guò)一個(gè)統(tǒng)一的圖形化工具提供這種功能,這種工具能將領(lǐng)域?qū)<覐脑桨l(fā)復(fù)雜的嵌入式設(shè)計(jì)中解脫出來(lái)。從設(shè)計(jì)、原型到實(shí)現(xiàn)的整個(gè)過(guò)程中,使用統(tǒng)一的設(shè)計(jì)工具無(wú)疑將會(huì)大大提升整個(gè)設(shè)計(jì)過(guò)程的效率。
評(píng)論