您的位置:首页 > 其它

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

2015-10-01 10:43 483 查看
 

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传给内核的参数,会导致这样情形(无法引导)
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  u-boot