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是可以上传文件的参数
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
版权声明:本文为qq_40860568原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。