admin 管理员组

文章数量: 887021

       本章是全书的重点章节之一,初学者一定要看,虽然本章编写的实验程序比较简单,但是整个实验开发过程涵盖了ZYNQ芯片的Linux RT镜像文件烧写、PS(ARM)端LabVIEW程序开发、PL(FPGA)端程序开发3大块。看完之后,相当于就学会了如何使用LabVIEW同时开发ZYNQ芯片里面的PS(ARM)和PL(FPGA)两部分程序以及二者之间的交互方法和原理。这个LabVIEW ZYNQ FPGA开发流程用户一定要学会并掌握,我们在后续第6~8章的实际案例开发编写,也会按照本章的开发流程和思路来。总之一句话,就是本章的每个细节和实现过程,大家都需要认真看懂、理解并动手加以实战,方能有所体会和感悟。

     下面我们按照ZYNQ开发板Linux RT系统镜像文件烧录、PL(FPGA)端程序开发、PS(ARM)端Linux RT程序开发顺序给用户详细讲解。

   5.1:LabVIEW ZYNQ开发板Linux RT系统镜像文件烧录(首要准备工作)

        如果大家拿到一个新的ZYNQ开发板,默认情况下,里面是没有我们神电测控研发的Linux RT实时系统的,因此,我们需要找一个≥8GB的TF卡,将云盘里面6号文件夹里面的ZYNQ Linux RT镜像文件烧录到TF卡里面,然后将TF卡插到ZYNQ开发板的TF卡槽里面,最后上电之前,需要将ZYNQ开发板上的启动方式拨码开关按照上面的丝印标识拨到TF卡启动方式,最后给ZYNQ开发板上电即可。

       下面,具体给大家演示一下Linux RT系统镜像文件烧录以及用到的相关工具软件。

5.1.1:LabVIEW FPGA ZYNQ调试常用小工具-安装过程(MobaXterm、Win32DiskImager)

        将云盘里面5号文件夹里面的Win32DiskImager和MobaXterm两个软件下载到本地电脑上,如图5-1所示;然后右击解压并安装,如图5-2所示;安装成功后在桌面上或者开始菜单里面会出现Win32DiskImager和MobaXterm这两个软件对应的快捷方式,如图5-3所示。安装过程比较简单,这里不再演示了,正常情况按照提示安装即可。

图5-1:My FPGA ZYNQ Pro20云盘5号文件夹里面的工具软件

(Win32DiskImager和MobaXterm)

图5-2:将rar压缩包解压一下,然后直接双击安装即可

图5-3:安装成功后的Win32DiskImager和MobaXterm桌面快捷方式

        需要提醒的是这两个软件的功能:Win32DiskImager是一个经典的烧录软件,可以将镜像文件烧录到SD卡或者TF里面;MobaXterm是一个多功能调试软件,里面集成了SSH、Serial、FTP、VNC等众多软件功能,后面我们会借助这个软件观察一下下位机ZYNQ芯片里面的Linux RT系统是否运行正常,MobaXterm软件要比我们传统的Putty强大太多了。

5.1.2:ZYNQ开发板LabVIEW Linux RT系统镜像文件-烧录过程(img)

        一般情况下,买ZYNQ开发板的时候,厂家都会赠送32G或者16G的TF卡,我们制作的Linux RT镜像文件不超过7.4GB,因此,理论上只需要一个≥7.4GB的TF卡就可以完成镜像烧录了。步骤如下:

        1)不管使用的TF卡是新的还是旧的,每次烧写ZYNQ Linux RT镜像文件之前,需要格式化并执行删除分区操作,这样得到的TF卡才是最原始最干净的,后续使用Win32DiskImager.exe软件烧录镜像时才不会出现烧录一半时总是弹出“写入失败”提示。

        2)如果是刚买来的新的空白TF卡,插到电脑上只会出现一个盘符,如图5-4所示。然后按照下面图5-5~5-9所示的步骤操作,核心思想就是先格式化再删除分区。

图5-4:新买的空白的TF卡(设备管理器里面只出现一个FAT32格式的盘符)

图5-5:右击“我的电脑”选择管理,找到“磁盘管理”

图5-6:右击TF卡选择“格式化”
(一般TF卡都是FAT32格式的,切记别把自己电脑磁盘给格式化了!)

图5-7:右击TF卡选择“删除卷”

图5-8:此时,你会发现这个TF卡磁盘底色变成了纯白色,显示为未分配
这个就是我们想要的效果

图5-9:最后文件资源管理器里面显示的TF卡没有容量(正常,因为我们删除了该卷

        3)如果是之前烧录过的旧的TF卡,则需要分别对TF卡里面的两个分区先执行格式化再删除,因为一旦烧录过镜像之后,TF卡通常就会变成两个分区了。具体操作步骤跟上面类似,如图5-10~5-14所示。

图5-10:将以前烧录过的TF卡里面的两个扇区分别进行格式化

图5-11:将烧录过的旧的TF卡里面的两个扇区分别进行“删除卷”操作
(删除右边主分区)

图5-12:将TF卡里面的两个扇区分别进行“删除卷”操作(删除左边BOOT)

图5-13:将TF卡所有卷删除之后的效果(彻底干净了,显示为未分配,正常

图5-14:此时,旧卡就变成了跟新卡完全一样的显示了(里面啥也没有,正常

        4)启动打开前面安装好的“Win32DiskImager”软件,然后点击浏览按钮找到神电测控提供的LabVIEW ZYNQ Linux RT img镜像文件,如图5-15所示;设备一栏里面一定要选择对的TF卡,一般这里会过滤出来FAT32格式的磁盘,但是用户务必要检查一下,防止选错了,千万不要选成自己电脑的磁盘,否则烧录格式化就麻烦了。

        注意:这里,我们神电测控针对市面上主流的几个厂家的ZYNQ开发板研发了相应LabVIEW版本的ZYNQ Linux RT镜像文件,比如大家常用的LabVIEW 2020/2021/2022/2023这几个版本的RT镜像文件,命名规则如下:

图5-15:将云盘里面6号文件夹里面的ZYNQ Linux RT镜像文件下载下来

        5)比如我们准备使用LabVIEW 2020 SP1版本开发ZYNQ芯片,使用的ZYNQ开发板是正点原子领航者,因此,我们选择的映像文件就是下面这个,然后设备里面选择前面格式化后的TF卡,如图5-16所示。

神电测控SDMC-正点原子领航者-ZYNQ-Linux-RT-Img-for-LabVIEW-2020.img

图5-16:根据LabVIEW版本和ZYNQ开发板型号选择神电测控对应版本的Linux RT img镜像文件

        6)点击“写入”按钮,等待15分钟左右,如果不出意外的话,会弹出“写入成功”的提示框,如下图5-17~5-19所示,至此,我们就完成了将神电测控ZYNQ Linux RT镜像成功烧入到TF卡里面,此时,文件资源管理器里面的TF卡变成了两个盘符,如图5-20所示,一个有容量,一个没有容量,这是因为里面烧录了BOOT,所以看不到。

图5-17:点击“写入”按钮,如果弹出覆盖提示,选择Yes

图5-18:正在烧录,耐心等待

图5-19:ZYNQ Linux RT镜像文件烧录成功

图5-20:烧录成功后,TF卡在文件资源管理器里面显示出来两个分区(正常)

5.1.3:ZYNQ上电加载运行TF里面的Linux RT系统(调整ZYNQ开发板上的拨码开关)

        1)一般情况下,ZYNQ开发板厂商出厂的时候默认会把启动方式拨码开关拨到板子上自带的Flash启动,此时,我们需要检测一下上面的丝印说明,比如原子领航者开发板,我们需要将两个拨码开关都拨到OFF状态,也就是拨到下面,如图5-21所示。

