此文档仅为个人学习记录
参考:【正点原子】STM32MP157网络环境TFTP&NFS搭建手册V1.3.2.pdf
STM32MP157网络环境 TFYP&NFS搭建手册
第一章 STM32MP157开发板网络环境搭建
1.1.2网络拓扑结构
根据百度百科的记录,网络拓扑(Network Topology)结构是指用传输介质互连各种设备的物理布局。指构成网络的成员间特定的物理的即真实的、或者逻辑的即虚拟的排列方式。本文档的理解就是开发板与电脑的局域网组合形式。
各种设备指的是电脑主机、虚拟机、开发板、路由器/交换机等。传输介质指的是直通网线、WIFI等。
1.1.4 同一网段
同一网段:本文档所用的是C类的IP,IP地址范围为192.0.0.0-223.255.255.255
。C类IP前三个数表示不同的网络,最后一个数表示同个网段中的不同主机。例如 192.168.10.0
和192.168.18.0
是不同的网络(例如局域网和无线网络),192.168.10.50
和192.168.10.100
是在同一网段(都在局域网)。只有在同一网段中的主机才能ping通。
1.4电脑wifi上网,开发板和电脑直连
1.4.7总结
电脑WIFI上网,开发板和电脑直连的情况来说:
- 防火墙设置:关闭电脑和虚拟机的防火墙。
- 网络连接:电脑使用无线上网,开发板网口直连电脑网口。
- VMwear 设置:设置网络适配器为桥接模式;添加一个网络适配器2为NAT模式。
- Ubuntu设置:设置NAT模式的网络适配器为自动获取模式(DHCP)﹔手动设置桥接模式的网络适配器的IP信息。
- Windows设置:手动设置以太网 TCP/IPv4属性中的IP信息。开发板设置:手动设置开发板的I信息。
注意:Ubuntu里桥接模式的网络适配器、电脑的以太网、开发板的网口,三者要在同一网段,且不能与NAT模式的网络适配器、虚拟机子网在同一网段。Windows和 Ubuntu通过NAT模式的网络适配器通信。
1.4.7.1 对于正点原子的文档:
在ubuntu中用ifconfig
查看IP信息列表
在windows中用ifconfig
查看IP信息列表
Ubuntu中:
NAT模式连接到Windows的IP(ens38)为:192.168.198.128
。
桥接网络的IP(ens33)需要手动设置:(1)
在windows中:
网络适配器名 | IP 地址 | 备注 |
---|---|---|
以太网适配器 VMware Network Adapter VMnet1 | 192.168.219.1 | 在 host-only 模式下, 动态分配虚拟系统的 TCP/IP 配置信息,本文档不涉及 |
以太网适配器 VMware Network Adapter VMnet8 | 192.168.198.1 | 提供 DHCP 服务,用于主机和虚拟机互通,虚拟机上网 |
无线局域网适配器 WLAN | 192.168.3.201 | 用于 Windows 主机上网 |
以太网适配器 VMware Network Adapter VMnet0 | (2) | 不提供 DHCP,用于桥接网络,要在虚拟网络编辑器设置手动设置 IP |
最后:
(1):192.168.10.100
(2):192.168.10.200
(3):开发板IP设置:192.168.10.50
注意:
1, 在 Windows终端没有看到VMnet0,在虚拟网络编辑器中可以看到。这是我们用来桥接的网络适配器,不会自动分配IP,需要手动设置。这里要注意,VMnet0设置的网段不能和VMnetl、VMnet8的网段一样,不然会有冲突。
2, 使用 Filezilla 实现 Ubuntu 和 Windows 文件互传中的主机IP就是:NAT模式连接到Windows的IP(ens38)
3, 开发板IP设置:每次复位后需要重新设置
ifconfig eth0 up
ifconfig eth0 192.168.10.50
ifconfig
1.4.7.2 对于我的电脑
Ubuntu中:
NAT模式连接到Windows的IP(ens38)为:192.168.88.128
。
桥接网络的IP(ens33)需要手动设置:(1)
在windows中:
网络适配器名 | IP 地址 | 备注 |
---|---|---|
以太网适配器 VMware Network Adapter VMnet1 | 192.168.202.1 | 在 host-only 模式下, 动态分配虚拟系统的 TCP/IP 配置信息,本文档不涉及 |
以太网适配器 VMware Network Adapter VMnet8 | 192.168.88.1 | 提供 DHCP 服务,用于主机和虚拟机互通,虚拟机上网 |
无线局域网适配器 WLAN | 17*.16.72.1 | 用于 Windows 主机上网 |
以太网适配器 VMware Network Adapter VMnet0 | (2) | 不提供 DHCP,用于桥接网络,要在虚拟网络编辑器设置手动设置 IP |
最后:
(1):192.168.10.100
(2):192.168.10.200
(3):开发板IP设置:192.168.10.50
开发板IP设置:每次复位后需要重新设置
ifconfig eth0 up
ifconfig eth0 192.168.10.50
ifconfig
第二章 TFTP环境搭建
2.1 TFTP简介
TFTP (Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。我们可以使用TFTP来加载内核zlmage、设备树和其他较小的文件到开发板DDR上,从而实现网络挂载。
2.2搭建TFTP
2.2.2TFTP目录
/home/song/linux/tftpboot
2.2.3 tftp-hpa 和 tftpd-hpa 服务程序
重启tftpd-hpa: sudo service tftpd-hpa restart
(ubuntu中)
重启xinetd服务: sudo service xinetd restart
(ubuntu中)
2.3网络环境
确保网络环境正常,Ubuntu、Windows和开发板能相互ping通。
- 开发板 IP:
192.168.10.50
- 虚拟机 IP:
192.168.10.100
- 电脑网口的 IP:
192.168.10.200
2.4TFTP测试
在板子上获取ubuntu tftpboot下的文件时,命令格式为: tftp [option] ... host [port]
- -g 表示下载文件 (get)
- -p 表示上传文件 (put)
- -l 表示本地文件名 (local file)
- -r 表示远程主机的文件名 (remote file)
使用ifconfig查看是否配置开发板IP,如果没有,使用以下语句配置
ifconfig eth0 192.168.10.50
Note:
- 在开发板上,将虚拟机TFTP工作目录下的目标文件复制到开发板中的当前文件夹下。
tftp -g -r test.c 192.168.10.100
- 在开发板上,将虚拟机TFTP工作目录下的test文件夹下的test.c文件复制到开发板中的当前文件夹下。
tftp –g –r test/test.c 192.168.100
- 如果文件其它用户权限为不可读,在板子上获取该文件时会报错(tftp:server error(0)Permission
denied),此时,修改该文件的它用户权限为可读即可(-********* ->-******r**)
; - tftp不能传文件夹。
第三章 NFS环境搭建
3.1NFS简介
网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。我们可以在Ubuntu 上制作开发板的根文件系统,然后使用NFS来加载根文件系统到开发板的DDR上。
3.3NFS共享目录
/home/song/linux/nfs
3.4 配置NFS服务
重启 NFS 服务器:sudo /etc/init.d/nfs-kernel-server restart
(ubuntu下)
查看 NFS 共享目录:showmount –e
(ubuntu下)
3.5网络环境
确保网络环境正常,Ubuntu、Windows和开发板能相互ping通
- 开发板 IP:
192.168.10.50
- 虚拟机 IP:
192.168.10.100
- 电脑网口的 IP:
192.168.10.200
3.6NFS测试
首先使用ifconfig查看是否配置开发板IP,如果没有,使用以下语句配置
ifconfig eth0 192.168.10.50
创建一个getnfs目录,将虚拟机NFS 共享目录挂载到到开发板的 getnfs目录中。挂载成功后,进入 getnfs 目录下可以查看到挂载的文件。
mkdir getnfs
mount -t nfs -o nolock,nfsvers=3 192.168.10.100:/home/song/linux/nfs getnfs/
挂接命令(mount)
命令格式:mount [-t vfstype] [-o options] device dir
(1)-t vfstype
指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:
- 光盘或光盘镜像:iso9660
- DOS fat16文件系统:msdos
- Windows 9x fat32文件系统:vfat
- Windows NT ntfs文件系统:ntfs
- Mount Windows文件网络共享:smbfs
- UNIX(LINUX) 文件网络共享:nfs
(2)-o options
主要用来描述设备或档案的挂接方式。常用的参数有:
- loop:用来把一个文件当成硬盘分区挂接上系统
- ro:采用只读方式挂接设备
- rw:采用读写方式挂接设备
- iocharset:指定访问文件系统所用字符集
(3)device
要挂接(mount)的设备。
(4)dir
设备在系统上的挂接点(mount point)。
Note: 板子复位后需要重新挂载
第四章 挂载教程系统
4.1 TFTP 挂载内核和设备树
如何进入uboot命令行:参考STM32MP1嵌入式Linux驱动开发指南10.2.2.
启动开发板,进入 uboot 命令行界面,设置网络相关信息。 这里笔者 Ubuntu 的 IP 是192.168.10.100
,给开发板设置的 IP 是 192.168.10.50
setenv ipaddr 192.168.10.50 //开发板 IP 地址
setenv ethaddr 00:04:9f:04:d2:35 //开发板网卡 MAC 地址
setenv gatewayip 192.168.10.1 //开发板默认网关
setenv netmask 255.255.255.0 //开发板子网掩码
setenv serverip 192.168.10.100 //服务器地址,也就是 Ubuntu 地址
saveenv //保存环境变量
4.2NFS挂载教程系统
setenv bootargs 'console=ttySTM0,115200 root=/dev/nfs nfsroot=192.168.10.100:/home/song/linux/nfs/rootfs/buildroot-2020.06-rootfs,proto=tcp rw ip=192.168.10.50:192.168.10.100:192.168.10.1:255.255.255.0::eth0:off'
//setenv bootargs 'console=开发板串口,波特率 root=挂载方式 nfsroot=虚拟机 IP 地址:文件系统路径,proto=传输协议 读写权限 ip=开发板 IP 地址:虚拟机 IP 地址:网关地址:子网掩码::开发板网口:off'
saveenv
boot
常见问题
1、 ubuntu休眠后,连不上网
ifconfig查看IP信息列表是这种状态
可以看到虚拟机NAT模式连接到Windows的网络ens38消失,自然无法连接到网络
解决方法: 重启网络,在终端输入 sudo service network-manager restart
再次用ifconfig查看IP信息列表
网络测试: