zoukankan      html  css  js  c++  java
  • TFTP启动内核、设备树,NFS启动FS

    一、软硬件平台

    1、开发板:创龙AM3359核心板,网口采用RMII形式。

    2、UBOOT版本:U-Boot-2016.05,采用FDT和DM。

    3、交换芯片MARVELL的88E6321.

    二、问题背景

    开发板启动过程分三个阶段,即先启动U-Boot,再加载内核和设备树,然后挂载文件系统,这三个过程可以分别以不同方式启动。除了从SD系统启动卡启动开发板,我们可以将U-Boot镜像文件、内核镜像文件、设备树镜像文件以及文件系统固化到开发板的eMMC或者NAND FLASH中,然后从eMMC或者NAND FLASH启动开发板。

    这里可以选择从SD卡启动U-Boot,然后通过TFTP加载内核和设备树,再通过NFS挂载文件系统。

    将开发板设备树文件和内核镜像文件拷贝到Ubuntu的TFTP服务器工作目录中。

    在Ubuntu的NFS共享目录下,新建开发板文件系统存放文件夹rootfs,并将光盘 “ShellLinux-3.14.43-mksdbootfilesystem”目录下的开发板文件系统压缩包解压到此文件夹,解压命令如下:

    Host# sudo tar xvf tisdk-rootfs-image-am437x-evm.tar.gz -C /home/one/nfs_share/rootfs

    恢复为默认的环境变量,在命令行下输入:

    U-Boot> env default -a

    U-Boot> saveenv

     

    n 手动设置开发板IP方式

    开发板和 PC 先通过路由器或者交换机互联,也可以通过网线直联。先确保U-Boot环境变量为系统默认,然后在U-Boot命令行中执行如下命令,设置TFTP和NFS服务器IP、NFS服务器上的文件系统路径、开发板IP:

    U-Boot> setenv serverip 192.168.1.50

    U-Boot> setenv rootpath /home/one/nfs_share/rootfs/

    U-Boot> setenv ipaddr 192.168.1.30

    执行如下命令设置网络启动环境变量:

    U-Boot> setenv netargs 'setenv bootargs console=${console} root=/dev/nfs nfsroot=${serverip}:${rootpath} nfsaddrs=192.168.1.30:192.168.1.50:192.168.1.1:255.255.255.0::eth0:off'

    U-Boot> setenv netboot 'echo Booting from network ...; setenv autoload no; tftp ${loadaddr} ${bootfile}; tftp ${fdtaddr} ${fdtfile}; run netargs; bootz ${loadaddr} - ${fdtaddr}'

    U-Boot> setenv bootcmd 'run findfdt; run init_console; run netboot;'

    U-Boot> saveenv

    环境变量console、nfsroot、nfsaddr会传递到内核,nfsaddrs=开发板IP:NFS服务器IP:网关:子网掩码,环境变量serverip、ipaddr仅用于U-Boot阶段,因此需要在nfsaddrs中再次设置开发板IP和NFS服务器IP。“eth0:off”代表开发板不自动获取IP。

  • 相关阅读:
    【核心算法1】双指针问题
    关于博客园主题
    正交工具allpairs使用
    postman设置变量
    WebDriver驱动下载地址
    MySQL语法基础
    异或
    测试——pytest库上手
    and 和 or 的语句运算
    爬虫——Scrapy中选择器的基本使用(转)
  • 原文地址:https://www.cnblogs.com/lh03061238/p/10820160.html
Copyright © 2011-2022 走看看