当前位置: 首页 > wzjs >正文

湛江seo建站赣州网站建设公司

湛江seo建站,赣州网站建设公司,深圳网络营销网站,虚拟主机做视频网站可以吗bl31.ld.S分析 通过链接脚本 bl31.ld.S,可得知整个镜像的内存布局: 镜像起始运行地址- BL31_BASE;镜像入口函数-bl31_entrypoint(); 前言 芯片所有的软硬件资源都能够在 NXP 官网找到,本文档也是对 NXP 开源 LSDK …

bl31.ld.S分析

通过链接脚本 bl31.ld.S,可得知整个镜像的内存布局:

  • 镜像起始运行地址- BL31_BASE
  • 镜像入口函数-bl31_entrypoint()

前言

芯片所有的软硬件资源都能够在 NXP 官网找到,本文档也是对 NXP 开源 LSDK 代码工程的学习与分析。
官网链接如下:
LSDK 软件资料
LX2160 芯片资料

1.链接脚本生成流程

通读 atf 工程 makefile 框架后得知,链接脚本通过 MAKE_BL 宏函数生成,简化后如下:

define MAKE_BL# 省略$(eval DEFAULT_LINKER_SCRIPT_SOURCE := $($(call uppercase,$(1))_DEFAULT_LINKER_SCRIPT_SOURCE))$(eval DEFAULT_LINKER_SCRIPT := $(call linker_script_path,$(DEFAULT_LINKER_SCRIPT_SOURCE)))# BL2 与 BL31 只使用了默认链接脚本,下面的变量为自定义变量,指向自定义连接脚本$(eval LINKER_SCRIPT_SOURCES := $($(call uppercase,$(1))_LINKER_SCRIPT_SOURCES))$(eval LINKER_SCRIPTS := $(call linker_script_path,$(LINKER_SCRIPT_SOURCES)))# 省略# Generate targets to preprocess each required linker script
# 生成链接脚本 ld 文件
$(eval $(foreach source,$(DEFAULT_LINKER_SCRIPT_SOURCE) $(LINKER_SCRIPT_SOURCES), \$(call MAKE_LD,$(call linker_script_path,$(source)),$(source),$(1))))# 省略endef

链接脚本通过下述命令生成:

$(eval $(call MAKE_LD,$(LINKERFILE),$(BL_LINKERFILE),$(1)))

其中:

  • $(1))_DEFAULT_LINKER_SCRIPT_SOURCEbl31/bl31.ld.S
  • 生成链接脚本文件为: release/bl31/bl31.ld. (bl2.ld 文件生成的代码同理)

2.bl31.ld 分析

bl31.ld 与 bl31.ld.S 的区别是使用了 gcc 编译器对一些宏进行扩展,让整个内存布局地址更明确, 通过生成的 bl31.ld, 我们可以更明确的知道地址分配,源码如下:

