【3】-Uboot入门

ARM-UBoot入门

以TQ210为例

1.配置UBoot

查看Uboot中的Makefile可知配置TQ210 Uboot的命令为make TQ210_config

2.编译Uboot

make ARCH=arm CROSS_COMPILE=arm-linux-

ARCH=arm:表示选用的架构为arm;

CROSS_COMPILE:表示使用的是交叉工具链arm-linux-

3.Uboot的烧写

通过SD卡中的Uboot启动后,将欲安装的Uboot下载到内存中,之后Uboot的安装辅助程序会将其从内存搬移到nandflash中去,以此来完成烧写。

4.Uboot命令(可配置)详解

l :帮助命令

help:查看当前单板所支持的命令

l :环境变量相关命令

printenv/print:查看环境变量,print+欲查看的环境变量,可以选择性地查看

setenv:添加、修改、删除环境变量

Notice:未使用的saveenv,则改动的环境变量处于内存,无法保存

a)添加,修改:  setenv  <name>  <value>

b)删除:   setenv <name>

saveenv:保存环境变量,将当前定义的所有变量及其值存入flash中

l :程序下载命令

tftp 目标地址 下载源:通过网络下载文件

若没有安装tftp的可以通过yum -y install tftp/tftp-server/xinetd来安装,安装完后,通过修改/etc/xinetd.d/tftp中的disable=no来启动tftp,之后重启tftp服务,/etc/init.d/xinetd restart,可以通过netstat -a | grep tftp来看到此时tftp已经启动了。

l :执行程序

bootm {addr} {arg}:执行固定格式的2进制程序,从addr地址处开始执行,arg是参数

l :查看内存内容

md:显示内存区的内容,采用十六进制或者ASCII码两种形式来显示存储单元的内容,还可以用长度标识符.l,.w,.b;md[.b, .w, .l] address

mm:修改内存,地址自动递增;mm[.b, .w, .l] address;如果想结束输入只需要键入空格之后回车即可

擦除nandflash

nand erase 起始地址start  长度len:从start开始擦除len长度的区域

读/写nandflash

nand write/read 内存起始地址  flash起始地址  长度len 

l 设置自启动

设置从nand flash自动启动:

setenv bootcmd nand read c0008000 400000 500000 \; bootm c0008000

设置自动下载内核到内存后启动

setenv bootcmd tftp c0008000 uImage.bin \; bootm c0008000

Tips:

1. 交叉网线和直连网线的不同在于其接收和发送的的引脚的不同,若网线相连的两个设备之间的RJ45端口引脚的定义是一致的话,则使用交叉线,反之使用直连线。一般笔记本等的网卡都会对RJ45端口引脚进行自动交叉,故可直接使用直连线。

2. Ping的工作流程:Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议(TCP/IP下的一个子协议)将这个数据包连同地址一起交给IP层协议,IP层协议将以该地址作为目的地址,本机的IP地址作为源地址,加上一些控制信息,构建一个IP数据包,并通过ARP协议获取到目标主机的MAC地址,之后在IP层上获取到目标机的MAC地址后,将其加入到ICMP请求数据包中,一并发送到数据链路层,通过以太网协议将其发送出去,目标机收到该数据帧后,先检查MAC地址是否相符,若相符则将IP数据从帧中获取出来,提交到IP层,IP层提取出有用的信息交给ICMP协议,经过处理后,构建一个ICMP应答包,发送给源地址。

3. 在开发板只有Uboot的情况下,PC机是不能ping通开发板的,因为Uboot中并没有监听ICMP数据包的进程,故不会对此作出中断反应。

4. 用uboot下载bootloader或程序时,uboot中的安装引导程序会进行一个代码搬移的动作将通过此方式下载的代码搬移到nandflash中,但是通过uboot下载内核的时候,uboot代码中并没有进行一个代码搬移的动作,需要我们自己完成(bootcmd等)

遇到的问题:

1. 用网线将开发板和PC机直接相连,在将PC机上的ip地址和虚拟机上的ip地址都指定为同一网段,并将开发板的ip也设为同一网段后并将其中的serverip设置为虚拟机上的ip后,通过将虚拟机的网络连接方式改为桥接,桥接到PCIe网卡上,结果pc和虚拟机,开发板和虚拟机,开发板和pc机都无法正常通信。

原因:不解,有可能是交叉线的问题,但是为什么虚拟机和主机也ping不通?不解;知道为什么的麻烦告知下。

解决方法:将开发板和pc机间用一个路由/(三层交换机)来进行连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值