正常情况下,如果我们要使用LabVIEW开发NI的cRIO等RT控制器程序,除了LabVIEW外,还需要安装NI的Real-time软件工具包,也就是NI的实时系统工具包。为了方便广大爱好者和初学者,为了减少软件安装的繁琐,NI在去年发布了一款名为社区版的LabVIEW 2020,内置了支持树莓派和BBB这类含有Linux内核的设备,让所有的玩家可以轻轻松松搞定树莓派和BBB的图形化开发,并且社区版的LabVIEW是免费的,也就是说,所有的用户都可以免费使用这个LabVIEW 2020社区版。
目前这个社区版是32位的英文版,估计也是为了更好支持树莓派里面的Linux系统,后续我们会给大家讲解如何将NI更为强大的Real-time软件工具包和其他特定行业里面的工具包(比如NI Vision机器视觉工具包、声音振动分析工具包、高级信号处理工具包等),安装到树莓派和BBB等Linux RT设备里面直接使用。
本节通过在树莓派里面利用LabVIEW编写一个简单的波形生成程序,编译、下载、部署到树莓派的Linux RT里面运行,并且生成开机自启动的exe程序,以此向用户展示一个基本的Linux RT实时应用程序开发过程。
1、在树莓派上安装Digilent公司开发的最新版LINX软件工具包(前提)
由于树莓派并非NI官方推出的硬件,如果用户希望利用LabVIEW来开发树莓派里面的Linux RT应用程序,那么需要先安装一下Digilent公司(已经被NI收购)开发的LINX工具包,如果用户更习惯或者更擅长于C\C++\Python\QT来开发树莓派Linux程序的话,可以跳过这一步,不需要安装LINX工具包。
Linux系统下的LINX工具包具体安装步骤如下:
1)通过VNC或者通过PuTTY连接到树莓派开发板,使用以下命令在工作目录下创建一个临时文件夹:mkdir lvrt20-schroot
2)进入刚刚创建好的目录:cd lvrt20-schroot
3)添加labviewmakerhub软件源(注意,树莓派需要联网才能获取和更新)
echo "deb [trusted=yes] http://feeds.labviewmakerhub.com/debian/ binary/"| sudo tee -a /etc/apt/sources.list
4)更新软件源:sudo apt-get update
5)下载LINX包:apt-get download lvrt20-schroot:armhf
6)安装修改后的软件包:sudo dpkg -i lvrt20-schroot.deb
注意:如果用户的树莓派不方便联网的话,前5步也可以换一种方式获得LINX安装包,那就是用户自己找个能上网的电脑,然后把第3)步链接里面的LINX deb安装包先下载到本地电脑上,然后再利用U盘或者VNC将其拷贝或者传输到树莓派里面,最后再利用第6)步的命令安装一下这个LINX deb工具包就可以了。
2、安装32位的LabVIEW 2020社区英文版(建议下载离线文件进行安装)
首先,我们需要安装一下NI最新发布的LabVIEW 2020社区版软件,大家可以直接登录NI官方网站:ni.com,然后搜索LabVIEW 2020,找到下载页面。需要注意的是,目前高版本的LabVIEW及其工具包,默认情况下,NI推荐采用网络在线安装,也就是通过NI Package Manager来安装,好处是用户再也不用东找西找,直接在NI Package Manager里面搜索需要的软件关键字,然后自动在线下载和安装,在一些网络比较发达的国家,这种方式非常好,但是在中国,访问美国服务器,速度非常慢,经常安装到一半就断线,然后又提示用户重新下载安装,非常麻烦,除非翻墙。所以我们推荐用户在NI的官网上将所需要的LabVIEW和软件工具包先离线下载到本地电脑上再安装,这样可以确保万无一失。
打开浏览器,输入下面的链接:
https://www.ni.com/zh-cn/support/downloads/software-products/download.labview.html#370001
选择最新的版本:LabVIEW 2020 SP1社区版,然后,点击右下角的“下载”按钮,大小1.91G,如图9-149所示。
图9-149:从NI官网上可以下载免费的LabVIEW 2020社区版(支持树莓派和BBB编程)
下载完成后,直接双击安装,安装结束后,重启电脑就可以了,安装过程这里就不再赘述了!
3、新建树莓派Linux RT终端项目(LabVIEW 2020)
要想使用LabVIEW开发带Linux RT系统的树莓派或者BBB或者RK3399里面的应用程序,必须先创建一个Real-time实时终端,后续的操作过程跟NI的cRIO完全一样。
首先,启动LabVIEW 2020之后,点击左上角的“File”选择“New…”,如图9-150所示;在弹出来的页面中,选择“Empty Project”,新建一个空白的项目,如图9-151所示。
图9-150:启动LabVIEW选择New新建
图9-151:新建一个空白的项目
点击“OK”按钮即可创建出一个空白的LabVIEW项目,保存一下,取名为“LabVIEW_Raspi_CM4+Linux_RT+PCIe+FPGA.lvproj”,如图9-152所示。这个项目名称的含义是,我们采用LabVIEW直接开发工业级树莓派CM4,通过PCIe总线跟FPGA板子进行通信,无论是树莓派里面的Linux RT程序还是FPGA里面的程序都采用LabVIEW直接开发。
图9-152:将空白项目保存一下,重名为“LabVIEW_Raspi_CM4+Linux_RT+PCIe+FPGA.lvproj”
右击“LabVIEW_Raspi_CM4+Linux_RT+PCIe+FPGA.lvproj”项目名称,在下拉菜单里面选择“New>>Targets and Devices…”,如图9-153所示。在弹出来的终端选择对话框里面,先切换到“New target or device”,再展开下面的LINX文件夹,找到树莓派“Raspberry Pi”,如图9-154所示,虽然名称不是最新的4代树莓派CM4,但是并不影响我们的使用;当然用户如果有BBB这个板子,也可以选择,反正跑的都是NI的Linux RT系统。
图9-153:右击项目名称选择新建一个终端和设备
图9-154:在弹出来的选择页面里面找到离线模式下的Raspberry Pi树莓派终端
点击“OK”按钮,即可在空白的项目里面新建出来一个树莓派RT设备,如图9-155所示,这个默认的名称是早期的2代树莓派,这里,我们直接将其重命名为Raspberry Pi CM4,也就是我们买的最新款的工业级树莓派CM4,如图9-156所示。
图9-155:默认新建出来的是2代树莓派RT终端设备
图9-156:将树莓派名称重命名为最新款的工业级CM4(4代树莓派)
细心的用户发现了,默认创建的树莓派RT终端设备的IP地址全是0,所以无法跟实际的树莓派硬件互联,因此,这里我们需要先把树莓派项目里面的IP地址改成我们之前配置的树莓派有线或者无线IP地址。具体操作过程如下:
右击树莓派RT终端设备名称,在下拉菜单里面“Properties”属性,如图9-157所示;然后在弹出来的属性配置页面里面找到IP地址一栏,输入树莓派的有线或者无线IP地址,考虑到有线传输更稳定,所以这里,我们将IP地址设置成:169.254.105.254,如图9-158所示。
图9-157:右击树莓派设备终端名称选择属性
图9-158:将IP地址改成实际的树莓派硬件IP地址
另外,有些用户会问,我们这里面编写的LabVIEW RT VI编译下载到树莓派里面,具体的路径是多少呢?能不能人为修改默认的路径呢?答案是可以的,就在刚刚打开的属性页面里面,选中左侧最下面的“Miscellaneous”其他选项,可以看到,默认下载到树莓派里面的路径是:/home/lvuser/natinst/bin,如图9-159所示;如果用户想自定义一个路径,可以在这个地方进行修改。
图9-159:VI编译下载到树莓派里面的默认路径(支持用户修改)
最后,将树莓派通过网线接到Windows开发电脑上,给树莓派上电,然后右击树莓派项目终端名称,在下拉菜单里面选择“Connect”,如图9-160;此时,上位机LabVIEW会尝试去链接下位机树莓派设备,如果一切正常的话,在弹出来的“部署过程”里面可以看到初始化、计算依赖关系、下载以及部署成功的提示,如图9-161所示;点击“Close”按钮关闭对话框,重新回到树莓派终端项目里面,此时,树莓派小图标右下角的LED灯亮起了,如图9-162所示,说明上位机开发电脑上的LabVIEW Linux RT已经成功连接上了树莓派终端设备。
图9-160:右击树莓派项目终端选择Connect连接
图9-161:弹出部署过程对话框(跟NI的LabVIEW RT完全一样)
图9-162:连接成功后的树莓派Linux RT设备指示灯亮起了
至此,关于上位机LabVIEW跟树莓派之间的Linux RT项目准备工作就完成了!
4、新建树莓派Linux RT应用程序(VI)
为了测试树莓派里面的Linux RT能不能正常运行LabVIEW编写的VI程序,我们需要在这个终端下面新建一个VI,注意,这个VI隶属于树莓派,一般也称之为RT系统下的实时应用程序VI。
这个实验例程是本书关于树莓派的第一个测试程序,为了结构和层次分明,我们先右击“Raspberry Pi CM4”终端,在下拉菜单里面选择“New>>Virtual Folder”新建一个虚拟文件夹,如图9-163所示;将这个虚拟文件夹重命名为“实验1-树莓派波形仿真显示”,如图9-164所示;然后在这个虚拟文件夹上右击,选择“New>>VI”,新建一个Linux RT下的VI应用程序,如图9-165所示;最后将这个VI保存一下,命名为“实验1-树莓派波形仿真显示.vi”,如图9-166所示。
图9-163:右击树莓派终端新建一个虚拟文件夹
图9-164:将新建出来的虚拟文件夹重命名为“实验1-树莓派波形仿真显示”
图9-165:右击虚拟文件夹新建一个RT下的应用程序VI
图9-166:将新建出来的VI保存命名为“实验1-树莓派波形仿真显示.vi”
双击打开这个新建的VI,切换到程序框图里面,添加一个while循环和一个波形仿真快速VI,然后在前面板上放置一个波形图显示控件和一个反应while循环运行的数值显示控件,因为这个程序很简单,具体的编写过程这里就不再赘述了,直接给出VI程序框图和前面板界面,分别如图9-167和9-168所示。
图9-167:LabVIEW Linux RT下波形仿真生成和显示程序框图
图9-168:LabVIEW Linux RT下波形仿真生成和显示前面板
5、编译、下载、运行树莓派Linux RT应用程序(VI)
当RT下的VI编写完成后,就可以编译下载到树莓派里面运行测试了。对于一般的Linux嵌入式设备来说,程序编译、下载和调试非常的麻烦,但是对于LabVIEW来说,非常简单,就跟开发上位机VI一样,直接点击运行箭头即可自动完成编译、下载和部署,并且也支持在线前面板和程序框图里面的探针和断点运行,可以说,完全继承了NI Linux RT下的所有优点。
我们直接点击“实验1-树莓派波形仿真显示.vi”程序前面板上的运行箭头,然后会弹出一个部署进度对话框,可以看到上位机会把这个程序框图里面用到的NI Linux RT环境下的各种VI库部署到树莓派里面,部署完成后会提示成功,如图9-169所示;细心的用户可以观察到,树莓派当前的Memory内存空间还剩下91%,非常多,说明我们用LabVIEW开发的Linux RT程序实际上不会占用太多资源,程序虽然部署下去了,但是并没有运行,我们需要点击“Close”关闭这个对话框或者勾选下面的“Close on successful compilation”,这样以后每次程序下载部署完成后都会自动关闭这个窗口,如图9-170所示。
图9-169:点击VI运行箭头后弹出来的部署进度信息提示框
图9-170:点击Close按钮关闭部署窗口
部署窗口关闭之后,VI立刻运行起来了,前面板的波形图显示控件里面,出现一条向左慢慢移动的正弦曲线,如图9-171所示,这是因为我们在波形仿真Express VI里面设置的正弦信号频率跟采样率之间不能整除导致的,就像示波器一样,这样可以动态的观察实验现象;同时代表while循环的“Running”显示控件里面的数值也按照1ms的速度递增起来,因为程序框图里面的while循环周期设置的是1ms。感兴趣的用户还可以测试一下探针和断点功能,要想把VI停下来,可以点击前面板上的“Stop”停止按钮,退出while循环。
图9-171:LabVIEW Linux RT下的VI运行起来了
6、生成开机启动项下载到树莓派Linux RT里面(startup.rtexe)
上面的VI虽然已经编译下载部署到树莓派里面运行了,一旦树莓派重启,这个VI程序就没有了,这是因为先前部署到树莓派里面的VI,实际是在Linux RT内存里面运行的,并没有下载或者说固化到树莓派的硬盘上,因此,掉电就没有了。
本节教会大家如何将我们编写好的Linux RT VI程序固化到树莓派的硬盘里面,并且可以开机自启动运行起来。
首先,右击“Build Specifications”编译生成规范,在下拉菜单里面选择“Real-Time Application”创建一个应用程序编译生成规范,如图9-172所示;然后在弹出来的生成规范属性配置页面里面进行参数设置,考虑到后续还有很多其他实验要编译下载,建议大家给每个VI的编译生成规范取个名称,比如第一个实验,我们将名称改成“实验1-树莓派波形仿真生成显示”,以示区分,下面的“Target filename”名称建议不要改,就用默认的“startup.rtexe”,如图9-173所示,因为同一个时刻我们能在树莓派跑的开机自启动VI就一个;接着,在左侧的目录里面切换到“Source Files”,将实验1 对应的主VI添加到右侧的“Startup VIs”一栏中,如图9-174所示;如果用户想修改一下编译生成的rtexe启动程序所在的树莓派路径,可以在左侧目录里面选中“Destinations”,然后就能修改树莓派上的目标路径了,如图9-175所示,一般情况下,不建议改动,默认路径就行;最后点击属性页面下方的“OK”按钮关闭这个窗口返回到LabVIEW树莓派终端项目下,此时,程序生成规范下面多出来一个名为“实验1-树莓派波形仿真生成显示”的编译选项,如图9-176所示。
图9-172:右击程序生成规范新建一个RT exe应用程序
图9-173:将程序生成规范名称修改为与实验内容对的上的名字,以示区分
图9-174:将前面编写好的Linux RT VI添加到启动项里面
图9-175:用户可以自己修改下载到树莓派上的startup.rtexe文件路径(一般不建议改动)
图9-176:创建了一个Linux RT下的实时exe应用程序生成规范
接下来,我们可以右击这个RT exe程序生成规范,在弹出来的下拉菜单里面选择“Set as startup”设置为启动项,如图9-177所示;然后再右击选择“Run as startup”将rtexe程序设置为开机启动项并且下载到树莓派里面运行,如图9-178所示。
图9-177:右击程序生成规范将rtexe设置为启动项
图9-178:将rtexe作为启动项部署下载到树莓派里面运行
在作为启动项编译下载之前,还需要右击程序生成规范名称Build一下,生成rtexe程序,如图9-179所示,选择Explorer可以浏览找到编译出来的rtexe程序所在的本地电脑路径;然后再点击这个“Run as startup”,LabVIEW会立刻将选中的VI进行下载部署到树莓派里面,同时会控制树莓派进行重启,并提醒用户,如图9-180所示;重启过程中,上位机LabVIEW树莓派终端会自动断开,重启完成后,右击树莓派终端选择“Connect”连接时,会弹出一个提示框,如图9-181所示,大致的意思就是:上位机发现树莓派里面已经有一个rtexe程序在运行了,如果你想继续连接这个树莓派进行开发的话,可以单击“OK”按钮,终止树莓派里面部署的startup.rtexe程序,因为LabVIEW认为,只要选择连接,就会进去开发者模式,所以终止树莓派里面的rtexe程序运行也是合情合理的。
图9-179:部署rtexe作为开机运行之前,先将VI编译生成rtexe程序
图9-180:rtexe程序部署完成后,提醒用户即将重启树莓派
图9-181:重启成功后,再次连接树莓派时会提醒用户里面已经有一个Startup.rtexe实时程序在运行了。
作者:神电测控 出处:bilibili