電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 1403|回復(fù): 0
收起左側(cè)

stm32嵌入式系統(tǒng)教學(xué)_LabView開發(fā)嵌入式系統(tǒng)

[復(fù)制鏈接]

2607

主題

2607

帖子

7472

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

積分
7472
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-7-29 15:45:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
stm32嵌入式系統(tǒng)教學(xué)_LabView開發(fā)嵌入式系統(tǒng),   

傳統(tǒng)設(shè)計(jì)模式所應(yīng)對(duì)的挑戰(zhàn)

嵌入式系統(tǒng)正在滲入現(xiàn)代社會(huì)的各個(gè)方面,廣泛地應(yīng)用于航空航天、通信設(shè)備、消費(fèi)電子、工業(yè)控制、汽車、船舶等領(lǐng)域,據(jù)統(tǒng)計(jì),在美國平均每個(gè)中產(chǎn)階級(jí)家庭要使用40~50個(gè)嵌入式系統(tǒng)。巨大的市場(chǎng)需求推動(dòng)了嵌入式系統(tǒng)向更高的技術(shù)水平發(fā)展。設(shè)計(jì)師們一方面采用性能更強(qiáng)大的嵌入式處理器如32位、64位RISC芯片取代傳統(tǒng)的8位、16位微處理器;另一方面嵌入式系統(tǒng)也由單處理器單操作系統(tǒng)的傳統(tǒng)結(jié)構(gòu)向混合型Multi-core系統(tǒng)發(fā)展,通過采用多個(gè)處理器和OS提高系統(tǒng)并行度來提高系統(tǒng)運(yùn)行效能,并且設(shè)計(jì)師們往往同時(shí)采用MPU、DSP和FPGA等多種可編程器件來增強(qiáng)處理能力,滿足應(yīng)用功能的升級(jí)。

嵌入式系統(tǒng)復(fù)雜性的不斷增加給設(shè)計(jì)師們帶來了很大的挑戰(zhàn),代碼長度呈指數(shù)級(jí)增加,根據(jù)十年前的估計(jì),嵌入式系統(tǒng)的平均代碼量為10萬行,到2001 年實(shí)際已經(jīng)超過了100萬,而現(xiàn)在估計(jì)為500萬。第三方獨(dú)立市場(chǎng)預(yù)測(cè)機(jī)構(gòu)EMF在對(duì)900多名嵌入式系統(tǒng)開發(fā)人員進(jìn)行調(diào)研后指出,超過50%的嵌入式設(shè)計(jì)比預(yù)期時(shí)間晚上市,而平均延遲高達(dá)4個(gè)月;在已發(fā)布的產(chǎn)品中,有近30%的設(shè)計(jì)未達(dá)到預(yù)期的功能和指標(biāo)。

由此可見,隨著嵌入式系統(tǒng)復(fù)雜性的不斷增加,軟件工程的重要性毋庸置疑,而大部分的嵌入式系統(tǒng)開發(fā)人員都缺乏這方面的專業(yè)訓(xùn)練。與此同時(shí),隨著嵌入式系統(tǒng)的廣泛應(yīng)用,越來越多領(lǐng)域的專家比如機(jī)器人設(shè)計(jì)師、控制工程師、測(cè)試工程師需要使用嵌入式技術(shù)來構(gòu)建他們的系統(tǒng),他們既缺乏嵌入式系統(tǒng)的專業(yè)知識(shí),也不一定經(jīng)過軟件工程的專業(yè)訓(xùn)練。因此,無論是嵌入式系統(tǒng)本身的發(fā)展,還是開發(fā)人員的專業(yè)限制,都需要一種新的設(shè)計(jì)模式和解決問題的途徑來應(yīng)對(duì)目前的挑戰(zhàn)。

嵌入式系統(tǒng)開發(fā)工具的發(fā)展趨勢(shì)

隨著嵌入式系統(tǒng)的快速發(fā)展和復(fù)雜性的不斷增加,基于文本的編程方式所面臨的挑戰(zhàn)愈發(fā)嚴(yán)峻,這種編程模式在將來不可能徹底解決問題。加州大學(xué)伯克利分校嵌入式研究專家Edward Lee博士指出,現(xiàn)有的嵌入式系統(tǒng)的開發(fā)手段如基于文本編程和面向?qū)ο蟮墓ぞ叨茧y以用來構(gòu)建嵌入式實(shí)時(shí)系統(tǒng),因?yàn)槊嫦驅(qū)ο蠛茈y直觀地表達(dá)時(shí)間和平行性 (parallelism),而時(shí)間和平行性或并行(concurrency)在現(xiàn)在的嵌入式系統(tǒng)中是必不可少的。面向角色(actor- oriented)的圖形化方法是更適合嵌入式軟件設(shè)計(jì)的工具。

應(yīng)對(duì)嵌入式系統(tǒng)所面臨的挑戰(zhàn),工程師們已經(jīng)有了一些解決的方向,比如采用實(shí)時(shí)多任務(wù)編程技術(shù)和交叉開發(fā)工具技術(shù)來控制功能復(fù)雜性、簡化應(yīng)用程序設(shè)計(jì)、保障軟件質(zhì)量和縮短開發(fā)周期。但是現(xiàn)有的嵌入式系統(tǒng)開發(fā)工具非常多,全世界嵌入式處理器的品種總量已經(jīng)超過1000種,流行體系結(jié)構(gòu)有30多個(gè)系列,在其上運(yùn)行的操作系統(tǒng)環(huán)境也非常多樣化,包括VxWorks、QNX、Linux、 Nuclears、WinCE等等。不僅各種操作系統(tǒng)有各自的開發(fā)工具,在同一系統(tǒng)下開發(fā)的不同階段也有不同的開發(fā)工具。如在用戶的目標(biāo)板開發(fā)初期,需要硬件仿真器來調(diào)試硬件系統(tǒng)和基本的驅(qū)動(dòng)程序,在調(diào)試應(yīng)用程序階段可以使用交互式的開發(fā)環(huán)境進(jìn)行軟件調(diào)試,在測(cè)試階段需要一些專門的測(cè)試工具軟件進(jìn)行功能和性能的測(cè)試等等。最合理的解決方案是向基于平臺(tái)的工具轉(zhuǎn)移,它能夠更好地表達(dá)整個(gè)系統(tǒng),減少與特定硬件以及操作系統(tǒng)的相關(guān)性,使更多的軟件設(shè)計(jì)和算法容易理解并被重復(fù)使用;而從基于文本的工具向圖形化工具的轉(zhuǎn)移則可以直觀地表達(dá)系統(tǒng),圖形化系統(tǒng)設(shè)計(jì)(Graphical System Design)的理念就是源于這兩大趨勢(shì)。通過簡化嵌入式編程的復(fù)雜性,降低了對(duì)工程師在嵌入式設(shè)計(jì)流程中各個(gè)步驟的要求;同時(shí)提供了從設(shè)計(jì)、原型到部署,從軟件調(diào)試、功能測(cè)試到生產(chǎn)檢測(cè)的統(tǒng)一環(huán)境,使得工程師們可以更快速地進(jìn)行重復(fù)設(shè)計(jì)。

在嵌入式系統(tǒng)中實(shí)現(xiàn)圖形化已經(jīng)成為大勢(shì)所趨,現(xiàn)在市場(chǎng)上的工具都在向圖形化的方向轉(zhuǎn)變,但往往僅限于基于嵌入式操作系統(tǒng)的圖形界面開發(fā);而且由于它們是針對(duì)特定硬件或操作系統(tǒng)的工具,與硬件和操作系統(tǒng)平臺(tái)有很大的相關(guān)性,這不足以徹底解決行業(yè)將要面臨的挑戰(zhàn)的,F(xiàn)在市場(chǎng)需要的是一種完全的圖形化編程語言,提供足夠的靈活性和功能,以滿足更廣泛應(yīng)用的需求。因此,圖形化系統(tǒng)設(shè)計(jì)的關(guān)鍵因素是圖形化編程。