图5-21:将启动方式拨码开关全部拨到OFF从SD卡(TF卡)启动

        2)接下来,需要在电脑上安装一下ZYNQ开发板上自带的USB转串口芯片的驱动软件,比如正点原子领航者上面用的是WCH340G芯片,该驱动位于My FPGA ZYNQ Pro20云盘的5号文件夹里面,如图5-22所示;安装过程很简单,直接双击里面的setup.exe安装即可。注意:一般常用的USB转串口芯片是WCH340G、CP2102以及FT公司的FT232H等,其中,正点原子领航者开发板上集成的是WCH340G芯片,默认都是接到了ZYNQ的PS端的UART0上面。

图5-22:安装正点原子领航者ZYNQ开发板上集成的USB转串口芯片驱动

(原子一般用的是WCH340G)

        3)将前面5.1.2节烧录好的TF卡插到正点原子领航者ZYNQ开发板里面,再将USB线缆TypeC一头接到开发板上的“USB_UART”口里面,A型头接到电脑上,实际接线实物图,如图5-23所示;此时,打开设备管理器可以看到电脑上识别出来一个串口号,比如,我们这里识别出来的是COM4,如图5-24所示。注意:板子不用上电,设备管理器里面也会出现USB转串口设备号。

图5-23:将TF卡、USB线缆、网线、WiFi模块(可选)接到ZYNQ开发板上

图5-24:设备管理器识别出来的ZYNQ开发板上的USB串口号(不同电脑可能不一样)

        4)ZYNQ通过路由器可以访问外网

        因为Linux系统很多组件和驱动都是通过网络获取自动安装的,这些软件和驱动分布在全世界不同的服务器上,这里我们需要找一根网线将ZYNQ开发板接到路由器里面(注意,接到ZYNQ PS端也就是ARM端所在的网口里面),这样ZYNQ里面的Linux系统就可以访问外网了,如图5-25所示;当然,如果用户手头有一个USB转WiFi模块,也可以将其插到ZYNQ开发板的USB口里面,运行我们封装好的LabVIEW WiFi配置开启使能VI,如图5-26所示,实现WiFi联网通信,关于这部分内容我们会在后续的WiFi无线通信和LabVIEW无线部署一章里面再给大家做详细的讲解。运行这个VI之后可以看到Linux系统里面多出来一个wlan0的无线网卡设备,并且自动获取了动态IP地址,如图5-27和5-28所示。

图5-25:将ZYNQ开发板通过网线接到可以上网的路由器里面(建议接千兆网口)

        提醒:这里为了简化用户操作,建议大家找一个路由器。大多数用户家庭都有无线路由器,因此,也可以通过网线将ZYNQ开发板连到家里或者公司的路由器里面,从而实现对外网的访问。

        注意:身边没有路由器的用户,也可以将ZYNQ开发板通过网线直接跟开发电脑网口直连,唯一需要注意的是,ZYNQ上电之前,电脑的网卡不能设置成静态IP地址,等到ZYNQ上电启动完成后,再把开发电脑的网卡IP地址设置成静态的,比如192.168.2.10,因为在直连的情况下,下位机ZYNQ里面的Linux RT会自动进入一个固定的IP地址,就是192.168.2.99

