【北京迅为】《iTOP-3588开发板nfs&tftp烧写手册》

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP,内置NPU,支持INT4/INT8/INT16/FP16混合运算能力,支持安卓12和、Debian11、Build root、Ubuntu20和22版本登系统。了解更多信息可点击迅为官网   

【粉丝群】824412014

【实验平台】:迅为RK3588开发板

【内容来源】《iTOP-3588开发板nfs&tftp烧写手册》

【全套资料及网盘获取方式】联系淘宝客服加入售后技术支持群内下载

【视频介绍】:【强者之芯】 新一代AIOT高端应用芯片 iTOP -3588人工智能工业AI主板


第1章 TFTP&NFS网络烧写

使用网络烧写的方式来进行调试是非常方便的,本章将介绍使用tftp在服务器下载Linux内核镜像和设备树,并使用NFS网络挂载根文件系统的方法。

文档中使用的开发环境:Ubuntu20.04 LTS

平台:迅为iTOP-3588开发板

此外,开发板和Ubuntu的IP.0要在同一网段,本文档Ubuntu的IP地址为192.168.1.19,开发板的IP地址设置为192.168.1.2,关于网络配置不再赘述。

手册以buildroot系统为例,如使用ubuntu系统,Debian系统,yocto系统等系统,也可以参考本手册。

1.1 安装TFTP服务端

首先在ubuntu 中执行以下命令安装 TFTP 服务:

apt-get install tftp-hpa tftpd-hpa

 

安装完成以后创建 TFTP 服务器工作目录,并对TFTP的服务配置文件进行修改,具体步骤如下:

输入以下命令在家目录创建tftpboot文件夹,如下图所示:

mkdir -p /home/topeet/tftpboot

然后输入以下命令修改tftpboot文件夹权限,如下图所示:

chmod 777 /home/topeet/tftpboot

最后修改配置文件,打开配置文件以后如下图所示:

vim /etc/default/tftpd-hpa

 

修改为如下内容:

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/home/topeet/tftpboot/"

TFTP_ADDRESS=":69"

TFTP_OPTIONS="-l-c-s"

修改完成如下图所示:

 

修改完成保存退出,在终端输入以下命令重启tftpd-hpa服务。

service tftpd-hpa restart

如下图所示:

 

1.2 安装NFS服务 

首先执行以下命令安装 NFS 服务:

apt-get install nfs-kernel-server

 

然后使用以下命令创建ubuntu20desktop文件并赋予其权限如下图所示:

mkdir ubuntu20desktop

chmod 777 ubuntu20desktop/

使用以下命令编辑/etc/exports 文件,并添加 NFS 服务的工作目录的路径:

vim /etc/exports

添加 NFS 目录:

以/home/topeet/ubuntu20desktop 为例,将其添加到/etc/exports 文件中, 如下所示:

/home/topeet/ubuntu20desktop *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

 

使用以下命令编辑/etc/exports 文件,并添加 NFS 服务的工作目录的路径:

vim /etc/exports

添加 NFS 目录:

以/home/topeet/ubuntu20desktop 为例,将其添加到/etc/exports 文件中, 如下所示:

/home/topeet/ubuntu20desktop *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

 

配置参数说明:

rw :读写访问

sync :所有数据在请求时写入共享

async :NFS在写入数据前可以相应请求

secure :NFS通过1024以下的安全TCP/IP端口发送

insecure :NFS通过1024以上的端口发送

wdelay :如果多个用户要写入NFS目录,则归组写入(默认)

no_wdelay :如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

no_hide 共享NFS目录的子目录

subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限

no_subtree_check 和上面相对,不检查父目录权限

all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

no_all_squash 保留共享文件的UID和GID

root_squash root用户的所有请求映射成如anonymous用户一样的权限no_root_squas root用户具有根目录的完全管理访问权限

使用以下命令重启 NFS 服务:

service nfs-kernel-server restart

最后使用命令:“showmount -e ”查看nfs目录是否成功挂载(这里也可能要重启ubuntu才会又挂载目录),如下图所示:

 

至此,Ubuntu nfs 服务器端的配置完成。

1.3 配置开发板网络

连接好网线,上电启动开发板,在加载阶段点击“ctrl+c”进入uboot命令行,如下图所示:

 

然后来到ubuntu虚拟机终端,输入命令“ifconfig”来查看虚拟机ubuntu的ip,如下图所示: 

可以看到ubuntu虚拟机的ip地址为192.168.1.19,然后输入以下命令设置开发板的网络,设置完成如下图所示:

setenv ipaddr 192.168.1.2

setenv serverip 192.168.1.19

setenv gateway 192.168.1.1

 

然后输入以下命令测试开发板与ubuntu虚拟机之间的网络是否畅通,测试成功如下图所示:

 ping 192.168.1.19

 

如果环境变量不知道哪里设置错了,或者想要恢复成emmc启动,可以使用以下命令重置环境变量

env default -a

saveenv

注:若saveenv打印如下内容,需要进u-boot源码使用make menuconfig命令修改如下配置:

 

Environment --->

Select the location of the environment

(X) Environment in a block device

 修改完配置,使用以下命令覆盖默认配置文件,重新编译烧写uboot镜像。

cp .config configs/rk3588_defconfig

1.4 tftp加载内核和设备树

内核镜像boot.img和设备树镜像rk3588-evb7-lp4-v10-linux.dtb需要通过Linux源码编译获得,具体的源码编译步骤可以查看“【北京迅为】itop-3588开发板源码编译手册v1.0.pdf”文件。

内核源码编译完成之后将内核镜像boot.img和设备树文件rk3588-evb7-lp4-v10-linux.dtb拷贝到第一小节创建的“/home/topeet/tftpboot”目录下,拷贝完成如下图所示:

 

然后根据上一小节内容配置自身ip和server ip,设置完成之后,使用以下命令将内核和设备树通过网络加载进内存之中,如下图所示:

setenv bootcmd "tftpboot 0x08300000 rk3588-evb7-lp4-v10-linux.dtb;tftpboot 0x0027f800 boot.img ; bootm 0x0027f800 - 0x08300000"

通过以上命令将boot.img镜像下载到首地址为0x0027f800的内存空间;将rk3588-evb7-lp4-v10-linux.dtb设备树镜像将下载到首地址为0x08300000的内存空间;随后输入以下命令,等待网络下载内核和设备树,如下图所示:

env run bootcmd

系统启动完成如下图所示: 

注意,本小节内容只是对内核、设备树进行了加载,可以更便捷的进行内核和设备树的调试,而如果想要进行文件系统的网络调试可以进行下一小节内容的学习。

1.5 nfs挂载文件系统

要实现nfs挂载文件系统,进入内核源码目录使用make menuconfig命令进入内核配置界面进下如下配置,如下图所示:

[*] Networking support  --->

Networking options  --->

[*]   IP: kernel level autoconfiguration

[*]     IP: DHCP support

[*]     IP: BOOTP support

[*]     IP: RARP support

File systems  --->

[*] Network File Systems  --->

[*]   Root file system on NFS   

 

配置完使用以下命令覆盖默认配置文件,然后重新编译烧写内核。

cp .config arch/arm64/configs/rockchip_linux_defconfig

1.5.1 获取文件系统镜像

由于文件系统类型较多,为了统一,使用以下两种方法来进行文件系统镜像的获取。

1.Linux源码编译

第一种方法为通过Linux源码编译获得,具体的镜像编译步骤可以查看“【北京迅为】itop-3588开发板源码编译手册.pdf”手册。编译完成之后,来到源码目录下的rockdev文件夹,其中rootfs.ext4就是要烧写的文件系统镜像,如下图所示:

在第二小节中创建的nfs目录为“/home/topeet/ubuntu20desktop”,将rootfs.ext4文件拷贝到“/home/topeet”目录下,拷贝完成如下图所示: 

然后使用以下命令将文件系统挂载到ubuntu20desktop文件夹,如下图所示:

mount rootfs.ext4  ubuntu20desktop/

 

至此ubuntu虚拟机中的配置就完成了。

  1. update.img解包

为了方便,提供好的镜像为多个独立镜像整合在一起的update.img镜像文件,可以使用RKDevTool 工具来进行update.img的解包,获得rootfs.img文件系统镜像,可以通过“【北京迅为】itop-3588开发板快速烧写手册.pdf”手册中的4.4 小节“解包 update.img”来进行解包解包完成之后如下图所示:

 

在第二小节中创建的nfs目录为“/home/topeet/ubuntu20desktop”,将rootfs.img文件拷贝到“/home/topeet”目录下,拷贝完成如下图所示: 

然后使用以下命令讲文件系统挂载到ubuntu20desktop文件夹,如下图所示:

mount rootfs.img  ubuntu20desktop/

至此ubuntu虚拟机中的配置就完成了。

1.5.2 网络挂载

开发板最新的uboot镜像已经适配了网络功能,iTOP-3588开发板俩个网口都支持uboot网络,作者选择使用eth1。

Ubuntu虚拟机配置完成之后,回到开发板uboot终端,输入以下命令设置要挂载的文件系统,注意:标黄的部分是nfs挂载目录,要根据实际情况进行修改。

setenv bootargs "root=/dev/nfs root=/dev/nfs  nfsroot=${serverip}:/home/topeet/ubuntu20desktop,v3 rw  ip=${ipaddr}:${serverip}:${gateway}:255.255.255.0::eth1:off"

saveenv

最后输入以下命令进行文件系统的网络挂载,挂载成功如下图所示:

env run bootcmd

系统正常启动完成之后,如下图所示: 

至此nfs挂载文件系统章节就结束了。 

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值