回顾知识
开发板是s5pv210开发板,烧录的bootloader是随机资料里面的qt4.8里面的u-boot.bin
简单回忆一下如何烧写BootLoader、kernel、system
(开发板与电脑通信连接好就不说了,我这板子要连Uart2串口)
1.打开scureCRT,开发板通电后在倒数秒数过之前回车进入uboot
2.(命令1)输入fastboot进入fastboot
3.在windows的cmd下进入fastboot
fastboot flash BootLoader +路径
fastboot flash kernel +路径
fastboot flash system +路径
4.全部搞定之后最后fastboot reboot重启
uboot中的命令介绍
常用命令1:print/printenv
常用命令2:set/setenv
常用命令3:tftp
- print/printenv
顾名思义 print environment
把所有环境参数都打印出来,当然想知道具体用法的话可以help +printenv来查看
- set/setenv
举一反三,设置环境参数。
一般都是setenv + environment name + value
具体用法也可以help+set来查看
如果想set完后保存的话要用一次save,如果只是调试用下次不保留的话可以不save。
配置tftp服务器
- tftp
以下的一段文字都是复制粘贴而来的_(:з」∠)_(因为总结得太精辟)[1]
tftp服务器最简单安装配置
1.安装tftp-server
sudo apt-get install tftpd-hpa
sudo apt-get install tftp-hpa(如果不需要客户端可以不安装)
tftp-hpa是客户端
tftpd-hpa是服务器端
2.配置TFTP服务器
sudo vim /etc/default/tftpd-hpa
将原来的内容改为:
TFTP_USERNAME=“tftp”
TFTP_ADDRESS=“0.0.0.0:69”
TFTP_DIRECTORY=“tftp根目录” #服务器目录,需要设置权限为777,chomd 777
TFTP_OPTIONS="-l -c -s"
3.重新启动TFTP服务
sudo service tftpd-hpa restart
注意,我自己设置的时候是这样的
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/mnt/hgfs/vmsd/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
主要是自己设置tftp的directory----- TFTP_DIRECTORY,就是要uboot从哪里读东西到你的开发板上。
tftp和fastboot功能都差不多,都是把东西搬运到板子上,fastboot上面也讲过了这里不多述
互ping
配置方法
1.虚拟机要设置成桥接模式,桥接模式的原因是让开发板认为你的虚拟机也是一个独立的系统,就可以一起ping了
设置:vmware里面-编辑-虚拟网络编辑器-桥接模式要选有线网卡,虚拟机设置里面的网络适配器也要选桥接模式。
2.用ifconfig命令在开发板的linux系统或者虚拟机里面的linux系统可以查看当前IP地址(inet addr = xxx.xxx.xxx.xxx)。
3.ifconfig -a 可以查看当前网卡的属性,在我Ubuntu中看到的我的网卡名是ens33,不同的机子应该不一样吧。
4.ifconfig ens33 192.168.3.123,就这样设置ip地址,然后重启虚拟机,这样就可以更新虚拟机的ip地址了
5.想要ping得通,网段设置一定要一样,例如全部都要192.168.3.xxx,子网掩码要255.255.255.0
6.不好搞混了uboot和linux下的ping,两者是不一样的。uboot能ping主机,显示xxxx is alive(忘了),并不代表主机能ping通uboot。想要主机ping得通uboot的话,uboot里面需要有一个ARP(address resolution process 地址解析协议)才能通[2],同理,在linux和uboot之间也一样。
7.在linux下/etc/network/interfaces里面加上
auto ens33
iface ens33 inet static
address 192.168.88.188
netmask 255.255.255.0
这样就可以自动设置好IP地址了,设置成静态的,ens33是我的网卡名。记得设置好要ifconfig -a看看更改没有,如果还是一样就要重启虚拟机。
开发板linux系统下与虚拟机ping通
在开发板上
先等倒计时过了之后,uboot启动内核,然后进入linux系统。
进入之后
ifconfig 这是会会看到网卡网卡名是eth0或者其他,看你系统more配置。
观察里面的inet addr 默认是127.0.0.0的
然后在命令行里面设置:
ifconfig eth0 192.168.88.178 这个地址看个人喜好,我设置网段是88的。
在ubuntu上
ifconfig -a
看到我的网卡名是ens33,如果在后面没找到inet = xxx.xxx.xxx.xxx,则回去上面配置第7步,设置好静态ip地址
重启后看到inet = 192.168.88.188
此时在ubuntu或者在开发板的linux上互相ping对方的ip地址都能ping通了。同时ping也无所谓。
开发板的uboot去ping虚拟机里面的ubuntu
记得是uboot去ping系统,不是系统ping uboot。
在配置里面讲过,uboot里面没有ARP地址解析协议,所以系统ping不通uboot,但是系统有ARP,所以uboot能ping系统。
重启开发板,在倒计时结束之前进入uboot
利用开头讲过的uboot中的命令介绍
set ipaddr 192.168.88.125
通过print可以看到更新了的ipaddr
然后直接ping 192.168.88.188
显示host 192.168.88.188 is alive 则uboot去ping系统成功。
ping通有什么用
用tftp的方法,可以在uboot环境下,向服务器(我们的pc机)下载镜像。
首先,要设置好tftp服务器的ip地址,还要配置好tftp服务器,看上面。
在uboot中
print 查看uboot的环境变量
把serverip设置为服务器的ip
set serverip 192.168.88.188
检查ubuntu里面,tftp服务器文件夹 directory里面放好了你的镜像zImage-qt
回到uboot
tftp 0x30008000 zImage-qt
然后loading会出现一堆##############################################
最后显示done证明下载完
注意
按道理下载到30008000,然后直接用就行了,但是如果直接bootm的话会启动到一半就重启了。
解决方法:
movi read kernel 30008000,通过movi命令把内核在ddr里面再移动到30008000,原地起飞也没所谓,反正经过这样的命令之后,bootm就能成功了。
bootm 30008000,然后就可以从30008000这个地址里面找到你的zImage并且启动镜像了。
参考博客:
[1]https://www.linuxidc.com/Linux/2013-07/87366.htm
[2]https://blog.csdn.net/ce123/article/details/7339134