admin管理员组

文章数量:1531657

1、实验内容

        前面第五章里面我们给大家展示了如何通过网线将LabVIEW Linux RT程序部署下载到下位机ZYNQ芯片的PS端ARM里面运行,中间必须要有一根千兆网线,但是用过NI cRIO或者myRIO的用户知道,其实我们还可以通过WiFi无线的方式将上位机编写好的Linux RT部署到ZYNQ里面,这样做的好处是可以摆脱了有线网的距离限制;同时也可以将多个ZYNQ设备连到同一个WiFi热点,这样上位机就能同时管理这些ZYNQ硬件,摆脱了路由器端口数量不够的局限性。

        另外,现在很多笔记本电脑越做越薄,基本不带RJ45网口,比如,联想ThinkPad里面通常只有P系列和T系列才有网口,其他的电脑都取消了RJ45网口,用户只能买一个TypeC雷电转网口扩展坞来解决这个问题。

        针对以上这些问题,有必要拓展一下我们My FPGA ZYNQ Pro20软件工具包,让其具备WiFi通信和部署的能力,这样用户就能基于我们My FPGA ZYNQ开发出来类似NI无线cRIO的产品了。     

2、实验目标

        本节实验我们需要学会利用LabVIEW编写一个USB WiFi配置Linux RT程序,下载到ZYNQ芯片的PS端ARM里面去运行,让下位机ZYNQ芯片能够具备连上路由器WiFi热点或者手机创建出来的WiFi热点,复习并熟练掌握ZYNQ平台PS(ARM)端的LabVIEW Linux RT程序开发过程和原理。

3、硬件介绍

        本节实验需要用到两个硬件,一是USB WiFi模块,二是正点原子领航者ZYNQ开发板,Xilinx JTAG下载器本节实验用不上。

3.1:USB WiFi无线网卡介绍

        关于USB WiFi模块就是大家平时用的那种很便宜的指甲盖大小的能上网的模组,比如前几年很火的360 WiFi无线模块,能让没有无线网卡的台式机轻松上网。

        这里推荐用户两种性价比超高的不同芯片厂商的USB WiFi通信小模块,一是基于联发科设计的MT7601这款芯片的GRIS免驱动USB无线网卡小模块,如图2-1所示;另外一款是基于瑞昱设计的RTL8187L+6691H大功率USB无线网卡,如图2-2所示。这两款USB WiFi模块淘宝上都有卖的,价格很便宜,大家可以自行采购。

图2-1:基于联发科MT7601芯片设计的USB WiFi无线网卡模块

图2-2:基于瑞昱RTL8187L+6691H大功率USB 无线网卡模块

        这两种USB WiFi模块编者都买了,如图2-3所示。

图2-3:买回来的两种不同芯片设计的USB WiFi无线网卡模块(实物图)

        后续实验现象环节里面,我们会给大家具体演示一下运行效果。有条件的用户可以两种都买来测试一下,第一种便于集成体积小,第二种体积大一些,带独立天线,发射和接收功率强一些,适合更远距离的WiFi通信,后续做项目或者产品的时候,大家可以根据实际工况选择适合自己的USB WiFi无线模块。

3.2:正点原子领航者ZYNQ开发板上的USB接口

        与以往单片机或者STM32不同的时候,对于拥有766MHz/866MHz主频ARM内核的ZYNQ芯片来说,一般很少会跑裸机程序,因为裸机无法发挥出来ZYNQ芯片里面PS端ARM处理器的优势以及Linux开源生态的便利性。

        而且对于跑裸机的单片机、ARM、DSP这类芯片来说,要想搞定一个USB Slave设备的驱动开发,就要精通嵌入式芯片主机端也就是Host驱动开发,简直要了半条命。

        好在ZYNQ芯片PS端ARM可以运行Linux系统,这样一来,很多常用的外设驱动,Linux系统本身就集成了,就算没有集成,只要让Linux系统联网,就能在全世界的服务器上执行一条安装命令就可以寻找到对应的驱动软件,非常方便。

        比如,本节实验我们要用到的USB WiFi无线网卡驱动,Linux系统里面就自带了,而且,除了上面我们实验过的两款WiFi芯片外,Linux系统里面还有很多其他厂家的PHY芯片驱动,比如博通的、Intel的等等,这里不再展开了,感兴趣的用户可以借助前面介绍过的MobaXterm软件到ZYNQ Linux RT系统里面相应的网卡驱动目录下看一下。

        既然ZYNQ PS端的Linux RT系统里面自带了USB WiFi无线网卡驱动,那么我们只需要将买回来的USB WiFi模块随便找一个USB Host口怼进去即可。

        注意:USB Host主机端口,因为USB WiFi模块相当于Slave从机从设备。

        正点原子领航者ZYNQ开发板上有4路USB Host端口,都是A型口,如图2-4所示。本质上是通过一个USB HUB芯片将ZYNQ芯片的一路USB Host扩展出来变成4路USB Host,这样就极大的增强了ZYNQ板子的USB外设拓展能力,比如,可以同时接入鼠标、键盘、U盘、蓝牙模块、WiFi模块等。而其他ZYNQ开发板为了省钱,很少会同时扩展出4路USB Host,这也是我们选择正点原子ZYNQ开发板的原因之一。

图2-4:正点原子领航者ZYNQ开发板上的4路USB Host接口(A型口)

4、原理图介绍

        正点原子ZYNQ领航者开发板上的USB Host原理图,如图2-5所示,采用的USB HUB芯片是经典的GL850,以后大家自己基于ZYNQ芯片做板子的话,也可以采用这颗GL850 USB HUB芯片,然后参考这里的原理图设计多路USB口出来。

图2-5:基于经典的GL850 USB HUB芯片扩展出来的多路USB口(来自正点原子领航者ZYNQ开发板)

5、驱动VI函数讲解

        正式开始采用LabVIEW编写ZYNQ PS端Linux RT WiFi配置程序之前,我们先来了解一下本节实验要用到的Linux RT驱动VI函数功能。

        为了方便用户使用,我们提前将底层USB WiFi无线网卡的通信配置函数封装到了LabVIEW Linux RT环境里面,变成一个小图标,直观醒目。

        这个WiFi配置VI位于“PowerGod-RIO-RT”函数选板里面,如图2-6所示。将其拖拽出来,然后双击打开这个“PS_Wifi_Set(SubVI).vi”WiFi配置函数,如图2-7所示。

图2-6:神电测控研发的“PowerGod-RIO-RT”函数选板里面的WiFi配置函数

图2-7:打开后的WiFi无线通信配置VI函数前面板

        可以看出,这个函数本身很简单,用户只需要输入需要连接的WiFi热点名称和密码就可以了,执行以后,如果链接成功会得到动态分配的IP地址等信息,如果链接识别也会有提示具体链接失败的原因,一目了然。

6、程序开发讲解

        了解完WiFi网卡的配置VI之后,接下来,我们就可以利用LabVIEW编写一个Linux RT WiFi无线网卡通信程序,下载到ZYNQ PS端的ARM里面去运行了,具体过程如下。提醒:本节实验只有ZYNQ PS端Linux RT程序开发,不需要PL端FPGA参与,所以就不要编写PL端FPGA程序了,简单很多。

6.1:新建或者打开已有的LabVIEW ZYNQ Linux RT项目

  打开前面第五章我们新建好的LabVIEW ZYNQ项目(My_FPGA_Stater_Board_ZYNQ7020_PS+PL.lvproj),如果大家不记得怎么新建一个同时包含ZYNQ PS端和PL端的LabVIEW ZYNQ项目,可以回顾一下前面第五章里面的内容。

        打开之后的LabVIEW ZYNQ项目(My_FPGA_Stater_Board_ZYNQ7020_PS+PL.lvproj),如图2-8所示。

图2-8:打开前面我们创建好的同时包含ZYNQ PS(ARM)端和PL(FPGA)端的LabVIEW ZYNQ项目

        由于本节实验,我们用不到ZYNQ芯片里面的PL端FPGA部分,因此,可以先将FPGA Target终端收起来,如图2-9所示。

图2-9:将My FPGA终端暂时收起来(本节实验用不到FPGA参与)

6.2:编写LabVIEW Linux RT应用程序(WiFi配置)

        1)右击Linux RT终端(ZYNQ7020_PS_Linux_RT)选择“New/新建”一个“Virtual Folder/虚拟文件夹”,如图2-10所示。将其重命名为“实验2-WiFi无线网卡通信部署(ZYNQ PS端)”,如图2-11所示,以示分类管理好区分。

