[ATF]ARMv8 cpu cold boot
2016-11-05 23:24
369 查看
本文软件分析使用arm-trust-firmwire v1.3版本。基于公开的fvp platform分析流程。
由于各个平台的cold boot流程有所差异。bl2所指的各有不同命名。
从bl2跳转后就进入了bl31, bl31的入口即bl31_entrypoint
reset to bl31=0,只有主cpu的cold boot会从bl31_entrypoint进来,所以在前面的引导启动流程里面应该已经设置了cpu endianness以及memory初始化。
reset to bl31=1,意味着大量的工作都在bl31的代码中完成,如下图片的分析在定义reset to bl31以及armv8的代码基础来画的流程。
cold boot 判断:
在reset to bl31定义后,意味着cold boot/warm boot都是从bl31_entrypoint进入,在v1.3的版本coold boot是确定的,在cold boot第一次起来后,cpu reset 后的warm boot跳转到warm boot的地址了。
Platform_mem_init :
这个mem init主要是指ddr相关的配置,这可以在这里完成也可以在bl2的代码完成。
Bl33_image_ep_info:
这个结构体保存的信息需要关注,从bl31到bl32/bl33的相关信息在这里面。
cold boot 需要重点配置的模块:
smc的接口初始化在cold boot里面完成。
* Boot Loader stage 1 (BL1) _AP Trusted ROM_ * Boot Loader stage 2 (BL2) _Trusted Boot Firmware_ * Boot Loader stage 3-1 (BL31) _EL3 Runtime Software_ * Boot Loader stage 3-2 (BL32) _Secure-EL1 Payload_ (optional) * Boot Loader stage 3-3 (BL33) _Non-trusted Firmware
由于各个平台的cold boot流程有所差异。bl2所指的各有不同命名。
从bl2跳转后就进入了bl31, bl31的入口即bl31_entrypoint
reset to bl31=0,只有主cpu的cold boot会从bl31_entrypoint进来,所以在前面的引导启动流程里面应该已经设置了cpu endianness以及memory初始化。
reset to bl31=1,意味着大量的工作都在bl31的代码中完成,如下图片的分析在定义reset to bl31以及armv8的代码基础来画的流程。
cold boot 判断:
在reset to bl31定义后,意味着cold boot/warm boot都是从bl31_entrypoint进入,在v1.3的版本coold boot是确定的,在cold boot第一次起来后,cpu reset 后的warm boot跳转到warm boot的地址了。
Platform_mem_init :
这个mem init主要是指ddr相关的配置,这可以在这里完成也可以在bl2的代码完成。
Bl33_image_ep_info:
这个结构体保存的信息需要关注,从bl31到bl32/bl33的相关信息在这里面。
cold boot 需要重点配置的模块:
cci>mmu>gic>security>timer>pmu。
smc的接口初始化在cold boot里面完成。
相关文章推荐
- [ATF]ARMv8 cpu warm boot (hotplug on)
- [ATF]ARMv8 cpu warm boot (cpu hotplug vs cpu resume)
- [ATF]ARMv8 psci cpu off api
- [ATF]ARMv8 psci cpu suspend api
- [ATF]ARMv8 psci bootup target cpu api
- uboot启动流程详解(4)-cpu_init_crit
- 〖Android〗(CM10.2)Android4.2/4.3中的boot.img打包方法(合适三星exynos4 CPU)
- Unable to boot – please use a kernel appropriate for your CPU.
- Lest We Remember: Cold Boot Attacks on Encryption Keys
- VMWare安装64位CentOS6.3出现Unable to boot - please use a kernel appropriate for your CPU.解决方法
- start_kernel——boot_cpu_init及PER_CPU
- VirtualBox安装虚拟机-Unable to boot – please use a kernel appropriate for your CPU
- Unable to boot : please use a kernel appropriate for your cpu
- Unable to boot - please use a kernel appropriate for your CPU
- CPU 的初始化(ARM & u-boot)
- Unable to boot - please use a kernel appropriate for your CPU &&Genymotion安装异常
- 分析 u-boot 的第一阶段代码(cpu/arm920t/start.S)
- uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式
- U-Boot(7) u-boot入口点之CPU模式切换
- uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式