启动流程

描述

img

低级初始化阶段

低级初始化阶段,程序只能访问寄存器内存区,不可以访问全局变量。

arch_lowlevel_init()

架构层的低级初始化,例如:ARM的异常、数据cache、指令cache、 浮点运算单元等的初始化。

cpu_lowlevel_init()

CPU层的低级初始化。

soc_lowlevel_init()

SOC层的低级初始化。

board_lowlevel_init()

电路板的低级初始化。通常系统的时钟、电源等在这一层进行进行初始化。

系统初始化阶段

xwos_init()

初始化玄武OS的数据段(.xwos.data),并初始化最简单的内核内存分配器。

arch_relocate()

初始化用户的数据段(.data),经过此函数之后,用户才可以访问全局变量。

arch_init()

架构层的初始化。

cpu_init()

CPU层的初始化。

soc_init()

SOC层的初始化。通常中断控制器在这一层进行初始化。

board_init()

电路板的初始化。通常外设驱动在此处进行初始化,例如:SDRAM、GPIO、DMA等。

cxx_init()

C++运行环境的初始化,玄武OS支持混合C++开发。

用户程序入口

xwos_main()

用户程序主函数,用户可在此处建立线程,启动调度器等。