• 迅为iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动


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

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

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

    文档中使用的开发环境:

    Ubuntu16.04 LTS

    迅为 i.MX6ULL 终结者开发板

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

     

    图 79.1

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

    统镜像2_Buildroot 文件系统 ootfs.tar.bz2。

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

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

     

    79.1 配置开发板网络

    网线连接口如图 79.1.1:

     

    图 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:

     

    图 79.1.2

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

     

    图 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

     

    图 79.2.1

    5. 启动:sudo service tftpd-hpa restart

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

     

    图 79.2.2

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

     

    图 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

    所示:

     

    图 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:

     

    图 79.3.2

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

    5.

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

     

    图 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

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

     

    图 79.4.1

    保存:saveenv

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

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

     

    图 79.4.2

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

     

    图 79.4.3

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

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

     

    图 79.4.4

     

    图 79.4.5

    可能出现的错误:

     

    图 79.4.6

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

    配置文件,重启 NFS。

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

     

    图 79.4.7

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

     

    图 79.4.8

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

     

    图 79.4.9

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

    env default -a

  • 相关阅读:
    redis 基本类型命令
    吴寿仁 学术
    吴寿仁:上海科技成果转化40年
    从“四技”服务的收益中提取奖酬金是否不受当年本单位工资总额限制、不纳入本单位工资
    高校科技成果转化为什么就这样的难
    高校成果转换
    中华人民共和国 促进科技成果转化法
    上海市促进科技成果转化条例
    项目管理
    欧几里得方法计算最大公约数Python版本
  • 原文地址:https://www.cnblogs.com/topeet/p/14485918.html
Copyright © 2020-2023  润新知