如何將NI Linux RT實時系統(tǒng)安裝到第三方不帶Intel和博通網卡的miniPC/SOM/OEM/工控機

如何將NI Linux RT OS實時系統(tǒng)安裝到第三方不帶Intel和博通網卡的miniPC里面去
(比如集成了瑞昱網卡的研盛和淘寶其他賣家出售的miniPC或者OEM)
1、當我們在淘寶上買了一個廉價版的miniPC或者小型工控機回來,比如研盛的NanoJ1900(淘寶上就有賣的,很便宜)。里面自帶的網卡芯片是臺灣瑞昱的,而非Intel或者BroadCom,那么按照之前的方式用U盤安裝cRIO-903x-VM鏡像的時候,會因為沒有網卡驅動導致無法跟MAX通信,也就無法跳出safemode模式。參考下面的步驟和方法可以解決這個問題!

2、首先我們需要向賣miniPC或者工控機的廠家要到對應網卡的Linux驅動源文件,比如研盛的NanoJ1900里面的網卡就是瑞昱的8111,對方提供了Linux下的源碼和編譯文件,但是沒有KO驅動文件,如圖1所示。

3、拿到這個網卡的壓縮包之后,我們不能直接在NI Linux RT里面做編譯,因為第一次安裝成功的Linux RT是safemode安全模式,并行里面很多命令都不支持,所以有兩種方式可以將這個瑞昱網卡KO編譯出來:一是找個電腦安裝虛擬機,然后安裝Linux RT開發(fā)環(huán)境,參考前面的2號文檔,將所有內核源碼和整個解壓縮的網卡一起編譯下,就會得到r8168.ko驅動文件;第二種方式就是找一個具備Intel網卡的miniPC或者COME或者SOM,比如之前我們用的研華MIO,按照2號文檔里面的方式,將所有需要用到的像gcc、opkg、內核build頭文件等很多命令集都更新安裝好,相當于具備了一個可以在下位機里面直接編譯驅動源碼的環(huán)境。
?
4、上面編譯KO的具體過程就不演示了,方法跟編譯Xillybus.ko是完全一樣的。假設我們現在已經編譯出來一個跟Linux RT內核版本一致的KO驅動文件,比如這個“r8168.ko”,如圖3所示。

5、找一臺研盛的miniPC比如NanoJ1900做實驗,先用我們燒錄好NI Linux RT OS的鏡像U盤作為啟動盤,開機的時候,按下Delete,進入BIOS,然后將這個鏡像安裝到miniPC或者工控機里面。等待完成后,顯示器上會提醒拔掉U盤,執(zhí)行reboot重啟一下Linux RT。
?
6、 重啟完成后,輸入用戶名admin,密碼為空,登錄進去,然后輸入lsmod指令,查看一下設備管理器里面有沒有網卡驅動,可惜的是,并沒有r8168瑞昱網卡驅動,這是因為NI定制的Linux RT OS里面只提供了Intel和BroadCom兩家網卡的驅動,其他廠家的網卡驅動沒有集成進去,因為需要我們手動安裝這個網卡驅動,具體過程如下。
?
1) 首先,找一個U盤,將前面編譯好的r8168.ko文件拷貝進去,然后將這個U盤插到安裝了Linux RT的miniPC上,然后執(zhí)行l(wèi)s /,如果發(fā)現了U盤,說明U盤被識別了。

2) 接著,利用cp指令將這個U盤里面的r8168.ko網卡驅動拷貝到NI Linux RT系統(tǒng)里面的ethernet文件夾里面具體路徑,如圖5所示。注意:這個r8168文件夾是自己新建的,大家可以百度一下新建文件夾的指令。

具體的拷貝指令如下:
cp /u/r8168.ko /lib/modules/4.9.47-rt37-6.1.0f0/kernel/drivers/net/ethernet/r8168
?
3) 拷貝完成后,這個r8168文件夾里面就應該多出來一個r8168.ko的網卡驅動文件了,如圖6所示:

4) 接下來,執(zhí)行一下cd命令,將路徑切換到這個包含r8168.ko文件的路徑下,具體命令如下:
cd /lib/modules/4.9.47-rt37-6.1.0f0/kernel/drivers/net/ethernet/r8168
?
5) 然后要執(zhí)行的兩條指令就是最重要的了,首先執(zhí)行depmod,然后再執(zhí)行 modprobe r8168,注意,這個modprobe后面的文件不要帶.ko后綴;有些用戶通過執(zhí)行insmod指令來加載這個ko文件,但是重啟Linux RT之后,發(fā)現加載的驅動又不見了,失效了,這是因為depmod和modprobe可以解決依賴關系,要比insmod更可靠,所以這里,建議大家加載KO驅動的時候,一律采用depmod和modprobe,不要使用insmod,不然重啟Linux RT之后驅動又失效了!
?
6) 為了驗證KO驅動是否加載成功,可以執(zhí)行l(wèi)smod查看一下Linux RT下面的驅動列表,如圖7所示。顯然我們通過depmod和modprobe指令成功的安裝了網卡KO驅動,即使重啟Linux RT依然存在。

