(3)在栈顶设置一个canary值,用于检测栈溢出 3 bl_setup流程分析 3.1 bl1_early_platform_setup函数 以qemu平台的实现为例,其代码如下: void bl1_early_platform_setup(void) { qemu_console_init(); (1) bl1_tzram_layout.total_base = BL_RAM_BASE; (2) bl1_tzram_layout.total_size = BL_RAM_SIZE...
el3_entrypoint_common 实现 bl_setup 实现 bl1_main 实现 el3_exit 实现 参考链接 主要makefile: bl1/bl1.mk 主要link script: bl1/bl1.ld.S bl1_entrypoint //bl1/aarch64/bl1_entrypoint.S el3_entrypoint_common bl bl1_setup bl1_early_platform_setup qemu_console_init QEMU_CONFIGURE_BL1_MMU bl bl...
(1)bl1_early_platform_setup 以arm 平台实现为例,实现代码和梳理如下,平台完成的工作包括: 使能watchdog、控制台初始化、设置secure SRAM内存的地址范围 初始化外围设备 使能外围设备,配置多个CPU核的内部通信,保证主CPU集群的互联一致性 voidarm_bl1_early_platform_setup(void){#if!ARM_DISABLE_TRUSTED_WDOG/* ...
secondary cpu的处理将非主cpu设置为安全状态,待主cpu启动完成后再通过特定方式启动。内存初始化执行平台相关的初始化函数。c运行环境初始化设置数据段和栈,将bl1镜像中的可写数据段从rom重定位到ram。运行栈设置设置运行时栈指针,准备跳转到c语言执行。bl_setup流程分析涉及bl1_early_platform_setup和...
COLD_BOOT_SINGLE_CPU_init_memory=1_init_c_runtime=1_exception_vectors=bl1_exceptionsbl bl1_early_platform_setup //调用bl1_early_platform_setup函数完成底层初始化bl bl1_plat_arch_setup //调用bl1_plat_arch_setup完成平台初始化bl bl1_main //调用bl1_main函数,初始化验证模块,加载下一阶段的image...
definitions may be overridden in specific ARM standard platform */ 25 23 #pragma weakbl1_early_platform_setup 26 24 #pragmaweak bl1_plat_arch_setup plat/arm/css/sgi/sgi_platc -1 Original fileline numberDiff line number line change @@ -17,7 +,6 @@17 17 #include <...
然后汇编继续执行就会通过跳转指令bl bl1_setup执行到bl1_setup函数,从这开始就离开汇编来到了C语言部分 这部分我之前有整理过,我就直接贴图了,更直观一些,函数位于bl1_main.c文件中,首先是执行bl1_early_platform_setp,platform就是平台相关的代码,你可以在整个工程或者代码目录多次看到这个platform,这个意思就是每...