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,并将光盘 “Shell\Linux-3.14.43-mksdboot\filesystem”目录下的开发板文件系统压缩包解压到此文件夹,解压命令如下:

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。

 

posted on 2019-05-06 16:00  lh03061238  阅读(455)  评论(0编辑  收藏  举报

导航