图2-10:右击Linux RT终端选择新建一个虚拟文件夹

图2-11:将刚刚新建出来的虚拟文件夹重命名为“实验2-WiFi无线网卡通信部署(ZYNQ PS端)”

        2)接着,右击刚刚创建的虚拟文件夹“实验2-WiFi无线网卡通信部署(ZYNQ PS端)”选择“New/新建”一个VI程序,如图2-12所示,然后将这个VI另存为“实验2-WiFi无线网卡通信部署(ZYNQ PS端).vi”,如图2-13所示。

图2-12:右击虚拟文件夹新建一个VI

图2-13:将新建出来的VI保存并重命名为“实验2-WiFi无线网卡通信部署(ZYNQ PS端).vi”

        3)打开这个新的VI,将“PowerGod-RIO-RT”函数选板里面的“PS_Wifi_Set(SubVI).vi”拖拽到程序框图里面如图2-14所示;然后创建相应的前面板控件,即可完成本节Linux RT WiFi通信配置实验程序的开发,完整的程序框图,如图2-15所示。

图2-14:将“PowerGod-RIO-RT”函数选板里面的WiFi配置函数拖拽出来

图2-15:完整的ZYNQ PS(ARM)端Linux RT WiFi无线网卡配置程序

        4)对应的Linux RT WiFi程序前面板如图2-16所示。用户可以在前面板上的“Wifi_Name”控件输入有效的WiFi热点用户名,“Wifi_Keys”输入WiFi热点密码,然后点击一下“Connect?”连接按钮就可以了。

图2-16:ZYNQ PS端Linux RT WiFi配置程序前面板

7、硬件接线实物图

        提醒:由于本节实验没有用到ZYNQ PL端FPGA部分,也就无需编写FPGA VI程序了,所以不需要外接Xilinx下载器来观察FPGA VI的在线前面板运行情况了。

        因此,只需要一根CAT5+或者CAT6类千兆网线将ZYNQ开发板跟上位机开发电脑互联起来就可以了,最后再把我们从网上买的MT7601或者RTL8187芯片开发的USB WiFi无线网卡模块插到正点原子领航者ZYNQ开发板任意一个USB Host A型口里面即可。

        其中,基于联发科MT7601芯片设计的USB WiFi无线网卡模块与正点原子ZYNQ开发板之间的硬件接线实物图,如图2-17所示;基于瑞昱RTL8187芯片设计的大功率USB WiFi无线网卡模块与ZYNQ开发板之间的接线实物图,如图2-18所示。

图2-17:完整的硬件接线实物图(基于联发科MT7601芯片设计的USB WiFi模块)

图2-18:完整的硬件接线实物图(基于瑞昱RTL8187芯片设计的USB WiFi模块)

8、程序编译下载

        1)由于ZYNQ开发板与上位机电脑之间是通过网线直连的,中间没有经过路由器,所以,上位机要利用ZYNQ PS端Linux RT默认的静态IP地址:192.168.2.99来部署下载上位机写好的Linux RT程序,因此,上位机网卡IP地址也要设置成同一个网段,比如192.168.2.10,如图2-19所示。

图2-19:将上位机开发电脑网卡IP地址设置成跟下位机ZYNQ里面的eth0:1虚拟网卡静态IP地址在同一个网段内

        2)然后检查一下LabVIEW ZYNQ PS端Linux RT终端里面的IP地址是否为下位机ZYNQ里面的固定IP地址(192.168.2.99),如果不是的话,右击终端选择“Properties/属性”,如图2-20所示;再在属性设置页面里面修改一下即可,如图2-21所示。

图2-20:如果IP地址不一样的话,可以右击LabVIEW Linux RT终端选择属性

图2-21:在Linux RT属性配置里面将IP地址改成ZYNQ直连方式下的固定静态IP地址

        3)右击ZYNQ PS端Linux RT终端(ZYNQ7020_PS_Linux_RT)选择“Connect/连接”,如图2-22所示;不出意外的话,会弹出来一个“Deployment Progress”部署成功的提示框,如图2-23所示;最后点击一下“Close/关闭”该对话框即可,此时,可以看到LabVIEW Linux RT终端左下角的指示灯点亮了,如图2-24所示,表明上位机Linux RT终端与下位机ZYNQ板子通过网线建立起了连接。

