[xboard] 24 kernel启动流程之c语言篇
文章目录
-
-
- 1总的流程
- 2 start_kernel
-
- 阶段1:
- 阶段2:架构相关初始化
- 阶段3:内存管理初始化
- 阶段4:参数解析(关键!)
- 阶段5:核心子系统初始化
- 阶段6:中断和定时器
- 阶段7:安全和随机数
- 阶段8:性能分析和中断启用
- 阶段9:控制台和设备
- 阶段10:内存和设备后期初始化
- 阶段11:进程和命名空间
- 阶段12:文件系统和最后初始化
- 阶段13:启动完成
-
1总的流程
一般的armv7系列CPU,使用的内核镜像是zImage和uImage,所以都是压缩后的镜像,它们的启动流程一般会经历3个阶段
- 初始化解压镜像
- 初始化运行镜像,汇编阶段
- 初始化运行镜像,C语言阶段
大体的流程如下所示
bootloader→ 压缩内核入口(start arch/arm/boot/compressed/head.S)→ decompress_kernel()→ __decompress() [具体算法实现]→ 解压数据到目标地址→ 跳转到解压后的内核(stext arch/arm/kernel/head.S)→ start_kernel()
2 start_kernel
阶段1:
极早期初始化(中断禁用)
set_task_stack_end_magic(&init_task)