Stm32mp157 use r8152 usb network card windows ubuntu board intercommunication tutorial

来自百问网嵌入式Linux wiki

硬件连接示

硬件资源列表

  • 百问网stm32mp157 pro开发板一套
  • 超六类RJ45网线至少1M长(默认配有)
  • R8152 USB 有线网卡一个,需自行购买(目前测试多款网卡芯片 发现只有此款可以满足我们的日常使用需求)。
  • 有线网卡购买地址https://item.taobao.com/item.htm?&id=642282808016

连接方式

​ 请参考下图所示,连接R8152 USB网卡USB端连接至电脑USB接口,另一端网卡接口插入配套的网线,网线另一端接入如下图所示的开发板网卡位置(只能接下图所示网卡)其它网卡网卡直连没法使用所有功能,连接成功后,请打开电脑启用开发板电源,参考下面 系统IP配置章节逐一配置IP地址来实现三者互通。

Stm32mp157 r8152.png

系统IP配置

windows配置

​ 参考上图连接R8152 USB网卡至电脑以后,会在设备管理器-->网络适配器下新增一个Realtek USB FE Family Controller 的网络设备(不同的电脑最后的几位字符可能不太一样),确认已经有此设备后可以继续执行下面步骤进行配置IP地址和网段等操作。

R8152-image-windows config1.png

​ 确认好R8152 USB网卡名称后,参考下图打开控制面板-->网络和共享中心-->更改适配器设置 准备对R8152 USB网卡进行IP配置。

R8152-image-windows config2.png

​ 进入网络适配器页面后,参考下图 鼠标左键点击选中 R8152 USB网卡设备,选中设备后鼠标右键,在弹出的选项中点击属性按钮,之后在弹出新的属性对话框内 点击 Internet协议版本4(TCP/IPV4) 继续在新弹出的对话框参考下图图示 选中 使用下面的IP地址 输入 IP地址 192.168.5.10 子网掩码 255.255.255.0 默认网关 192.168.5.1 设置完成后,点击确定,会返回到以太网属性界面,继续点击 确定 表示windows下R8152 USB网卡的IP已经配置完成。

R8152-image-windows config3.png

常见问题

设备管理器里没有加载出来 Realtek USB FE Family Controller 网络设备

  • 检查vmware是否默认将此设备连接到虚拟机,或提示选择连接到哪里

R8152-image-windows config4.png

如果系统没有弹出上图所示窗口,请参考下图所示来查看此 usb网卡设备是否默认已经连接到了ubuntu,如果已连接 请参考下图所示 点击断开与主机的连接。

R8152-image-windows config5.png

​ 如果没有出现上述两种情况 但是usb网卡设备 在windows设备管理-->网络适配器内依旧没有新增设备,可能是由于驱动问题,请参考下述步骤检查并安装相应的设备驱动。

  • 检查驱动是否正常安装

    由于此usb网卡设备驱动是免驱设备,正常情况系统会自动装载此设备驱动,如没有自动安装驱动,请使用驱动精灵/驱动人生等工具自动安装。

vmware配置

​ 确认windows R8152 USB网卡配置成功后,请参考下图配置vmware 虚拟网络编辑器,参考下图在开始菜单搜索 虚拟网络编辑器 搜索出来后点击Open 打开虚拟网络编辑器 在弹出的 虚拟网络编辑器页面,点击 更改设置 来修改网络配置设置桥接默认连接到 R8152 USB网卡。

R8152-image-vmware config1.png

​ 参考下图所示 点击 桥接模式 在桥接模式下的 已桥接至下拉框 点击 会显示出很多个网卡设备,我们只需要点击选中为 R8152 USB网卡名称为Realtek USB FE Family Controller 的网络设备即可,选中后,点击确定即可完成vmware配置。

R8152-image-vmware config2.png

ubuntu配置

​ 执行完上述配置R8152网卡作为默认的桥接设备后,开打ubuntu虚拟机,在虚拟机关机状态下,点击 编辑虚拟机设置 在弹出的虚拟机设置对话框,点击 网络适配器 设置为如下图所示的桥接默认,设置成功后点击确定,表示已经设置完成,可以 开启虚拟机。

R8152-image-ubuntu config1.png

配置网络适配器为桥接模式后,需要进入ubuntu手动设置默认网卡的IP地址为静态IP,参考下图所示,打开 系统 Setting

