嵌入式(iMX6Q)TFTP加载 Linux 内核与设备树

ARM:iMX6Q PC Linux:虚拟机 VM15、Ubuntu14.04

1、使用 TFTP 加载 Kernel 、Device Tree 的目的

在每次启动时,使用 tftp 去加载内核与设备树,可以从SD卡、SPI Nor Flash等启动U-boot,然后通过网口去加载远程PC上的内核与设备树文件,存储在内存中,尤其是将U-boot 放在nor flash 里时,如果flash大小不够的话,使用这种方式完全可以满足Linux 启动需求。
如果同时需要使用远程挂载根文件系统的话,可以参考:https://blog.csdn.net/qq_40860568/article/details/100973652

2、在PC Linux 系统中搭建TFTP服务器

2.1 安装

sudo apt-get install tftp-hpa tftpd-hpa

2.2 建立传输目录

mkdir tftpboot                # 这是建立tftp传输目录。
sudo chmod 777 tftpboot
sudo touch test.txt           # test.c文件最好输入一些内容以便后面测试

2.3 配置

sudo vi /etc/default/tftpd-hpa

修改如下:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot" # 这里是你的tftpd-hpa服务的传输目录,这个想建立在哪里都行,输入你所建立的完整目录
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure -c" # 这里是选项,-c是可以上传文件的参数

嵌入式(iMX6Q)TFTP加载 Linux 内核与设备树_第1张图片
2.4 重启

  sudo service tftpd-hpa restart
  sudo /etc/init.d/xinetd reload
  sudo /etc/init.d/xinetd restart

2.5 测试

cd               #进入任意目录,但不要是tftpboot
tftp ipaddress   #ipaddress 表示本机ip地址
tftp>get test.c  #test.c 是之前在tftpboot目录下新建的文件,这时会讲此文件加载到所在文件夹
tftp>q           #退出tftp调试模式

3、ARM(客户端)访问服务器

首先设置服务器与客户端IP,将ARM与PC使用网线连接,同时虚拟机也要做一些配置,可参考:https://blog.csdn.net/qq_40860568/article/details/100973652

设置完成后,启动U-boot,进入命令行,配置环境变量:

setenv bootcmd "tftp 40008000 uImage; tftp 48000000 imx6q-b850v3.dtb; bootm 40008000 - 48000000"
saveenv

其中,uImage和imx6q-b850v3.dtb要放在服务器传输文件夹(tftpboot)中。
0x40008000是存放内核的首地址,0x48000000是存放设备树的首地址。

加载并启动Linux 内核与设备树

boot

你可能感兴趣的:(NFS,IMX6Q,Linux)