對(duì)于時(shí)間和平行性的支持

20年來,科學(xué)家和工程師一直在使用LabVIEW為他們的設(shè)計(jì)實(shí)驗(yàn)室、驗(yàn)證實(shí)驗(yàn)室和生產(chǎn)現(xiàn)場(chǎng)構(gòu)建自動(dòng)化數(shù)據(jù)采集和儀器控制解決方案,并在這些應(yīng)用領(lǐng)域成為業(yè)界的事實(shí)標(biāo)準(zhǔn)。其核心在于,LabVIEW圖形化編程語言使沒有太多軟件背景的技術(shù)專家能夠快速搭建高級(jí)自動(dòng)化測(cè)量和控制系統(tǒng)。和傳統(tǒng)的文本編程相比,LabVIEW天生是一種并行結(jié)構(gòu)的編程語言,而時(shí)間和并行性在現(xiàn)在的嵌入式系統(tǒng)中是必不可少的。比如,LabVIEW在已有的定時(shí)循環(huán)結(jié)構(gòu)上新加了硬件定時(shí)功能,它是一種表示時(shí)間和并行的語義,可以設(shè)置操作系統(tǒng)優(yōu)先級(jí)、延時(shí)、循環(huán)速率等等,如圖1所示。如果我們將圖1所示的兩個(gè)并行任務(wù)的執(zhí)行目標(biāo)擴(kuò)展到嵌入式對(duì)象,比如FPGA或微處理器,就可以發(fā)現(xiàn)通過編程環(huán)境的一致性和可升級(jí)性,LabVIEW 能夠容易地實(shí)現(xiàn)和管理嵌入式系統(tǒng)的并行性。回想在文章前面所提到的向多處理器轉(zhuǎn)移的趨勢(shì),現(xiàn)在我們可以憧憬使用可擴(kuò)展的直觀圖形化編程來開發(fā)應(yīng)用,并將處理過程分配到不同的處理器上。

  
  


圖1 LabView對(duì)兩個(gè)并行任務(wù)的編程

支持多種算法設(shè)計(jì)

談到嵌入式系統(tǒng)設(shè)計(jì),人們所指的其實(shí)包括兩部分工作:算法設(shè)計(jì)和固件設(shè)計(jì)。對(duì)于嵌入式系統(tǒng)設(shè)計(jì)來說,另一個(gè)關(guān)鍵要求是軟件平臺(tái)必須能夠兼顧實(shí)時(shí)嵌入式設(shè)計(jì)中常見的多種算法設(shè)計(jì),即計(jì)算模型。這些計(jì)算模型符合系統(tǒng)設(shè)計(jì)師們籌劃系統(tǒng)時(shí)的方式,從而降低從“系統(tǒng)要求”轉(zhuǎn)換到“軟件設(shè)計(jì)”的復(fù)雜性。近年來 LabVIEW已經(jīng)包含了多種計(jì)算模型以更好地滿足不同專業(yè)背景的嵌入式系統(tǒng)開發(fā)者的需求。LabVIEW現(xiàn)在可以通過連續(xù)時(shí)間仿真、狀態(tài)圖、圖形化數(shù)據(jù)流模型和基于文本的數(shù)學(xué)語言mathscript等多種方式來表達(dá)各種算法,同時(shí)它提供了很多交互式的工具用來幫助數(shù)字濾波器、控制模型、通信系統(tǒng)的設(shè)計(jì)以及數(shù)字信號(hào)處理算法的開發(fā),從而在這些頂層應(yīng)用中進(jìn)一步簡化設(shè)計(jì)師的工作。

快速構(gòu)建原型—溝通虛擬世界與物理世界的橋梁

