第9章:利用樹莓派Linux RT+FPGA PCIe實(shí)現(xiàn)國產(chǎn)化cRIO

1、引言:神電測控為什么要做支持LabVIEW直接編程的樹莓派+PCIe+FPGA國產(chǎn)化cRIO(圖形化、國產(chǎn)化、定制化、模塊化、成本化)
?????? ?在很多嵌入式設(shè)備里面,除了FPGA外,一般還會(huì)存在一個(gè)運(yùn)行實(shí)時(shí)系統(tǒng)的控制器,比如NI的cRIO設(shè)備,就是其中一種典型的代表。這種設(shè)備跟我們平時(shí)將FPGA插到電腦或者工控機(jī)上有些許不同,電腦和工控機(jī)主板上的CPU一般都是Intel X86結(jié)構(gòu),運(yùn)行的系統(tǒng)一般都是非實(shí)時(shí)的Windows系統(tǒng),這種主板的功耗和體積一般都比較大。
?????? ?隨著ARM內(nèi)核的興起,小型嵌入式設(shè)備逐步崛起,并且性能甚至超過了某些X86芯片,比如4核Cortex-A72,主頻1.5G的樹莓派ARM芯片,就是其中之一。ARM芯片非常適合跑嵌入式系統(tǒng),比如開源的Linux系統(tǒng)(Ubuntu、Debian和Raspbian)。目前市面是上跑Linux系統(tǒng)銷量最高的莫過于樹莓派了,號稱口袋計(jì)算機(jī),相信很多人聽說過。
?????? ?好消息是,最新的樹莓派開始往工業(yè)界滲透了,出現(xiàn)了工業(yè)級樹莓派CM4(具體內(nèi)容我們在后面給大家介紹),上面開始支持PCIe接口,這個(gè)PCIe接口不僅提高了樹莓派跟其他外設(shè)之間的傳輸帶寬,也給我們做FPGA嵌入式開發(fā)的工程師帶來了福音,我們將Pro4開發(fā)寶典里面的FPGA板卡通過PCIe線纜直接接到樹莓派主板上,這樣就實(shí)現(xiàn)了一個(gè)類似于NI的cRIO控制器架構(gòu)。
?????? ?而Linux系統(tǒng)的程序開發(fā),相信很多工程師都不會(huì),所以我們選擇LabVIEW直接編寫Linux程序,極大的降低了開發(fā)門檻,加上我們一直以來的LabVIEW My FPGA軟件工具包搞定了FPGA芯片里面的程序開發(fā),這樣二者一結(jié)合,一個(gè)人就能使用LabVIEW搞定Linux和FPGA的編程了,想要快速做出一個(gè)帶FPGA高速處理的邊緣計(jì)算盒子,也就是半天的功夫。更為重要的是,可以極大的降低硬件開發(fā)和設(shè)計(jì)成本,相對于NI的cRIO來說,硬件成本不到十分之一。而且樹莓派和FPGA都是模塊化的,樹莓派的核心板,網(wǎng)上一大堆,白菜價(jià),還是工業(yè)級的,F(xiàn)PGA的核心板也是一樣,性價(jià)比都是極高的。
?????? ?說到cRIO控制器架構(gòu),估計(jì)沒有接觸過NI的用戶不是很了解,下面我們專門給用戶講解一下NI的cRIO控制器為什么受大家喜愛,有哪些特點(diǎn)值得我們學(xué)習(xí)。
????? ?2、NI cRIO控制器架構(gòu)、優(yōu)勢、特點(diǎn)(RT OS+FPGA+Module)
?????? ?NI公司最出名的莫過于PXI機(jī)箱和PXI控制器,這種設(shè)備在復(fù)雜環(huán)境下的抗干擾能力有限,于是在很多年前,NI創(chuàng)始人Dr.T開始規(guī)劃和設(shè)計(jì)了一種全新的兼顧性能、可靠性、模塊化、支持LabVIEW圖形化編程的控制器,稱之為compact RIO,簡稱cRIO。
?????? ?下面,我們給出幾種NI常見的cRIO設(shè)備實(shí)物照片和軟件開發(fā)示意圖,如圖9-1~9-5所示。





? ? ? ? 這些cRIO設(shè)備由3部分構(gòu)成:運(yùn)行實(shí)時(shí)系統(tǒng)的CPU、機(jī)箱背板上的FPGA、各種功能模塊??梢酝ㄟ^一幅系統(tǒng)框架來闡明cRIO設(shè)備的架構(gòu),如圖9-6所示。

