linux开发板tftp 搭建,iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动

  • Post author:
  • Post category:linux


原标题:iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动

硬件平台:迅为iTOP-i.MX6ULL开发板

使用网络方式调试 Linux 非常方便,下面开始介绍用 tftp 下载 Linux 内核镜像,设备树,然后使用 NFS

网络挂载根文件系统,成功后可以在 PC 机上调试开发板。

文档中使用的开发环境:

Ubuntu16.04 LTS

迅为 i.MX6ULL 终结者开发板

开发板 uboot 使用迅为搭建好的支持网络的版本,Net 为 FEC1,如图 79.1:

ac6144a9831385ba62eac12e97bcf8d6.png

图 79.1

根文件系统使用的是 \终结者 ULL 光盘资料\i.MX6ULL 终结者光盘资料\08_开发板系统镜像\03_文件系

统镜像\02_Buildroot 文件系统\rootfs.tar.bz2。

此外,开发板和 Ubuntu 要在在同一网关,本文档 Ubuntu 的 IP 地址为 192.168.1.12,开发板的 IP 地址

为 192.168.120,关于网络配置不再赘述,Ubuntu 设置如下:

ba846b67c48aee734ce05b7a2115c46c.png

79.1 配置开发板网络

网线连接口如图 79.1.1:

5d10f8d3d25011ac37b9e54256b656ca.png

图 79.1.1

进入命令行后,输入“?”或 “help”查看 uboot 命令,使用 printenv 查看环境变量;我们在终端输入:

setenv serverip 192.168.1.12

服务器的 IP 地址(Ubuntu)

setenv gatewayip 192.168.1.1

网关

setenv

ipaddr 192.168.1.120

开发板的 ip 地址

setenv

netmask 255.255.255.0

子网掩码

setenv ethaddr 42:03:07:3B:15:5F

saveenv

保存环境变量

reset

重启

完成后,输入“ printenv serverip ipaddr gatewayip netmask ”,显示如图 79.1.2:

ec64058c885ba9766c532386cbb3fe2e.png

图 79.1.2

测试与服务器的网络是否畅通,输入“ ping 192.168.1.12 ”,显示如图 79.1.3:

bae4d9d2b70299b85052fb99afb35f7b.png

图 79.1.3

出现这样的结果表示网络已通,可以进行下一步了。

79.2 tftp 服务搭建

tftp 是一个简单的基于 udp 的文本文件传输协议,我们用它将内核镜像和设备树下载到开发板内存中,

并指定地址,只在 Ubuntu 上配置好 tftp 服务器即可。

1. 在家目录下创建文件夹:mkdir tftpboot ,

2. 修改文件夹权限:chmod 777 tftpboot

3. 下载:sudo apt-get install tftp-hpa tftpd-hpa

4. 修改配置文件:sudo vim /etc/default/tftpd-hpa ,如图 79.2.1

6655978ba4b802f7852a2c1cb7cd96b9.png

图 79.2.1

5. 启动:sudo service tftpd-hpa restart

6. 将 Linux 内核镜像 zImage,设备树拷贝到 tftpboot 文件夹下,

8c149e5147ef0ff1f52ca2e07644318b.png

图 79.2.2

7. 测试:在开发板输入“ tftp 0x80000000 zImage ”,显示如图 79.2.3:

368b9c377e0dc59de88ee1b9fbb3e511.png

图 79.2.3

出现上图所示的结果说明 tftp 搭建成功。

79.3 nfs 服务搭建

我们将开发板的文件系统放在 PC 端(Ubuntu),开发板的文件系统类型设置为 nfs,就可以挂载文件

系统了。具体步骤(在 Ubuntu 上操作):

1. 安装 nfs 服务:sudo apt-get install nfs-kernel-server

2. 创建文件夹,存放开发板的根文件系统:mkdir nfs_rootfs ,chmod 777 nfs_rootfs 。

3. 更改配置文件:sudo vi /etc/exports ,文件末尾添加:

/home/ubuntu/nfs_rootfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)