图2-22:右击LabVIEW Linux RT终端(ZYNQ7020_PS_Linux_RT)选择“Connect/连接”

图2-23:弹出一个部署进度与部署成功的提示框(Close即可)

图2-24:连接成功后Linux RT终端logo图标指示灯亮起

        4)右击Linux RT终端(ZYNQ7020_PS_Linux_RT)里面的程序生成规范,选择“New/新建”一个“Real-Time Application/实时应用程序”,如图2-25所示;然后在弹出来的RT应用程序属性配置页面里面,将程序生成规范重命名为“实验2-WiFi无线网卡通信配置”,如图2-26所示;再选择左侧目录里面的“Source Files/源文件”里面的本节实验2编写的VI程序(实验2-WiFi无线网卡通信部署(ZYNQ PS端).vi)添加到右侧的“Startup Vis/启动VIs”列表里面,如图2-27所示。

图2-25:右击Linux RT终端下的程序生成规范新建一个RT应用程序规范

图2-26:将新建出来的RT程序生成规范重命名以示区分

       图2-27:将源文件里面的本节实验2编写的Linux RT VI添加到右侧启动VIs列表里面

        5)然后右击刚刚创建的实验2对应的RT应用程序生成规范,选择“Build/编译”,如图2-28所示;大概几秒钟就能编译完成,并且会有一个编译成功的提示框,如图2-29所示;点击“Done/完成”按钮退出这个提示框,再右击实验2程序生成规范,选择“Deploy/部署”将刚刚编译出来的Startup.rtexe以及附件全部部署下载到ZYNQ板子里面去,如图2-30所示;一切顺利,会有一个部署进度条和部署成功的提示框出现,如图2-31所示。

图2-28:右击实验2 Linux RT应用程序生成规范进行Build/编译

图2-29:编译完成后会有一个编译进度条和编译成功提示框

图2-30:右击Linux RT实验2程序生成规范选择Deploy/部署下载

图2-31:ZYNQ PS端Linux RT程序及其组件会一起部署下发到ZYNQ里面去

9、实验现象

        1)首先,我们测试一下基于联发科MT7601芯片制作的USB WiFi无线网卡模块是否能被ZYNQ芯片正常驱动。先把基于MT7601芯片的USB WiFi无线模块接到ZYNQ开发板上,如图2-32所示。

图2-32:测试基于MT7601芯片的USB WiFi无线网卡模块

        直接点击本节实验2 Linux RT程序(实验2-WiFi无线网卡通信部署(ZYNQ PS端).vi)左上角的运行箭头,可以看到上位机LabVIEW会把这个VI程序及其组件和驱动一起部署下载到ZYNQ芯片里面运行,如图2-33所示;同时PS端里面的Linux RT应用前面板活了,自动进入在线前面板交互式运行模式,大家找一个ZYNQ开发板附近存在已知密码的WiFi热点,填到Linux RT程序前面板的“Wifi_Name”和“Wifi_Keys”里面;然后点击一下“Connect/链接”按钮,此时,你可以看到ZYNQ板子上插入的USB WiFi模块里面的指示灯会闪烁,等待一会,就能看到右侧显示框里面WiFi成功配置和成功连接后分配到的动态IP地址,如图2-34所示。这里我们记住这个IP地址,后面我们会通过这个WiFi无线IP地址将前面第五章的入门实验部署下载到ZYNQ里面运行测试一下。

图2-33:上位机实验2对应的Linux RT程序成功部署到了下位机ZYNQ芯片里面运行

图2-34:等待一会可以看到这个USB无线网卡与热点连接成功了,并且分配到了一个动态IP地址192.168.1.10(每个硬件分配得到的动态IP地址是随机的)

        2)感兴趣的用户还可以利用MobaXterm软件连一下ZYNQ板子,利用ifconfig -a指令获取一下当前PS端Linux系统里面的IP地址跟LabVIEW VI里面显示的是否一样,如图2-35所示,可以看出,ZYNQ芯片里面的Linux RT系统下确实多了一个wlan0的无线网卡设备,并且它被无线路由器分配的动态IP地址是192.168.1.10,与我们编写的Linux RT程序获取的完全一样;并且里面还有eth0物理网卡和固定IP地址(192.168.2.99)的eth0:1虚拟网卡。这一步属于可选步骤,不感兴趣的可以跳过。