R8152-image-ubuntu config2.png

​ 打开Setting后,在左侧找到 Network 选择栏,点击显示详细内容,之后点击 设置 图标,在弹出的设置界面内,点击 IPV4 切换到 IPV4 设置页面,之后继续点击 Manual 表示自己设置IP地址,在Addresses下的输入框分别填入如下所示的内容,其中 Address写入192.168.5.11 Netmask 写入 255.255.255.0 Gateway 写入 192.168.5.1,填写完成后点击 Apply 应用此设置,之后会弹出一个对话框提示输入 root用户的密码,请参考下图所示。

R8152-image-ubuntu config3.png

在弹出的授权请求对话框 里面输入 root用户的密码 (如果未设置root用户密码 请在ubuntu终端下使用 sudo passwd root命令来设置root用户密码),输入密码后点击 Authenticate 授权,到这里就表示IP地址已经设置成功,之后我们可以在ubuntu终端下输入 ifconfig 命令来查看IP地址是否设置正确。

R8152-image-ubuntu config4.png

开发板设置IP地址

  • 每次开机手动设置P地址

    开发板终端下执行 ifconfig eth0 192.168.5.9 即可设置eth0网卡IP地址为192.168.5.9,设置成功后可以使用 ifconfig命令来查看已设置的IP地址,参考如下命令。

R8152-image-stm32mp157-board config1.png

  • 设置IP为固定静态IP(开机不变)

    设置eth0为静态IP地址,如下操作在开发板/etc/systemd/network/目录下新建50-static.network文件。

    [root@100ask:~]# vi /etc/systemd/network/50-static.network

    新建后加入如下内容,执行 :wq 保存并退出,退出后终端执行systemctl enable systemd-networkd 并重启开发板系统。

  [Match]
  Name=eth0

  [Network]
  Address=192.168.5.9/24
  Gateway=192.168.5.1 

R8152-image-stm32mp157-board config2.png

​ 重启后使用ifconfig查看IP地址是否已经自动配置。

R8152-image-stm32mp157-board config3.png

三者互ping验证

设置完上述IP地址后,知道了 windows ip 192.168.5.10 ubuntu ip 192.168.5.11 开发板ip 192.168.5.9 接下来验证三者是否可以互相网络通信。

windows ping ubuntu

​ 在windows下使用命令提示符,输入 ping 192.168.5.11去 ping ubuntu IP地址,看是否可以接收到数据,同样的 ubuntu下在终端里输入 ping 192.168.5.10 来查看是否有数据返回,正常情况如下图所示,如果你在测试时发现只能单向Ping 通请检查windows防火墙是否全部关闭。

R8152-windows-ping ubuntu.png

开发板ping windows 和 ubuntu

​ 如下所示在开发板手动设置 ip地址为192.168.5.9 之后使用ping命令来验证是否可以ping通 ubuntu和windows主机,其中ping windows使用ping 192.168.5.10命令 ping ubuntu使用ping 192.168.5.11命令 看是否有返回值,正确情况如下图所示。

R8152-board-ping-windows-ubuntu.png

windows 和 ubuntu ping 开发板

​ 如下图所示为windwos和ubuntu去ping 开发板IP,在windows下使用 命令提示符,执行 ping 192.168.5.9 去ping开发板,来确认是否可以和开发板网络通信,在ubuntu使用终端,执行ping 192.168.5.9去ping开发板来确认是否可以和开发板网络通信。

R8152-windows-ubuntu-ping-board.png

开发板使用

使用开发板网络服务

文件系统内使用nfs挂载ubuntu目录

​ 确认windows ubuntu 开发板三者可以互相ping通以后,ubuntu下已经配置好了nfs目录及环境,可以在开发板上执行 mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt 命令来挂载ubuntu的nfs目录到开发板/mnt目录下(/home/book/nfs_rootfs /目录为示例的nfs目录,你的可能会不一样),挂载成功后使用df -h命令查看所有挂载。

[root@100ask:~]# mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt

R8152-stm32mp1-board-nfs.png

开发板使用mobaxterm ssh登录开发板

​ 确认windows ubuntu 开发板三者可以互相ping通以后,可以使用moabaxteram SSH会话远程登录开发板,操作步骤请参考下图所示。

R8152-board-use-ssh.png