如前所述,很多設(shè)計(jì)比預(yù)期時(shí)間晚上市,并且有一些在投入市場(chǎng)以后發(fā)現(xiàn)未達(dá)到預(yù)定的功能和指標(biāo),因此必須采取一定的措施來加快設(shè)計(jì)流程、提高設(shè)計(jì)質(zhì)量。一種解決方案就是更早地將真實(shí)世界的信號(hào)和硬件引入到設(shè)計(jì)流程之中,進(jìn)行更好的系統(tǒng)原型化,從而在早期就發(fā)現(xiàn)并修正潛在的問題。

但是在任何設(shè)計(jì)和開發(fā)流程中,基于軟件設(shè)計(jì)和仿真工具的虛擬世界與電子或機(jī)械測(cè)量的物理世界之間有一個(gè)很大的鴻溝,而LabVIEW平臺(tái)最明顯的價(jià)值就是在虛擬和物理世界的鴻溝上建一座橋梁。物理測(cè)量是與設(shè)計(jì)和仿真完全不同的挑戰(zhàn),要求與廣泛的測(cè)量和控制硬件緊密集成,并以優(yōu)化的性能處理大量的通道數(shù)或超高速吞吐量。LabVIEW平臺(tái)經(jīng)過不斷演進(jìn),在物理測(cè)量領(lǐng)域具有很高的性能和靈活性。更重要的是,LabVIEW平臺(tái)是開放的,設(shè)計(jì)人員可以將測(cè)量數(shù)據(jù)與仿真結(jié)果相映射,甚至互換仿真和物理數(shù)據(jù),以用于設(shè)計(jì)中的行為建模或者以仿真激勵(lì)驅(qū)動(dòng)物理測(cè)試,從而更有效快速地進(jìn)行系統(tǒng)原型構(gòu)建。

嵌入式系統(tǒng)開發(fā)人員如果要定制硬件用于最終的發(fā)布,很難同時(shí)并行地開發(fā)軟件和硬件。而如果直到系統(tǒng)集成測(cè)試的時(shí)候才引入I/O用真實(shí)世界的信號(hào)檢驗(yàn)設(shè)計(jì),一旦發(fā)現(xiàn)存在問題,那就意味著很難在預(yù)期時(shí)間完成設(shè)計(jì)任務(wù)了。大多數(shù)設(shè)計(jì)師當(dāng)前用評(píng)估板來進(jìn)行系統(tǒng)的原型化,但是,原型板往往只具備少量的模擬和數(shù)字I/O通道,也很少支持視覺、運(yùn)動(dòng)或同步的功能。此外,設(shè)計(jì)師經(jīng)常因?yàn)樾枰獋鞲衅骰蛱厥釯/O的支持而花費(fèi)大量時(shí)間來開發(fā)定制的原型板,而這些僅僅是為了設(shè)計(jì)概念的驗(yàn)證。使用靈活的、商業(yè)化的原型平臺(tái)可以大大簡化這個(gè)過程,消除其中硬件驗(yàn)證和板級(jí)設(shè)計(jì)的大量工作。對(duì)于大多數(shù)系統(tǒng),原型化平臺(tái)必須包括最終發(fā)布系統(tǒng)的同樣部件,比如用于執(zhí)行算法的實(shí)時(shí)處理器、用于高速處理的可編程邏輯器件,或者將實(shí)時(shí)處理器接口到其他部件。因此,如果這個(gè)商業(yè)化的系統(tǒng)不能滿足所有的要求,那么這個(gè)平臺(tái)必須是可擴(kuò)展的,并且支持自定義。NI提供了各種硬件平臺(tái)與LabVIEW集成,完成從設(shè)計(jì)、原型到部署的全過程。例如使用LabVIEW和NI 可重復(fù)配置I/O(RIO)設(shè)備或NI CompactRIO平臺(tái),可以快速而便捷地創(chuàng)建嵌入式系統(tǒng)的原型。

例如Boston Engineering公司要開發(fā)一種牽力控制機(jī)用于數(shù)碼照片打印系統(tǒng)。其中,彩色墨盒通過驅(qū)動(dòng)馬達(dá)饋送到打印頭,由卷帶電機(jī)和推進(jìn)電機(jī)來控制牽力。切割機(jī)底盤的振動(dòng)、每次打印的照片數(shù)目和每個(gè)電機(jī)的速度變化都會(huì)影響到底層的牽力?刂葡到y(tǒng)通過兩個(gè)電機(jī)的位置來保證卷帶和推進(jìn)的牽力處于設(shè)定范圍之內(nèi),否則就會(huì)有色差。設(shè)計(jì)的牽力控制硬件需要兩個(gè)脈寬調(diào)制輸出來控制電機(jī),兩個(gè)編碼器將轉(zhuǎn)速反饋給電機(jī),兩個(gè)模擬輸入通道連接霍爾傳感器用來測(cè)量位置,兩根數(shù)字線用于信令。傳統(tǒng)的原型板無法滿足這些要求,需要使用可以自定義I/O的原型平臺(tái),因此他們使用CompactRIO平臺(tái)來進(jìn)行原型化工作。他們?cè)谇度胧娇刂破髦羞\(yùn)行管理程序,在FPGA中運(yùn)行電機(jī)控制算法,這種資源配置使得原型化構(gòu)建和最終系統(tǒng)發(fā)布在編程模式上是非常相似的。為了在FPGA中運(yùn)行控制算法,他們將ZPK(zero-pole-gain)模型轉(zhuǎn)化為LabVIEW數(shù)字濾波器設(shè)計(jì)工具包中提供的一種濾波器,由于這個(gè)工具包支持LabVIEW FPGA代碼的自動(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é)果。通過這種原型化方式,他們節(jié)約了大量的開發(fā)時(shí)間。

發(fā)布到任何32位處理器

LabVIEW 包括一個(gè)廣泛的工具集,該工具集構(gòu)成了一個(gè)用于設(shè)計(jì)、控制和測(cè)試的圖形化開發(fā)平臺(tái)。新的NI LabVIEW嵌入式開發(fā)模塊是LabVIEW圖形化編程環(huán)境的一款全新附加模塊,是一個(gè)開放的框架,它可以集成任意的第三方工具鏈,將生成的C代碼與 LabVIEW運(yùn)行庫函數(shù)和板卡支持程序包,編譯成為針對(duì)某一目標(biāo)并能在之上運(yùn)行的二進(jìn)制代碼。通過LabVIEW嵌入式開發(fā)模塊和工具鏈,可以發(fā)布到運(yùn)行任何操作系統(tǒng)的任何的32位處理器。該模塊包含了近千個(gè)內(nèi)建的庫函數(shù),涵蓋了高等算法、文件I/O、邏輯和信號(hào)處理各個(gè)方面。原先無法利用到嵌入式編程的工程師們都可以進(jìn)入32位微處理器的領(lǐng)域之中,通過LabVIEW中附加的狀態(tài)圖、控制圖表、信號(hào)處理庫函數(shù)等這一完整的工具來設(shè)計(jì)他們的應(yīng)用,解決各種問題。此外,通過LabVIEW嵌入式方式 ,工程師和科學(xué)家可以使用一種叫做內(nèi)聯(lián)C節(jié)點(diǎn)(Inline C Node)的新特性,整合現(xiàn)有的嵌入式代碼,來保持LabVIEW的開放架構(gòu)。另外,在LabVIEW嵌入式項(xiàng)目環(huán)境中,還可以直接添加用C或者匯編開發(fā)的源代碼,或者庫文件,幫助開發(fā)人員充分利用以前的工作成果。

  
  


圖2 內(nèi)聯(lián)C節(jié)點(diǎn)