图2-35:通过MobaXterm软件利用ifconfig -a指令查看一下当前ZYNQ系统下的无线网卡名称和分配到的动态IP地址

        3)接下来,我们把LabVIEW Linux RT终端(ZYNQ7020_PS_Linux_RT)里面的IP地址改成刚刚WiFi无线模块的分配得到的IP地址。为了修改现有终端的IP地址,需要先把上位机Linux RT终端跟下位机ZYNQ断开,具体方法就是右击Linux RT终端选择“Disconnect/断开连接”,如图2-36所示。

图2-36:右击LabVIEW Linux RT终端断开与下位机ZYNQ芯片的连接

        4)再次右击Linux RT终端选择“Properties/属性”,如图2-37所示;在弹出来的属性配置页面里面,将先前的IP地址(192.168.2.99)改成无线WiFi模块获取的IP地址192.168.1.10,如图2-38所示;然后回到Linux RT终端再次右击选择“Connect/连接”,如图2-39所示;此时会弹出LabVIEW Linux RT部署连接对话框,并且Linux RT终端左下角的小灯泡点亮了,如图2-40所示,表明上位机LabVIEW Linux RT项目终端与下位机ZYNQ芯片通过USB WiFi无线方式连接成功了。

图2-37:右击LabVIEW Linux RT终端选择“Properties/属性”

图2-38:在属性配置页面里面将IP地址改成无线WiFi模块获分配的IP(192.168.1.10)

图2-39:再次右击LabVIEW Linux RT终端选择“Connect/连接”

图2-40:可以看到LabVIEW Linux RT连接成功了(小灯泡点亮了)

        5)最后,我们验证一下,看看其他的LabVIEW Linux RT应用程序能不能通过这个WiFi无线方式部署下载到ZYNQ里面运行,比如,我们直接打开前面第五章的入门实验,直接点击左上角的运行箭头,可以发现这个Linux RT VI快速部署下去了,并且前面板上的控件功能都是正常的,如图2-41所示,具体实验现象和运行过程,可以参考本书配套的视频教程。

图2-41:通过WiFi无线方式部署下载其他的LabVIEW Linux RT应用程序(OK)

        6)接下来,我们再来测试一下基于瑞昱RTL8187芯片设计的USB WiFi大功率无线网卡是否能被ZYNQ芯片正常驱动。

        注意:可以在带电模式下直接插拔USB WiFi无线模块,因为WiFi模块通常都支持USB热插拔。先把小的USB WiFi无线模块拔掉,再把大功率的WiFi模块插上上去。为了能够再次运行下载本节实验2的Linux RT程序,需要把IP地址改回固定的192.168.2.99地址,IP地址具体修改方法参考上面的步骤,这里不再赘述。

        再次运行本节Linux RT程序(实验2-WiFi无线网卡通信部署(ZYNQ PS端).vi),可以看到上位机LabVIEW会把这个VI程序及其组件和驱动一起部署下载到ZYNQ芯片里面运行,如图2-42所示;同时上位机Linux RT应用程序前面板活了,自动进入在线前面板交互式运行模式,大家找一个附近存在已知密码的WiFi热点或者用自己的手机生成一个WiFi热点,再把WiFi热点的用户名和密码分别填到Linux RT前面板的“Wifi_Name”和“Wifi_Keys”控件里面;然后点击一下“Connect/链接”按钮,等待一会,就能看到右侧显示框里面WiFi配置成功的信息以及得到的动态IP地址(192.168.1.2),如图2-43所示,跟上一个WiFi分配的IP地址不一样了,这个很正常,一般IP地址动态分配是路由器根据网络节点的数量来的。这里我们先记住这个IP地址(192.168.1.2),等会我们就可以通过这个WiFi无线IP地址将前面第五章的入门实验部署下载到ZYNQ里面运行了。

图2-42:上位机实验2对应的Linux RT程序成功部署到了下位机ZYNQ芯片里面运行