其它可选配置

配置Ubuntu连接网络

​ 在某些情况下 学员可能需要保证ubuntu windows 和开发板之间可以网络通信用来传输文件或者调试,又想让ubuntu可以连接网络进行安装某些在线的软件包,此时我们需要在ubuntu上再新增一个网卡设备并设置为NAT方式用于共享主机Internet网络进行上网。

​ 首先在虚拟机关机状态下,点击 编辑虚拟机设置 在虚拟机设置里新增一个网络适配器。

R8152 vmware-config-NAT1.png

进入虚拟机设置后,点击 添加--> 网络适配器-->下一步 ,之后再点击完成,即可。

R8152 vmware-config-NAT2.png

​ 添加完成 网络适配器后,会在虚拟机设置里面 出现一个 网络适配器2设备,之后我们需要设置网络连接方式 为 NAT模式 设置成功后,点击确定即可返回虚拟机启动页面,此时启动虚拟机即可。

R8152 vmware-config-NAT3.png

​ 启动虚拟机并进入虚拟机后,可以在终端下执行ifconfig命令查看当前网卡信息,会发现多出来一个网卡设备,其中一个是我们之前配置r8152网卡桥接所用的网卡,另一个ens38(你的可能不是这个名称)已经自动配置了NAT网段的IP(如没有自动设置NAT网卡IP则在ubuntu终端下执行 sudo dhclient 来自动获取IP),之后我们可以来使用ping 来验证是否可以上网和之前的R8152网卡直连是否依旧可用,使用ping qq.com 来验证是否可以连接internet网络,使用ping 192.168.5.10来验证原R8152网卡直连是否有效。

R8152 vmware-config-NAT4.png

  • 常见问题1 虚拟机可以上网但是无法ping通windows和开发板

    请在开始菜单 打开 虚拟网络编辑器,参考是否和下图设置一致,由于192.168.2.0/24网段已经被用于R8152网卡直连所用,所以NAT模式下不能为 192.168.5.0/24网段。

R8152 vmware-config-NAT5.png

配置开发板连接网路

​ 我们的开发板一般有两个网口,其中一个被我们用来和R8152 usb网卡进行连接作为调试使用,但是另一个网络可以用来进行设置上网,如果需要另一个网口上网,我们可以把网线一段接至开发板 另一端接至可以上网的路由器,之后在开发版文件系统内执行 udhcpc -i eth1 等待获取IP成功即可。

uboot下设置IP挂载NFS网络文件系统启动系统

  • 问: 为什么要在开发板uboot下设置IP挂载NFS网络文件系统启动系统?
  • 答: 在某些场景下,需要多次调试内核,存储驱动或文件系统等某个比较复杂的问题,每次通过手动拷贝重启的方式太过于繁琐缓慢,所以就通过网络方式下载到内存直接运行,文件系统也存在于ubuntu端,可以快速的去调试或定位问题。

​ 在确认windows ubuntu 开发板三者可以互相ping通并配置好 uboot 挂载所需的nfs 根文件系统 TFTP下载所需的内核和设备树后,可以使用如下命令进行下载启动并自动挂载nfs文件系统,其中 /home/book/nfs_rootfs 为ubuntu下开发板所需的文件系统所在目录,stm32mp157c-100ask-512d-lcd-v1.dtb 为设备树文件,uImage为内核镜像文件。

setenv serverip 192.168.5.11
setenv ipaddr 192.168.5.9
setenv gatewayip 192.168.5.1
tftpboot 0xc4000000 stm32mp157c-100ask-512d-lcd-v1.dtb; tftpboot c4100000 uImage; setenv bootargs root=/dev/nfs nfsroot=192.168.5.11:/home/book/nfs_rootfs,vers=3 rw ip=192.168.5.9:192.168.5.11:192.168.5.1:255.255.255.0:ask:eth0:off:192.168.5.1; bootm c4100000 - 0xc4000000 

​ 执行上述命令后开发板会自动获取内核和设备树文件到开发板内存内,并配置文件系统参数,启动内核并自动挂载NFS文件系统。

R8152-stm32mp1-ubootfornfsboot.png

​ 运行内核并挂载nfs文件系统成功后,可以在开发板串口终端下执行 cat /pro/mounts 来查看根目录所在位置。

R8152-stm32mp1-ubootfornfsboot.png