linux启动过程【总】

0、概述

不同CPU上电启动过程大同小异,都起始于CPU内部固化的boot rom,这部分是芯片厂家写好的代码,固化到芯片中的。用于完成启动第一阶段的代码加载过程。之后uboot便可加载到内存中,uboot启动后做好系统初始化,即可跳转到内核继续执行。

linux内核的引导过程,需要从CPU boot rom到uboot到linux内核启动,再到挂载文件系统整个过程。主要内容包含:

  • CPU boot rom 引导分析
  • uboot初始化及加载内核过程
  • linux初始化及内核启动过程
  • 挂载文件系统及启动应用程序

1、CPU boot rom机制

imx6ul上电boot rom启动过程

https://xingxingzhihuo.blog.csdn.net/article/details/107115556

2、uboot初始化及加载内核过程

uboot编译过程分析

https://xingxingzhihuo.blog.csdn.net/article/details/79249218

uboot代码执行流程分析

https://xingxingzhihuo.blog.csdn.net/article/details/79440509

uboot执行bootm命令分析

https://xingxingzhihuo.blog.csdn.net/article/details/79560249

重写imx6ul最简单bootloader

有了对uboot的认识后,按理说重新一个功能单一的bootloader应该不难。

bootloader唯一目标:引导linux内核启动

需要实现:

  • 初始化CPU:时钟初始化、DDR初始化、FLASH初始化(部分boot rom已经做了)

  • 从flash上将内核、设备树拷贝到ddr中

  • 跳转执行内核

代码逐步实现思路:

  • 编写lds链接脚本、Makefile、初始化汇编完成工程编译
  • 初始化GPIO寄存器,完成GPIO点灯
  • 初始化串口,实现调试信息打印:CPU主频等
  • 增加cpu相关初始化:设置SVC模式、电压等
  • 移植uboot中的emmc代码,操作emmc读写
  • 将mmc中的裸机拷贝到ddr指定地址中
  • 通过go命令实现裸机运行,验证emmc拷贝成功
  • 将mmc中的内核、设备树拷贝到ddr指定地址中
  • 设置引导参数信息
  • 跳转执行内核
  • 内核启动

3、linux初始化并启动过程

 

4、文件系统挂载

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页