图2-43:等待一会可以看到这个USB无线网卡与WiFi热点连接成功了,并且分配到了一个动态IP地址192.168.1.2(每个硬件分配得到的动态IP地址是随机的)

        7)感兴趣的用户还可以利用MobaXterm软件连一下ZYNQ板子,利用ifconfig -a指令获取一下当前PS端Linux系统里面的IP地址跟LabVIEW VI里面显示的是否一致,如图2-44所示,可以看出,ZYNQ芯片里面的Linux RT系统下确实多了一个wlan0的无线网卡设备,并且它被无线路由器分配的动态IP地址是192.168.1.2,与我们编写的Linux RT LabVIEW程序获取的完全一样;并且里面还有eth0物理网卡和固定IP地址(192.168.2.99)的eth0:1虚拟网卡。这一步属于可选步骤,不感兴趣的可以跳过。

图2-44:通过MobaXterm软件利用ifconfig -a指令查看一下当前ZYNQ系统下的WiFi无线网卡名称和分配到的动态IP地址

        8)接下来,我们把LabVIEW Linux RT终端(ZYNQ7020_PS_Linux_RT)里面的IP地址改成第2个WiFi无线模块的分配得到的IP地址(192.168.1.10)。为了修改现有终端的IP地址,需要先把上位机Linux RT终端跟下位机ZYNQ断开,具体方法就是右击Linux RT终端选择“Disconnect/断开连接”,如图2-45所示。

图2-45:右击LabVIEW Linux RT终端断开与下位机ZYNQ芯片的连接

        9)再次右击Linux RT终端选择“Properties/属性”,如图2-46所示;在弹出来的属性配置页面里面,将先前的IP地址(192.168.2.99)改成第2个无线WiFi模块获取的IP地址192.168.1.2,如图2-47所示;然后回到Linux RT终端再次右击选择“Connect/连接”,如图2-48所示;此时会弹出LabVIEW Linux RT部署连接对话框,并且Linux RT终端左下角的小灯泡点亮了,如图2-49所示,表明上位机LabVIEW Linux RT项目终端与下位机ZYNQ芯片通过第2个USB WiFi无线方式连接成功了。

图2-46:右击LabVIEW Linux RT终端选择“Properties/属性”

图2-47:在属性配置页面里面将IP地址改成第2个大功率无线WiFi模块获分配的IP(192.168.1.2)

图2-48:再次右击LabVIEW Linux RT终端选择“Connect/连接”

图2-49:可以看到LabVIEW Linux RT连接成功了(小灯泡点亮了)

        10)最后,我们验证一下,看看其他的LabVIEW Linux RT应用程序能不能通过这个WiFi无线方式部署下载到ZYNQ芯片里面运行。比如,直接打开前面第五章的入门实验,点击左上角的运行箭头,可以发现这个Linux RT VI程序快速部署下去了,并且前面板上的控件功能同样都是正常的,如图2-50所示,具体实验现象和运行过程,可以参考本书配套的视频教程。

图2-50:通过WiFi无线通信方式部署下载任意LabVIEW Linux RT应用程序(OK)

10、程序固化

10.1:ZYNQ程序固化注意事项

        当我们LabVIEW Linux RT程序开发调试完毕后,可以批量部署到ZYNQ硬件里面,然后发给客户了,需要让ZYNQ开机上电自启动我们固化好的Linux RT exe程序。

        1)唯一需要注意的是:在我们固化之前,最好在LabVIEW Linux RT程序最开始加上一个15s左右的延时等待,如图2-51所示。加这个延时等待的目的是为了每次ZYNQ重新上电的时候给Linux系统足够的时间去完成自己各项组件的加载,具体原因我们在前面第五章里面做过详细的讲解,这里不再重复了;但是在开发调试阶段,这个延时是不需要的,我们可以直接禁用掉或者删掉就可以了。

图2-51:在Linux RT程序最开始加一个延时等待函数(固化成rtexe开机自启动后可以避免出现异常情况)

        2)将上面加过延时等待的实验2 Linux RT程序保存一下,然后右击LabVIEW Linux RT终端里面的程序生成规范(实验2-WiFi无线网卡通信配置)选择“Build/编译”,如图2-52所示,会弹出一个对话框显示当前编译进度以及是否编译成功,如图2-53所示;再次右击该程序生成规范选择“Run as startup”,将Linux RT程序设置成ZYNQ开机自启动方式,如图2-54所示;同样会出现一个对话框提示部署下载等信息,如图2-55所示。

