硬件环境是三星的s5pv210;
- tftp指令是uboot下的一个命令,uboot为了部署内核就需要将内核镜像从主机下载过来,然后烧录到本地flash中,uboot如何从主机(win或linux)下载镜像到开发板?有很多种方法。
主流方式是:fastboot和tftp
fastboot的方式是通过usb线进行数据传输,tftp的方式是通过有线网络的,典型方式是通过网络方式,fastboot是最近些年才新发展的。 - tftp方式下载时实际上uboot扮演的是tftp客户端程序角色,主机windows或虚拟机ubuntu中必须有一个tftp服务器,然后将要下载的镜像文件放在服务器的下载目录中,然后开发板中使用uboot的tftp命令下载即可。
- 有些人习惯在win中搭建tftp服务器,一般是用一些软件来搭建(譬如tftpd32使用起来比较简单),有些人习惯在linux下搭建,可以参考网盘中的虚拟机下载目录下一个教程《嵌入式开发板环境搭建-基于14.04.pdf》,这里有ubuntu中搭建tftp服务器的教程。
- 我的虚拟机搭建的时候设置的tftp下载目录是/tftpboot,将镜像放到此目录下。
- 检查开发板uboot的环境变量,注意serverIP必须设置为虚拟机ubuntu的IP地址。(这个serverIP环境变量的意义就在于主机tftp服务器的I P地址)
- 然后在开发板的uboot下,先ping通虚拟机的ubuntu,然后在尝试下载:
tftp 0x30000000 zImage 意思是将服务器上名为zImage 的文件下载到开发板内存(ddr)0x3000_0000地址处。
7.镜像下载到开发板的ddr中后,uboot就可以用movi指令进行镜像的烧写了。
注:注意网络的设置,
1) 在ubuntu中的vi /etc/network/interfaces中设置为iface eth0 inet static.
2) 然后在“虚拟机网络编辑器”中设置桥接模式到有线网卡上 面。
3) 然后重新启动虚拟机
这里开发板的ip设置为192.168.1.10,
windows下的ipv4设置是192.168.1.20
ubuntu环境下的ip是192.168.1.141
在uboot的shell下写入内核到内存中的命令为:
1)tftp 30008000 zImage
2)重启为 bootm 30008000
也可以将上面的两个命令添加到在uboot中的bootcmd命令中
如:bootm=tftp 30008000 zImage;bootm 30008000
#TFTP设置
setenv bootcmd tftp 30008000 zImage\;bootm 30008000
保存参数saveenv
这样就可以启动uboot是自动下载启动了。
内容来自朱老师网络大课堂