? ? ? ??CPU:相當(dāng)于大腦。早期的cRIO里面的控制器采用的是飛思卡爾PowerPC架構(gòu)的CPU,跑VxWorks實(shí)時(shí)系統(tǒng);隨著ARM芯片的興起,現(xiàn)在的cRIO控制器部分基本上都是ARM內(nèi)核和X86 CPU,跑的是開源的Linux實(shí)時(shí)系統(tǒng),簡稱Linux RT;當(dāng)然也可以在里面跑Windows系統(tǒng)。當(dāng)下和未來,Linux RT將是NI重點(diǎn)發(fā)展的方向,畢竟Linux開源和免費(fèi)。
?????? ?FPGA:相當(dāng)于神經(jīng)中樞。這個(gè)是cRIO里面最核心的部件,不同于市面上其他家的硬件,因?yàn)镹I開發(fā)了LabVIEW FPGA工具包,可以直接對FPGA進(jìn)行圖形化編程,所以在cRIO里面集成FPGA,可以有效的解決并行和高速信號采集、處理、閉環(huán)控制等問題,極大的降低了RT里面的程序壓力;同時(shí)解放了Linux RT里面的外設(shè)驅(qū)動(dòng)編寫,F(xiàn)PGA作為連接RT和模塊之間的橋梁,可以將功能模塊采集的數(shù)據(jù)直接通過PCIe或者AXI總線(ZYNQ)傳輸?shù)絃inux系統(tǒng)里面;也可以承擔(dān)復(fù)雜的、對速度響應(yīng)要求極高的任務(wù)執(zhí)行以及對原始的數(shù)據(jù)進(jìn)行高速處理,比如濾波,F(xiàn)FT,數(shù)值特征提取等等;FPGA既能起到橋梁的作用,還可以做CPU做不到的事情,一舉兩得。
?????? ?功能模塊:相當(dāng)于手、腳和感官。NI針對cRIO開發(fā)了幾百種功能模塊,其功能覆蓋了目前所有已知領(lǐng)域:數(shù)據(jù)采集、運(yùn)動(dòng)控制、信號生成、圖像視覺、總線通信,更是在風(fēng)電、能源、健康狀態(tài)監(jiān)測、資產(chǎn)監(jiān)測、HIL硬件在環(huán)、模型仿真有著諸多的應(yīng)用和案例。
?????? ?總結(jié):RT系統(tǒng)適合跑一些us級的任務(wù),F(xiàn)PGA可以做多個(gè)并行的ns級的任務(wù),功能模塊負(fù)責(zé)輸入和輸出,也就是I/O。
?????? ?可以看出,NI發(fā)明的cRIO設(shè)備有著許多其他廠商控制器無法取代的優(yōu)勢:
n? 充分發(fā)揮出Linux實(shí)時(shí)系統(tǒng)和FPGA并行計(jì)算的優(yōu)勢,二者結(jié)合基本上可以搞定80%的工程應(yīng)用問題;us級的任務(wù)代碼交給Linux RT處理,ns級的程序交給FPGA搞定,通力合作干掉市面上所有PAC控制器。
n? 支持LabVIEW圖形化編程,Linux RT和FPGA里面的所有代碼都可以采用LabVIEW編程,并且NI有著比Matlab更多更全面、極為豐富的軟件工具包和各種算法VI,都可以直接編譯部署下載到RT和FPGA里面運(yùn)行,這個(gè)也是NI為人類貢獻(xiàn)的寶貴財(cái)富。
n? 幾百種功能模塊可以自由組合,任意插拔,給不同行業(yè)的客戶提供了快速的解決方案,就像樂高機(jī)器人那樣,只要用戶有好的idea,cRIO都能幫大家快速實(shí)現(xiàn)。
?
?????? ?講了這么多NI cRIO設(shè)備的優(yōu)勢,大家是不是都有點(diǎn)心動(dòng)了,是不是想在自己現(xiàn)在或者今后的項(xiàng)目當(dāng)中也試試cRIO呢?cRIO確實(shí)是個(gè)好東西,可惜價(jià)格太貴了,對于一般的公司和個(gè)體戶來說,cRIO幾~十幾W的價(jià)格還是一座難以逾越的大山,畢竟我們是發(fā)展中國家,美國是發(fā)達(dá)國家,由于匯率和人民生活水平的原因,導(dǎo)致了NI硬件昂貴的感覺。
?????? ?一個(gè)項(xiàng)目本身可能也就十幾W的預(yù)算,如果全部被硬件占用的話,基本上大家就不用干了。所以我們這本書(Pro5)就是給用戶開辟了一條另辟蹊徑的道路,并且經(jīng)過很多企業(yè)客戶的實(shí)踐證明是可行的,那就是接下來我們要向大家介紹的國產(chǎn)化cRIO。
?????? ?無論是NI的cRIO設(shè)備還是我們這里提到的國產(chǎn)化cRIO,核心本質(zhì)和靈魂都是前面介紹的那一套框架:Linux RT+PCIe+FPGA+Module。并且我們提出的由樹莓派(英國Raspberry)或者RK3399(中國)+PCIe+FPGA實(shí)現(xiàn)的控制器跟NI本身沒有版權(quán)沖突,用戶可以放心自由的開發(fā)和使用。