图2-52:右击本节实验Linux RT程序生成规范选择“Build/编译”

图2-53:弹出显示编译进度和编译是否完成等信息的对话框

图2-54:右击本节实验对应的程序生成规范选择“Run as startup/开机自启动运行”

图2-55:弹出显示部署进度和部署设置是否成功的对话框

        3)最后,会弹出来一个提醒用户重启下位机Linux RT设备的对话框,这里选择“No,如图2-56所示,因为即使选择“Yes”这个重启命令,实际上也是无法真正控制ZYNQ PS端的Linux系统完成重启的,所以这里选择“No”即可。

图2-56:如果弹出提醒用户重启的话,选择“No”(因为这个对话框无法完成对ZYNQ芯片的彻底重启)

10.2:ZYNQ重启小技巧

        那么怎么才能让下位机ZYNQ芯片彻底重启一遍呢?有3种方式推荐给大家:

        第1种就是最简单的断电再上电,这个对于ZYNQ板子就在身边够得到的情况下很容易实现。如果ZYNQ板子放在够不着的天南海北,那这种方法就望尘莫及了。

        第2种就是利用MobaXterm软件连上ZYNQ下位机,然后输入强制重启命令sudo reboot即可,这个方式大家可以自己测试一下,这里不再演示。算了,还是演示一下吧,如图2-57所示,毕竟还有很多小伙伴想多学习一些新知识,多多益善。

图2-57:在MobaXterm里面直接输入Linux强制重启命令即可

        第3种方法是直接打开运行一次这个名为“PS_Restart(SubVI).vi”LabVIEW小VI就可以了,这个VI位于“PowerGod-RIO-RT”函数选板,如图2-58所示;这是我们为了方便那些完全不懂Linux指令的客户专门封装的可以起到彻底重启下位机ZYNQ芯片的函数。

图2-58:“PowerGod-RIO-RT”函数选板里面有我们封装好的ZYNQ重启VI

        为了方便大家可以随时随地通过上位机LabVIEW发起对下位机ZYNQ芯片的彻底重启,我们可以在LabVIEW Linux RT项目下新建一个名为“实验0-强制重启下位机ZYNQ芯片.vi”的程序,如图2-59所示;再把上面这个“PS_Restart(SubVI).vi”拖进去就可以了,程序框图非常简单,如图2-60所示,只要运行一下这个VI,下位机ZYNQ就会重启一次。

图2-59:新建一个随时随地可以执行ZYNQ重启的Linux RT VI程序

图2-60:每运行一下这个VI,下位机ZYNQ芯片就会彻底重启一遍

11、实验总结

        我们总结一下本节实验学到的内容和需要注意的事项。

        首先是上面的WiFi无线网卡Linux RT程序虽然生成了开机自启动exe部署到ZYNQ PS端的Linux系列里面了,但是重启之后,利用MobaXterm软件执行“ifconfig -a”指令,发现wlan0这个网卡虽然被ZYNQ芯片识别到了,但是并没有启动起来,也没用分配IP地址。这是因为前面我们编写的本节实验LabVIEW Linux RT程序框图里面通过case条件结构将WiFi配置子函数(PS_Wifi_Set(SubVI).vi)框起来了,只有点击前面板上的“Connect”按钮才会启动USB WiFi无线网卡并对指定的WiFi热点发起链接。

        如果大家需要每次ZYNQ开机重启都能自动连上一个默认的WiFi热点的话,其实也很简单,那就是将上面实验2程序框图里面的while循环和case条件结构全部删掉,只要保留一个WiFi配置VI函数(PS_Wifi_Set(SubVI).vi)就可以了,这样每次ZYNQ重启加载开机自启动startup.rtexe程序时,都会执行一次这个WiFi网卡配置连接操作了。感兴趣的用户可以自己动手实践一下。

        最后,提醒一下用户:本节实验虽然简单,没有涉及到ZYNQ PL端FPGA部分程序编写,但是对于初学者来说,里面的每个步骤和操作过程都要熟练掌握,虽然都是一些基础知识,但是熟能生巧,后面的实验例程会越来越复杂,功能越来越多,需要同时对ZYNQ PS端ARM和PL端FPGA进行LabVIEW编程,希望大家都能轻松学会掌握。

本文标签: 无线通信芯片宝典ZynqLabVIEW