OUTPUT_FORMAT("elf64-littleaarch64")
OUTPUT_ARCH(aarch64)
ENTRY(bl31_entrypoint)
MEMORY {RAM (rwx): ORIGIN = (0x80000000 + 0x80000000 - ((64 * 1024 * 1024) + (2 * 1024 * 1024))), LENGTH = ((0x80000000 + 0x80000000 - ((64 * 1024 * 1024) + (2 * 1024 * 1024))) + (0x200000)) - (0x80000000 + 0x80000000 - ((64 * 1024 * 1024) + (2 * 1024 * 1024)))
}
SECTIONS {RAM_REGION_START = ORIGIN(RAM);RAM_REGION_LENGTH = LENGTH(RAM);. = (0x80000000 + 0x80000000 - ((64 * 1024 * 1024) + (2 * 1024 * 1024)));ASSERT(. == ALIGN(((1) << (12))),"BL31_BASE address is not aligned on a page boundary.")__BL31_START__ = .;.text . : {__TEXT_START__ = .;*bl31_entrypoint.o(.text*)*(SORT_BY_ALIGNMENT(SORT(.text*)))*(.vectors)__TEXT_END_UNALIGNED__ = .;. = ALIGN(((1) << (12)));__TEXT_END__ = .;} >RAM.rodata . : {__RODATA_START__ = .;*(SORT_BY_ALIGNMENT(.rodata*)). = ALIGN(8); __RT_SVC_DESCS_START__ = .; KEEP(*(.rt_svc_descs)) __RT_SVC_DESCS_END__ = .; . = ALIGN(8); __FCONF_POPULATOR_START__ = .; KEEP(*(.fconf_populator)) __FCONF_POPULATOR_END__ = .; . = ALIGN(8); __PMF_SVC_DESCS_START__ = .; KEEP(*(.pmf_svc_descs)) __PMF_SVC_DESCS_END__ = .; . = ALIGN(8); __PARSER_LIB_DESCS_START__ = .; KEEP(*(.img_parser_lib_descs)) __PARSER_LIB_DESCS_END__ = .; . = ALIGN(8); __CPU_OPS_START__ = .; KEEP(*(.cpu_ops)) __CPU_OPS_END__ = .; . = ALIGN(8); __GOT_START__ = .; *(.got) __GOT_END__ = .;. = ALIGN(8);
__pubsub_psci_cpu_on_finish_start = .; KEEP(*(.__pubsub_psci_cpu_on_finish)); __pubsub_psci_cpu_on_finish_end = .;
__pubsub_psci_suspend_pwrdown_start_start = .; KEEP(*(.__pubsub_psci_suspend_pwrdown_start)); __pubsub_psci_suspend_pwrdown_start_end = .;
__pubsub_psci_suspend_pwrdown_finish_start = .; KEEP(*(.__pubsub_psci_suspend_pwrdown_finish)); __pubsub_psci_suspend_pwrdown_finish_end = .;
__pubsub_cm_entering_secure_world_start = .; KEEP(*(.__pubsub_cm_entering_secure_world)); __pubsub_cm_entering_secure_world_end = .;
__pubsub_cm_exited_secure_world_start = .; KEEP(*(.__pubsub_cm_exited_secure_world)); __pubsub_cm_exited_secure_world_end = .;
__pubsub_cm_entering_normal_world_start = .; KEEP(*(.__pubsub_cm_entering_normal_world)); __pubsub_cm_entering_normal_world_end = .;
__pubsub_cm_exited_normal_world_start = .; KEEP(*(.__pubsub_cm_exited_normal_world)); __pubsub_cm_exited_normal_world_end = .;__RODATA_END_UNALIGNED__ = .;. = ALIGN(((1) << (12)));__RODATA_END__ = .;} >RAMASSERT(__CPU_OPS_END__ > __CPU_OPS_START__,"cpu_ops not defined for this platform.")__RW_START__ = . ;.data . : ALIGN(1) { __DATA_START__ = .; *(SORT_BY_ALIGNMENT(.data*)) __DATA_END__ = .; } >RAM.rela.dyn : ALIGN(8) { __RELA_START__ = .; *(.rela*) __RELA_END__ = .; } >RAM.stacks (NOLOAD) : { __STACKS_START__ = .; *(.tzfw_normal_stacks) __STACKS_END__ = .; } >RAM.bss (NOLOAD) : ALIGN(16) { __BSS_START__ = .; *(SORT_BY_ALIGNMENT(.bss*)) *(COMMON) . = ALIGN(64); __BAKERY_LOCK_START__ = .; __PERCPU_BAKERY_LOCK_START__ = .; *(.bakery_lock) . = ALIGN(64); __PERCPU_BAKERY_LOCK_END__ = .; __PERCPU_BAKERY_LOCK_SIZE__ = ABSOLUTE(__PERCPU_BAKERY_LOCK_END__ - __PERCPU_BAKERY_LOCK_START__); . = . + (__PERCPU_BAKERY_LOCK_SIZE__ * (8 * 2 - 1)); __BAKERY_LOCK_END__ = .; ASSERT((__PERCPU_BAKERY_LOCK_SIZE__ == 0) || (__PERCPU_BAKERY_LOCK_SIZE__ == (1 * 64)), "PLAT_PERCPU_BAKERY_LOCK_SIZE does not match bakery lock requirements"); . = ALIGN(64); __PMF_TIMESTAMP_START__ = .; KEEP(*(.pmf_timestamp_array)) . = ALIGN(64); __PMF_PERCPU_TIMESTAMP_END__ = .; __PERCPU_TIMESTAMP_SIZE__ = ABSOLUTE(. - __PMF_TIMESTAMP_START__); . = . + (__PERCPU_TIMESTAMP_SIZE__ * (8 * 2 - 1)); __PMF_TIMESTAMP_END__ = .; . = ALIGN(16); __BASE_XLAT_TABLE_START__ = .; *(.base_xlat_table) __BASE_XLAT_TABLE_END__ = .; __BSS_END__ = .; } >RAM.xlat_table (NOLOAD) : { __XLAT_TABLE_START__ = .; *(.xlat_table) __XLAT_TABLE_END__ = .; } >RAM__RW_END__ = .;__BL31_END__ = .;ASSERT(. <= ((0x80000000 + 0x80000000 - ((64 * 1024 * 1024) + (2 * 1024 * 1024))) + (0x200000)), "BL31 image has exceeded its limit.")RAM_REGION_END = .;/DISCARD/ : {*(.dynsym .dynstr .hash .gnu.hash)}
}

编译过程中,会生成bl31.map 文件,结合 map 文件,可以更明确的知道段分配,每一个段内的成员地址,链接脚本定义的段变量地址。
生成的链接脚本请自行阅读。

http://www.dtcms.com/wzjs/117468.html

相关文章:

  • 南昌做网站费用百度云搜索引擎入口官网
  • 免费做h5的网站百度旗下所有app列表
  • 郑州网站制作哪家便宜网站优化seo培
  • 锐速做网站个人怎么做免费百度推广
  • 校园网站建设的意见与建议百度知道下载安装
  • 深圳网站建设软件开发手机网站建设案例
  • 网站备案 营业执照副本流量神器
  • 论坛网站建设多少钱软文营销怎么做
  • 网站建设费属于什么税目网络营销效果评估
  • 现在没人做网站了百度seo系统
  • 做外贸网站平台百度软件下载
  • 上海网站制作网南宁seo渠道哪家好
  • wordpress建产品目录班级优化大师免费下载学生版
  • 肇庆市专注网站建设平台网络推广工作室
  • 建设网站费用记入什么科目西安网约车平台
  • 网站开发脚本语言网络营销专业毕业论文
  • 复制审查元素做网站优化搜索点击次数的方法
  • 做汽车租赁主要的网站上海百度推广客服电话
  • 做网站推荐关键词排名优化易下拉技术
  • 做一个像美团的网站需要多少钱简单网站建设优化推广
  • 蒙自网站建设购物网站页面设计
  • 防城港网站制作六六seo基础运营第三讲
  • 怎么查看一个网站的浏览量苏州网站建设公司
  • 论述市场营销对网站设计的影响nba交易最新消息汇总
  • 建设银行官网网站首页纪念币预约太原seo团队
  • 网站流量统计代码可以用javascript实现么百度人工服务热线24小时
  • 北京形势紧张无锡seo网站排名
  • 自己做的网站转成二维码发软文的平台
  • 门户网站建设平台佛山百度网站快速排名
  • 做网站的收获及感想免费发布产品信息的网站