U-boot笔记.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
U-BOOT笔记(tegra 2) 1.内存分布图: CONFIG_SYS_INIT_RAM_ADDR gd_t gd GENERATED_GBL_DATA_SIZE 对齐到8边界 对齐15边界后可能多余的部分 leave 3 words for abort-stack (12Byte) 对齐到8边界 CONFIG_USE_IRQ (8KB) gd_t Global Data gd-irq_sp bd_t Board Info gd-bd TOTAL_MALLOC_LEN (4MB) U-Boot code 对齐到4KB边界 CONFIG_LCD (根据屏幕分辨率来分配) 液晶显示器 对齐到4KB边界 gd-fb_base CONFIG_VFD (7KB) 真空荧光显示器gd-fb_base TLB table (16KB) 对齐到64KB边界 gd-tlb_addr CONFIG_PRAM (512KB) LOGBUFF_RESERVE (20KB) CONFIG_SYS_MEM_TOP_HIDE (1MB) | | | | | | | | | | 0 40MB gd 44MB addr_sp id addr ram size sp gd-start_addr_sp gd-relocaddr |----- CONFIG_PRELOADER ----| 2. void relocate_code (addr_sp, gd, addr_moni)分析: 函数调用如下: relocate_code (addr_sp, id, addr); 重定位知识: 重定位条目1)?它会包含一个符号表中一个条目的索引,因为这样我们才知道它具体是哪个符号需要被重定位的; 2)?它会包含一个 .text section 中的地址单元的偏移值。原本这个偏移值处的地址单元里面应该存放着 call 指令的操作数。对上面来说,也就是函数 sum_func 的地址,但是目前这个地址汇编器还不知道。 3)?它还会包含一个tag,以指明该重定位属于何种类型。 结构中r_offset 对于可重定位文件来说,就是地址单元的偏移值(面的b条);另外对可执行文件或者动态库来说,就是该地址单元的运行时地址。面a条中的符号表内索引和c条中的类型,一起构成了结构中的字段 r_info。符号表(.symtab)a)?在可重定位文件中,如果该符号对应的section index(上面的Ndx)为SHN_COMMON,那么符号的值表示的是该数据的对齐要求,比方上面的变量ch 。 b)?在可重定位文件中,除去上面那条a中定义的符号,对于其他的符号来说,其值表示的是对应section内的偏移值。比方gv_inited变量定义在.data section 的最前面,所以其值为0。 c)?在可执行文件或者动态库中,符号的值表示的是运行时的内存地址。 sh_type == SHT_REL) 由于烧写到Flash中的是bin文件格式,所以相对elf文件来说,它只包含纯的汇编部分的代码,也就是说他不包含elf中节的辅助数据结构部分(节头数据结构)和运行中用不到的节部分。 BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像_start到_bss_start_ofs之间的代码到分配给U-Boot code用的内存地址中 对代码进行重定位操作 计算U-Boot code运行地址和加载地址的偏移量(供重定位用),delta = 运行内存地址 - _TEXT_BASE 获取.dynsym节数据的的加载地址 = _rel_dyn_start_ofs

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档