Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173139
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 451
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 09:10
文章分类
文章存档

2016年(43)

我的朋友

分类: 嵌入式

2016-05-27 17:16:58

 

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.mapld链接的时候加-Map生成的

 

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

 

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

 

 

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


 

在开发中,需要使用ubootmkimage工具把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传给内核的参数,会导致这样情形(无法引导)

 

 
6.关于uboot的链接地址和位置无关代码
    因为-Ttext $(TEXT_BASE)命令的使用,链接器把UBOOT从地址0x3ff80000开始连接,在第一阶段中,所有使用的目标地址寻址都是使用当前PC值加减偏移量的方法,所以把UBOOT烧写到0地址开始的FLASH中,不影响第一阶段的正确执行。


阅读(1361) | 评论(0) | 转发(0) |
0

上一篇:busybox原理

下一篇:boot新增命令方法

给主人留下些什么吧!~~