Linux内核深度解析
上QQ阅读APP看书,第一时间看更新

1.1 到哪里读取引导程序

处理器到哪里读取引导程序的指令?处理器在上电时自动把程序计数器设置为处理器厂商设计的某个固定值,对于ARM64处理器,这个固定值是0。处理器的内存管理单元(Memory Management Unit, MMU)负责把虚拟地址转换为物理地址,ARM64处理器刚上电的时候没有开启内存管理单元,物理地址和虚拟地址相同,所以ARM64处理器到物理地址0取第一条指令。

嵌入式设备通常使用NOR闪存作为只读存储器来存放引导程序。NOR闪存的容量比较小,最小读写单位是字节,程序可以直接在芯片内执行。从物理地址0开始的一段物理地址空间被分配给NOR闪存。

综上所述,ARM64处理器到虚拟地址0取指令,就是到物理地址0取指令,也就是到NOR闪存的起始位置取指令。