图5-26:运行我们封装好的PS端WiFi配置VI,可以让ZYNQ芯片具备WiFi无线通信和无线部署能力(这个我们会在后续单独的实验环节给大家演示,这里跳过

图5-27:运行PS端的WiFi配置VI函数可以获取WiFi无线分配的IP地址(这里跳过

图5-28:运行神电测控提供的LabVIEW ZYNQ WiFi配置VI开启WiFi功能(这里跳过

5.1.4:利用MobaXterm软件里面的串口打印功能,观察下位机ZYNQ开发板里面的Linux RT系统是否正常

      1)启动前面安装好的“MobaXterm”软件,点击左上角的“Session”,在弹出来的“Session settings”设置页面里面,找到中间位置的“Serial”串口,然后在“Serial port”串口列表中选择设备管理器里面识别出来的ZYNQ开发板上的串口号COM4,将“Speed(bps)”串口波特率设置为115200,如图5-29所示。

图5-29:在Serial串口设置页面里面选择配置ZYNQ开发板上的USB_UART串口号

        2)然后点击“OK”按钮,即可进入串口终端页面,如图5-30所示;最后给ZYNQ开发板上电此时,可以看到MobaXterm终端里面出现了Linux系统开机信息,等待开机结束,感兴趣的用户可以拖拽了解一下里面的信息,其中最重要的一条就是PHY网口驱动必须要加载成功,这个是后续所有操作的前提条件,如图5-31所示。

图5-30:MobaXterm终端里面成功连上了ZYNQ开发板PS端的UART0串口打印

图5-31:可以看出,ZYNQ Linux RT端的网口初始化成功了,并且下面还动态分配了IP地址(因为我们提前将其连到了具备动态分配IP地址能力的路由器上)

        3)接着,在这个MobaXterm终端里面输入Linux RT系统的账户登录名称和密码,一般情况下,用户名是xilinx,密码是cx或者xilinx,登录成功后的效果,如图5-32所示。有时候,开机的时候也会自动完成登录。

图5-32:ZYNQ Linux RT登录成功后的界面

        4)最后,让我们看看ZYNQ Linux RT里面的IP地址都有哪些?直接在串口终端里面输入ifconfig,回车之后可以看到里面有一个随机的动态IP地址(192.168.1.5)和固定的静态IP地址(192.168.2.99),如图5-33所示;如果接了USB WiFi模块还能得到无线的IP地址。

图5-33:通过ifconfig指令可以获取到当前ZYNQ Linux RT下所有的IP地址信息

        其中静态IP地址(192.168.2.99)是固定的,这个是Linux RT系统为了方便搞软件开发的人而设置的,也就是无论何时,这个静态IP地址(192.168.2.99)都是存在的,如果用户身边没有路由器,可以将ZYNQ板子跟电脑直连,注意:直连之前,上位机网卡最好不要设置静态IP地址,改成动态分配模式,等到ZYNQ直连上电之后自动变成192.168.2.99之后,再把上位机开发电脑的IP地址设置成跟下位机ZYNQ静态IP地址相同的网段内,比如,PC端设置成192.168.2.10,这样就可以实现对ZYNQ的网络控制和LabVIEW软件的下载和部署了。

        5)为了验证一下当前ZYNQ板子是否能访问外网,用户可以在串口终端里面输入ping baidu,如果有百度服务器的消息返回,如图5-34所示,说明网络是通畅的。注意:终止Linux ping通消息显示,可使用快捷键Ctrl+C如图5-35所示。

图5-34:通过ping百度网址可以判断当前ZYNQ网络是否可以访问外网

图5-35:使用Ctrl+C快捷键可以终止Linux消息

5.1.5:利用MobaXterm软件里面的SSH网络助手,观察下位机ZYNQ开发板里面的Linux RT系统及其文件

        前面通过ZYNQ UART0串口打印调试并没有我们平时习惯于像Windows文件资源管理器那么方便,加上串口通信距离一般不能太长,综合以上因素,实际Linux程序开发和调试采用最多的还是SSH网络终端,但是ZYNQ PS端的UART0有一个好处,那就是在不知道ZYNQ IP地址的情况下,可以通过ZYNQ开机串口打印显示Linux RT开机信息以及查看当前环境下的IP地址等信息。

        下面,演示一下如何利用MobaXterm软件里面的SSH网络调试和文件查看方法:

        1)首先,点击MobaXterm软件左上角的“Session”会话图标,在弹出来的“Session settings”对话框里面选择“SSH”,然后在下面的“Remote host”远程主机IP地址里面输入前面分配的静态IP地址(如果电脑跟ZYNQ直连,192.168.2.99)或者路由器动态分配的IP地址(192.168.1.5),如图5-36所示。

图5-36:在MobaXterm软件的SSH里面输入ZYNQ开发板的IP地址

        2)点击上图对话框下面的“OK”按钮,会弹出一个安全警告对话框,如图5-37所示;选择“是”,即可进入Linux RT登录页面,如图5-38所示;在里面输入用户名xilinx回车即可,如图5-39所示。如果提示需要密码,则输入cx或者xilinx即可。

图5-37:弹出网络连接安全警告提示(选择“是”)

图5-38:Linux RT系统首次连接需要登录(用户名默认是xilinx)

图5-39:登录成功后的页面

        3)右侧路径里面输入/回车即可看到Linux RT根目录下的所有文件夹信息,熟悉Linux系统的用户对这些文件夹应该不陌生哈,如图5-40所示。另外,需要重点看一下这个路径下是否具备这些文件,如图5-41所示,这些KO驱动和SO动态库是我们专门研发的用于打通ZYNQ PS端与PL端进行交互的核心文件。

图5-40:ZYNQ Linux RT根目录下的文件夹等信息

图5-41:查看下位机ZYNQ里面是否存在lvuser路径和必备的KO驱动和SO动态库文件

        4)还可以通过MobaXterm查看ZYNQ开发板当前的CPU和RAM使用率,如图5-42所示;当然,我们也给大家封装了可以获取这些信息的LabVIEW VI,在前面第三章PS端函数选板介绍里面有提到,不记得的用户可以回看一下。同理,也可以查看当前TF卡的容量情况,相当于磁盘使用率了,如图5-43所示。

图5-42:查看ZYNQ当前双核CPU的使用率、DDR内存使用率、网络通信速度等信息

图5-43:下位机ZYNQ Linux RT的磁盘空间使用情况(8GB TF卡)

5.1.6:如何将多个不同的ZYNQ板子设置成不同的静态IP地址,以示区分(特别是分布式应用的时候,动态IP往往不好区分设备,目前学习开发阶段的话,不要改哈,用默认的DHCP和eth0的虚拟地址eth0:1一般足够开发和调试了

注意:默认情况下,如果原始的PYNQ镜像里面没有这些网络开启和设置信息,那么可以手动输入下面的这些网络设置信息可以了!

auto eth0

iface eth0 inet dhcp

auto eth0:1

iface eth0:1 inet static

address 192.168.2.99

netmask 255.255.255.0

要用sudo vim指令进行改写:

sudo vim /etc/network/interfaces.d/eth0(打开这个网络配置文件)

a(进入编辑模式)

//----比如将ZYNQ的物理网卡eth0改成静态的IP地址:192.168.1.100

auto eth0

iface eth0 inet static

address 192.168.1.100

netmask 255.255.255.0

//------------

Esc(保存)

:wq(退出)

       注意1设置静态IP地址最佳的方式,就是把这个文件里面最上面的dhcp动态获取改成跟下面类似的静态方式static,因为有些时候这个eth0:1不灵,所以要么接路由器,要么就彻底将eth0弄成静态IP地址。对于分布式多个ZYNQ硬件的话,最好弄成静态IP地址好区分(前期不需要,后期产品批量生产的时候,分布式应用的时候可以这样弄)。

        注意2如果有时候身边没有路由器,默认的192.168.2.99在直连(ZYNQ开发板与上位机开发电脑直连)的情况下连不上,可以尝试执行一下下面这个指令:比如将原先的eth0网卡的eth0:1(虚拟网卡IP)重新设置启动一下,注意:每一台ZYNQ设备的MAC地址不要相同,否则会在内网里面有冲突,简单的办法就是把IP地址的最后一位作为MAC的地址的最后一位,以示区分。

ifconfig eth0:1 192.168.2.99 hw ether 00:11:00:00:11:44 netmask 255.255.255.0 broadcast 192.168.2.255 up

本文标签: 烧录 镜像文件 宝典 系统 LabVIEW