uboot相关知识点汇总(持续更新中)

 

1. uboot编译完成后生产的uboot,uboot.bin,uboot.map,uboot.srec分别是什么?

 

U-BOOT elf格式的image
U-BOOT.bin
原始二进制文件(raw image)
U-BOOT.MAP
符号表
U-BOOT.SREC S-Record
格式的image

 

 

 

2.u-boot.map是如何生成的

  

LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS)
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds

cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
  --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
 
 -Map u-boot.map -o u-boot

所以可以看出u-boot.map是ld链接的时候加-Map生成的

 

3.  为什么uboot所运行在的目标机可以ping通PC机,但PC机是ping不通uboot所在的目标机?

 

原因是uboot是单线程运行,只有在运行ping命令时才会启动报文接受的机制。

 

 

4. 关于uboot引导的内核是为什么是uImage镜像,而不能是zImge镜像

 

 

在开发中,需要使用uboot的mkimage工具把zImage转换成uImae(转换的过程就是在zImage头部添加64字节的头部) ,转换的原因是uboot在调用函数do_bootm引导内核的时候会首先解析这个64字节内容。所以换个角度,如果修改函数do_bootm,跳过64字节头部解析,uboot也是可以启动zImage的。

 

 

 

5.关于使用mkimage制作uImage时的–a –e参数问题

 

1-a参数后是内核的运行地址,-e参数后是入口地址

2

  • -a参数与-e参数相同,可以将内核下载到SDRAM的任何地址,然后从这启动
  • -a参数与-e参数不同,只能将内核下载到-a参数后面的地址,然后从这启动;否则无法引导内核
  • -a参数与-e参数不同,下载地址和-a参数后面的地址不同(无法引导)
  • 覆盖了U-Boot传给内核的参数,会导致这样情形(无法引导)

 

 


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值