前面路径修改为自己的路径,* 含义为所有的用户,*和后边的左括号”(“之间不要出现空格。修改为图 79.3.1

所示:

698b74c3ef22035d67555bc777a601d7.png

图 79.3.1

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 用户具有根目录

的完全管理访问权限

4. 重启 nfs 服务

sudo service nfs-kernel-server restart

sudo /etc/init.d/nfs-kernel-server restart ,如图 79.3.2:

d54a268a3f6e2756eadf7f8e9c16dc40.png

图 79.3.2

出现上图所示说明搭建成功。

5.

将文件系统压缩包解压后的文件放到该目录下。

6a72a22a0fc802c509080685d89aacef.png

图 79.3.3

79.4 设置自启动参数

bootcmd 和 bootagrs 是两个很重要的环境变量,bootcmd 保存着 uboot 启动命令,bootargs 保存着一些

参数,这些参数会传递给 Linux 内核。

设置自启动模式命令(启动内核设备树),我们把 PC 端准备好的内核和设备树下载到开发板的内存,不用

再往 eMMC 或 NAND 中烧写调试起来非常方便:

setenv bootcmd ‘tftp 80800000 zImage; tftp 83800000 imx6ul_topeet_nand.dtb; bootz 80800000 –

83800000’

保存环境变量 saveenv,

zImage 为内核镜像,下载到首地址为 0x80800000 的内存空间;

topeet_emmc_1024x600.dtb 为设备树,根据实际屏幕型号烧写设备树

bootz 根据内核镜像地址和设备树地址加载启动,注意“ – ”左右有空格

注意:目前完全支持 eMMC 版本,可正常开机自启动,NAND 开发板如果使用 tftp 传输内核和设备树

每次开机都要重新输入此命令。

设置网络启动参数(启动文件系统):

setenv bootargs ‘console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.1.12:/home/ubuntu/nfs_rootfs

ip=192.168.1.120:192.168.1.12:192.168.1.1:255.255.255.0::eth0:off’

nfsroot 后的参数为 PC 端的 nfs 文件夹路径,读者根据自己需要配置,格式为:

nfsroot=NFS 服务器 IP(Ubuntu 的 IP):文件系统的绝对路径。

ip 后的参数为开发板网络信息,填写格式:

ip=开发板 IP:服务器 IP:网关,子网掩码::eth0:off

注意空格,字母和标点符号都是英文。

6e92fcdf3a2b266b7eab183a0acd9ecd.png

图 79.4.1

保存:saveenv

输入“boot”启动,自动进入网络系统。

打印出下载内核设备树信息:

3b83d111c3a99f2bdb2b5655ce1a2447.png

图 79.4.2

启动文件系统会显示出挂载 NFS 文件系统信息:

4714ee09a8a12bd31ec25b4908fd84ea.png

图 79.4.3

成功后输入用户名 root ,密码 topeet ,进入系统,在 Ubuntu 的 nfs_rootfs 创建文件 sss,开发板

上也会有相应的文件如图 79.4.4:

6310f5f94540846c32c4fd4ba426ea22.png

图 79.4.4

9e91174bcb72d44084f9f365159301f1.png

图 79.4.5

可能出现的错误:

8847a0e2a1dbf756a2861e1b96137a55.png

图 79.4.6

出现这种错就是文件系统没挂载成功,最大可能是 netargs 参数输错了,检查 bootargs 命令,检查 Ubuntu

配置文件,重启 NFS。

如果开发板连得 PC 机可以在 windows 上找到虚拟机用的网卡,设置为为百兆全双工。

baf9864d1fdc721ce9e5e12fb7cee1bb.png

图 79.4.7

右击以太网图标,点击配置,找到 高级下的连接速度和双工模式,选择 100Mbps 全双工。

4cce447ff1b16703462368fce4fdc796.png

图 79.4.8

使用 prientenv 查看环境变量,如图 79.4.9:

bd5c49cde3cbd24effa6c4d224b5e8c8.png

63267afd14e4873cb213d2a5ab9ec93d.png

图 79.4.9

如果环境变量不知道哪错了可以重置环境变量,重置环境变量命令:

env default -a返回搜狐,查看更多

责任编辑: