3、國產(chǎn)化RIO:樹莓派/RK3399(Linux RT)+FPGA(PCIe通信)+功能模塊(AD、DA、傳感

?? ?3.1、樹莓派簡介(支持安裝NI Linux RT,LabVIEW 2020社區(qū)版免費開發(fā))
?????? ?提到樹莓派,估計很多用戶都不陌生,近些年,樹莓派火起來之后,僅在上海一個地區(qū),一個月的銷量就有800W套,可想而知,樹莓派之所以這么受大家喜愛,根本原因還是其超高的性價比,即性能強悍,價格低廉,加上開源的Linux系統(tǒng)和全球豐富的軟件生態(tài),進一步使其成為我們嵌入式領(lǐng)域的一個中流砥柱。
?????? ?關(guān)于樹莓派的詳細介紹,大家可以自行百度一下,網(wǎng)上有很多詳細的樹莓派科普資料和應(yīng)用案例。下面我們著重給用戶介紹一下本書會用到的工業(yè)級樹莓派CM4。
?????? ?下面的圖片都是來自于淘寶上的店鋪,我們在淘寶上搜索工業(yè)級樹莓派CM4,可以看到這款來自英國的樹莓派核心板,有多種配置供大家選擇。其中,圖9-7是樹莓派CM4的核心板高清圖片;圖9-8是目前主流的4種配置,用戶可以根據(jù)自己的實際情況進行選擇,本書選擇的是帶Wifi和eMMC(NAND Flash,類似硬盤),4G內(nèi)存和16G存儲;圖9-9是英國原裝的工業(yè)級樹莓派CM4開發(fā)板,注意,原裝的沒有外殼;圖9-10是樹莓派中國合作伙伴設(shè)計的外殼,便于直接拿來放在工業(yè)場合使用,圖9-11是內(nèi)部結(jié)構(gòu)圖。





? ? ? ??用戶可以自己到淘寶上購買一臺工業(yè)級樹莓派CM4回來,價格不貴,幾百元。這款CM4上的CPU核心指標(biāo)如下圖9-12所示,性能十分強悍。其中,CPU采用ARM Cortex-A72,4核,主頻高達1.5GHz,6個串口、雙路HDMI顯示、1路千兆以太網(wǎng)(要是有2路就完美了)。當(dāng)然,對我們來說,最重要的還是這款CM4支持PCIe 2.0通信,徹底解決了樹莓派跟FPGA之間的數(shù)據(jù)傳輸帶寬和標(biāo)準(zhǔn)化外設(shè)驅(qū)動問題。

? ? ? ??除了樹莓派,用戶還需要到淘寶上購買一根PCIe轉(zhuǎn)接線,因為市面上帶PCIe接口的FPGA開發(fā)板基本上都是X2、X4、X8的,而工業(yè)級樹莓派CM4底板上的PCIe母座是x1接口,雖然YouTube上面有高手用鋸子把那個座子卡槽鋸開,但是不推薦,很容易弄壞PCIe接口,所以大家可以到網(wǎng)上買一根PCIex1轉(zhuǎn)PCIex8轉(zhuǎn)接線,長度選擇20cm及以上比較好,這樣什么樣的PCIe外設(shè)都能接進去了,因為PCIe插槽寬度是向下兼容的。推薦大家購買ADT品牌的PCIe線纜,實物圖參考圖9-13所示。這里我們一并給出了實驗測試并驗證通過的淘寶店鋪鏈接:
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.71722e8dh4z8tX&id=605811283257&_u=fkhfk1fb3e0
?

? ? ? ??到這里,相當(dāng)于我們搞定了國產(chǎn)化cRIO的CPU控制器部分,也就是樹莓派CM4,可以直接安裝NI的Linux RT系統(tǒng),并且NI提供了一個免費版的LabVIEW開發(fā)軟件,也就是LabVIEW 2020社區(qū)版,大家可以在NI官網(wǎng)上自行下載,也可以聯(lián)系我們神電測控獲取。
?????? ?關(guān)于如何使用LabVIEW開發(fā)Linux RT系統(tǒng)里面的應(yīng)用程序開發(fā)流程,我們會在后面第8節(jié)給大家做詳細的介紹,并且后續(xù)所有的PCIe主機端測試都是基于樹莓派里面的Linux RT來進行的,所以Pro5這本書重點都是給用戶講解怎么在樹莓派里面通過PCIe總線跟FPGA進行交互。??? ?
?? ?3.2、帶PCIe的FPGA圖形化開發(fā)(沒有看過的用戶可以參考Pro4寶典里面的第7~8章)
?????? ?一旦樹莓派CM4跟FPGA打通之后,用戶就再也不用在Linux下面寫外設(shè)驅(qū)動了,像NI那樣,直接將常用的AD、DA、傳感器等外設(shè)接到FPGA上即可,由FPGA匯總之后再跟樹莓派里面的Linux RT程序進行交互;同時,這個FPGA里面還可以對原始的數(shù)據(jù)進行高速處理,比如濾波,F(xiàn)FT,數(shù)值特征提取等等;FPGA既能起到橋梁的作用,還可以做CPU做不到的事情,一舉兩得。
?????? ?因此,如何使用LabVIEW直接編寫FPGA芯片上的PCIe程序就顯得尤為重要了,好在我們花費了一年半的時間移植開發(fā)了基于LabVIEW的My FPGA PCIe/PXIe軟件工具包,詳細的開發(fā)過程參考4000多頁的Pro4開發(fā)寶典,這里我們就不在介紹了,本書Pro5重點給用戶講解的還是樹莓派里面的Linux RT+FPGA PCIe應(yīng)用程序開發(fā)。相當(dāng)于嵌入式系統(tǒng)里面的RT大腦程序開發(fā)。
?????? ?當(dāng)我們參考Pro4那本書將FPGA芯片里面的LabVIEW PCIe程序?qū)懞弥螅⑶揖幾g下載到FPGA板子里面,為了方便用戶后續(xù)調(diào)試,建議用戶將Pro4里面帶PCIe接口通信的FPGA bin文件固化到FPGA板子上的Flash里面,這樣板子跟樹莓派連接的時候,上電就可以自動加載運行了。另外,由于樹莓派的啟動速度要比一般的Windows系統(tǒng)快一些,所以在生成bit文件的時候,將SPIx4寫到xdc約束網(wǎng)表里面,這樣編譯出來的bit文件和生成的bin文件在加載的時候,速度非常快,也就是說,F(xiàn)PGA芯片里面的程序加載和運行一定要比樹莓派里面的Linux RT開機快一些,不然PCIe是不能被識別的。
?? ?3.3、在樹莓派Linux環(huán)境下,利用gcc編譯PCIe驅(qū)動ko文件(神電測控,獨家提供編譯好的PCIe ko驅(qū)動文件,不感興趣的用戶,可以跳過此步驟)
?????? ?當(dāng)帶PCIe的FPGA板子程序燒寫好之后,比如本書配套的黑金AX7103開發(fā)板,利用PCIex8轉(zhuǎn)成PCIex1線纜接到工業(yè)級樹莓派CM4上面,如圖9-14所示。此時,如果直接上電,樹莓派里面的Linux RT是不能直接識別PCIe外設(shè)的,我們還需要利用Xillybus官方提供的PCIe C文件和Makefile文件編譯出Linux系統(tǒng)下的PCIe驅(qū)動.ko文件,然后安裝到系統(tǒng)里面才可以;這一點遠沒有Windows系統(tǒng)簡單,Windows系統(tǒng)開機之后,設(shè)備管理器里面會出現(xiàn)一個PCIe黃色感嘆號,然后直接鼠標(biāo)右擊更新選擇瀏覽找到inf驅(qū)動文件加載就可以了!但是Linux系統(tǒng)下的驅(qū)動需要自己動手通過Makefile編譯生成ko文件,好在Xillybus將Makefile和C文件都免費提供了,所以在后面5.2節(jié)里面我們會給大家做詳細的講解。

? ? ? ? 當(dāng)然了,如果用戶不熟悉Linux系統(tǒng),可以不用自己編譯ko驅(qū)動文件,我們已經(jīng)編譯好了,用戶直接拿來安裝就可以了。如果想借著這個機會熟悉一下Linux基本操作,可以參考后續(xù)5.2節(jié)走一遍。
?????? ?當(dāng)ko驅(qū)動安裝完成后,重啟樹莓派,通過lsmod和lspci可以查看FPGA板子是否被樹莓派Linux RT識別到,如果沒有正常識別,還可以通過grep指令在系統(tǒng)日志里面找到PCIe驅(qū)動加載識別的過程,這個后面會有截圖。
?? ?3.4、在電腦上利用交叉編譯器Eclipse編譯樹莓派Linux RT下的動態(tài)鏈接庫SO文件(神電測控獨家提供編譯好的PCIe動態(tài)鏈接庫SO文件,LabVIEW/C/Python均可調(diào)用)
?????? ?當(dāng)ko驅(qū)動安裝完成并且能夠正常識別到帶PCIe的FPGA板子后,接下來就是用C/Python/QT或者LabVIEW開發(fā)Linux RT程序了,這個中間會涉及到驅(qū)動程序,也就是so文件,相當(dāng)于Windows下的DLL。LabVIEW調(diào)用DLL和SO方法一樣,都是通過庫函數(shù)節(jié)點直接調(diào)用,寫入函數(shù)名就可以了。關(guān)于Windows下的DLL早在Pro4那本書里面已經(jīng)給用戶做過詳細的講解了。
?????? ?后面5.3節(jié)里面,我們會把Windows下的DLL源文件也就是C文件改造一下,將里面的一些函數(shù)替換成Linux系統(tǒng)下的函數(shù),然后利用Eclipse交叉編譯把這個C編譯成SO文件,最后再通過LabVIEW調(diào)用就可以了。詳細的步驟我們會在5.3里面給大家講解。
?????? ?如果用戶不熟悉Eclipse,可以跳過這一步,直接使用我們編譯出來的SO文件,即插即用,除了LabVIEW,還可以通過C或者Python或者QT來調(diào)用這個SO里面的函數(shù)。
?? ?3.5、總結(jié):基于樹莓派+FPGA的國產(chǎn)化cRIO性能分析和優(yōu)勢(低成本,超高性價比)
?????? ?當(dāng)我們搞定了運行Linux RT的樹莓派和帶PCIe接口的FPGA圖形化開發(fā)之后,也就相當(dāng)于變相的實現(xiàn)了類似NI cRIO平臺的開發(fā)效果,在實際應(yīng)用中,用戶可以根據(jù)自己項目和產(chǎn)品的特點進行定制化開發(fā)。
?????? ?相較于NI的cRIO,基于樹莓派的Linux RT+PCIe+FPGA的硬件成本要遠小于NI的cRIO平臺;用戶只需要購買通用的樹莓派CM4核心板和FPGA核心板,然后模仿著NI的cRIO框架設(shè)計自己的硬件平臺;并且內(nèi)置了GPU的CM4核心板主頻和性能不輸一般的X86 CPU;樣機開發(fā)階段,外圍的模塊可以選擇黑金標(biāo)準(zhǔn)的40pin模塊,也可以自己開發(fā)功能模塊或者到網(wǎng)上購買其他家的外設(shè)模塊;對于需要同時支持LabVIEW直接編程并且具備Linux RT和FPGA的嵌入式開源硬件來說,本書給大家提供的解決方案更加靈活。
?
?????? ?意義:希望用戶在學(xué)習(xí)完這本書的內(nèi)容后,可以將以前想做又沒有能力和精力做的idea,用LabVIEW+樹莓派Linux RT+PCIe+FPGA快速實現(xiàn)出來,真正做到學(xué)以致用!因為我們是成熟方案提供商,有不少企業(yè)客戶都開發(fā)出了屬于自己的cRIO平臺,如果將樹莓派換成國產(chǎn)瑞芯微的RK3399,將Xilinx FPGA換成深圳國微的FPGA,則可以完全實現(xiàn)一臺支持LabVIEW直接編程的純國產(chǎn)化的cRIO開發(fā)平臺,這個方案目前有不少軍工客戶采納實施了,感興趣的用戶可以單獨聯(lián)系我們神電測控,以獲取更深層次的溝通交流。關(guān)于瑞芯微RK3399下的Linux RT系統(tǒng)移植和程序開發(fā),網(wǎng)上有一些資料可以參考。