LabVIEW嵌入式環(huán)境的調(diào)試功能非常強(qiáng)大。除了用于快速調(diào)試的圖形化用戶接口顯示件、探針、斷點(diǎn)和函數(shù)單點(diǎn)調(diào)試之外,LabVIEW嵌入式開發(fā)模塊為代碼調(diào)試提供了另外兩種無縫的接口。在嵌入式目標(biāo)平臺(tái)上,工程師可以使用“儀器調(diào)試”通過TCP/IP、RS232或CAN進(jìn)行調(diào)試。使用內(nèi)建的片上調(diào)試接口,工程師可在不影響程序性能基礎(chǔ)上通過工業(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)的開發(fā)模式中,嵌入式目標(biāo)本身要求程序員在編寫代碼之前對(duì)目標(biāo)有深入的了解。程序需要知道板卡上各種關(guān)于內(nèi)存映射和寄存器的信息,才能在板卡上執(zhí)行他們的代碼。另外,大部分代碼是專為某一特定目標(biāo)編寫的。這樣,在一塊板卡上使用不同的微處理器或是不同的外圍設(shè)備,可能就需要重新編寫大部分已有的代碼,或是完全從頭開始。這意味著最終產(chǎn)品的擴(kuò)展性方面是有缺陷的。使用LabVIEW嵌入式開發(fā)模塊,工程師和科學(xué)家們不需要了解最終的目標(biāo)就可以進(jìn)行代碼開發(fā),因?yàn)檐浖傻氖荓abVIEW應(yīng)用的ANSI C代碼,而不是針對(duì)某個(gè)特定目標(biāo)的二進(jìn)制代碼。如圖3所示,灰色區(qū)域的部分對(duì)于開發(fā)員來說是透明的,他們?cè)陂_發(fā)過程中不需要了解目標(biāo)硬件上內(nèi)存映射和寄存器的情況。同時(shí),LabVIEW嵌入式方式是一個(gè)開放的框架,它可以整合任意的第三方工具鏈,將生成的C代碼、LabVIEW運(yùn)行庫函數(shù)和板卡支持程序包 (BSP)編譯成為針對(duì)某一目標(biāo)并能在這個(gè)目標(biāo)上運(yùn)行的二進(jìn)制代碼。BSP是一種作為C代碼與板上外圍硬件接口的底層代碼。因此,如果板卡需要升級(jí),工程師可以簡單地將不同的BSP鏈接到LabVIEW中,在現(xiàn)有的圖形化代碼上作一小部分改動(dòng)就可以完成。

  
  


圖3 LabView嵌入式模塊的開發(fā)流程

與目標(biāo)無關(guān)的代碼開發(fā)意味著工程師和科學(xué)家不再需要等待硬件確定之后再開始設(shè)計(jì)算法。這樣并行的工作和效率的提升,使開發(fā)周期和產(chǎn)品上市時(shí)間大大縮短。最后,所生成的LabVIEW代碼不是針對(duì)某個(gè)特定平臺(tái)的,所以您很容易升級(jí)到新的硬件。

結(jié)語

LabVIEW為嵌入式系統(tǒng)開發(fā)提供了一個(gè)跨越多種、多代產(chǎn)品的連貫性的平臺(tái),使設(shè)計(jì)人員能夠多年重復(fù)并改進(jìn)其設(shè)計(jì),而不必替換其整個(gè)工具集或者重新學(xué)習(xí)不同的設(shè)計(jì)方法,從而使設(shè)計(jì)的速度和質(zhì)量得到提高。同時(shí),其圖形化的編程模式使得更多的工程師和科學(xué)家可以使用他們的專業(yè)知識(shí)開發(fā)嵌入式應(yīng)用,而不需要再依賴嵌入式方面的專家。使用統(tǒng)一的環(huán)境進(jìn)行設(shè)計(jì)、原型到部署,LabVIEW為嵌入式系統(tǒng)開發(fā)提供了前所未有的革新方式。

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表