操作系统 原理与实现 LEC2:ARM64硬件结构与系统接口

在学习UESTC《嵌入式系统及应用》时做过简要总结
https://github.com/AceBlackbird/AssemblyLanguage/blob/main/ARM/ARM体系结构基础.pdf

ARM64寄存器

image

特权级

  • EL0:用户态程序
  • EL1:kernel(内核)
  • EL2:MMU(虚拟机监控器)
  • EL3:TrustZone相关

本课程主要涉及EL0~EL1

MMIO

  • MMIO(Memory-mapped IO)
    将设备映射到连续的物理内存中,使用相同的指令
  • PIO (Port IO)
    IO设备有独立的地址空间,使用特殊指令

AArch64使用MMIO

操作系统的启动过程

bootloader和kernel放在同一个ELF文件中,BootLoader位于.init段并通过链接器设置入口,Kernel位于text段

  1. 主CPU启动,其他次CPU等待
  2. 层级切换,跳转至EL1
  3. 准备C函数栈,设置异常向量
  4. 根据UART协议,进行内存空间的初始化
  5. 初始化页表,开启MMU。此时将kernel代码映射到低地址段和高地址段两份,方便访问。
  6. 进入Kernel。跳转到Kernel的main函数,真正进入操作系统,然后开启OS的各种服务。

后续课程实验在虚拟机环境中的ARM模拟器(包含CPU、内存和各种设备)。

posted @ 2023-03-19 22:17  _vv123  阅读(114)  评论(0)    收藏  举报