7、 經過前面6步,基本上將這個第三方網卡芯片的Linux KO驅動安裝好了。接下來,就是跟之前2號文檔里面一樣的步驟操作了,過程是一樣的。
1) 首先,利用一根網線將這個miniPC接到路由器或者開發(fā)電腦上,然后輸入ifconfig -a指令,查詢一下當前兩個eth網卡分配到的IP地址,比如我們接到路由器之后,可以看到分配的IP地址。
?
2) 如果用戶沒有路由器,或者找個安裝了NI Linux RT的設備是直接賣給最終用戶的,也可以將兩個或者多個網口的IP地址設置成靜態(tài)的,具體的操作指令如下:
ifconfig eth0 192.168.1.10 netmask 255.225.225.0
ip route add default via 192.168.1.1
如果還有多個網口需要設置成靜態(tài)IP,方法還是一樣的,比如將eth1設置一下,其他的網卡以此類推:
ifconfig eth1 192.168.1.11 netmask 255.225.225.0
?
3) 設置完成后,同樣可以可以通過執(zhí)行ifconfig -a指令查看一下每個網卡的IP地址具體是多少,看看是否設置成功,如圖8所示。

8、 接下來就輕松了,我們可以通過開發(fā)電腦上位機的MAX軟件來給這個Linux RT安裝組件并且可以很方便的設置任何參數了,并且可以將Linux RT切換到正常模式,然后就可以像操作NI RT設備那樣直接通過LabVIEW對齊編程了。
?
9、 很多用戶發(fā)現在NI-MAX軟件經常發(fā)現不了cRIO等RT設備,這里面我們交給大家一種更方便的方式來掃描下位機Linux RT設備。為了確保上下位機網絡通信正常,可以在上位機cmd窗口里面執(zhí)行ping指令,看看能夠ping通下位機Linux RT,如果OK,那就說明網絡沒有問題了。
?
10、打開NI-MAX軟件,如果在“遠程系統(tǒng)”不能掃描出來Linux RT設備,我們可以右擊“遠程系統(tǒng)”選擇“新建”,然后,在彈出來的對話框里面選擇第一項“遠程設備”,如圖9所示。

11、接著,輸入下位機Linux RT的IP地址,注意,這里之所以要輸入IP地址而不是主機名稱,是為了讓MAX更好的發(fā)現下位機Linux RT,而主機名通常不靠譜!比如,這里面我們輸入剛剛設置完研盛Linux RT的miniPC IP地址,如圖10所示;然后點擊“下一步”,可以看到MAX立刻發(fā)現了下位機Linux RT主機,如圖11所示,這里面的主機名稱我們后期可以在MAX里面自己重命名修改的,而序列號不用管。


12、點擊“完成”后,可以看到MAX里面就出現了一個在線的Linux RT終端設備了,如圖12所示。至此,貢獻大家成功了?。?!

13、接下來的過程,想必大家都很熟悉了,就是通過鼠標操作MAX給下位機Linux RT安裝各種驅動和組件,也可以在MAX里面設置IP地址、用戶權限、時間等等。其中有幾點需要注意的地方,這里給大家指出來:
1)如果用戶的上位機安裝的LabVIEW版本高于現有的Linux RT內核,可以選擇右邊的“更新固件”,更新完成后,再選擇左側的“添加軟件”。
2)如果用戶電腦上的LabVIEW語音版本不是英文的,比如安裝了中文版的LabVIEW,那么需要在添加組件里面將支持中文環(huán)境的組件安裝上。
3)重啟之后,可以看到下面的“啟用嵌入式UI”是灰色的,這是因為“語音環(huán)境”選成中文之后,這個嵌入式UI功能就被禁用了,所以我們需要將“語言環(huán)境”改成英文,然后勾選“啟用嵌入式UI”,如圖13所示。這樣重啟下位機Linux RT之后,就能看到LabVIEW寫的程序前面板了,省去了一臺電腦作為人機交互,這也是Linux RT區(qū)別于以前的Pharlap RT和VxWorks最重要的特性之一。

4) 但是一旦勾選了下面的“啟用嵌入式UI”之后,上面的語言環(huán)境下拉列表就不見 ,很多用戶反饋說,不知道怎么切換成中文語言環(huán)境,因為在后續(xù)的LabVIEW RT開發(fā)時,如果LabVIEW語言版本跟下位機Linux RT不一致,會導致LabVIEW連不上Linux RT,其實,這里MAX設計的不太友好,下拉列表不見了,如圖14所示。導致很多用戶改不回去,實際上,必須要先把下面的“啟用嵌入式UI”里面的“勾”去掉,然后上面的下拉列表就出現了,就恢復成了上面圖13所示的效果。

14、最后,我們給出幾張測試成功的實物圖,分別如圖15~19所示。




