作为入行不久的嵌入式软件开发工程师,依托公司的项目对软件开发有了一定的了解,但始终不成体系,因此想借此平台对所做工作进行总结,提升能力,为之后的发展做好充足的准备。当然,文章也只是在目前我的见识和基础上所写出的,肯定有疏漏甚至错误之处,欢迎大佬能够批评指正,不吝赐教,谢谢!
1. Bootloader 是做什么的?
简单的说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。对于Bootloader的启动过程又分为两个阶段stage1和stage2。
stage1全部由汇编编写,它的主要工作是(1)初始化硬件设备、(2)为加载Bootlodader的stage2准备RAM空间(3)拷贝Bootloader的stage2到RAM空间(4)设置好堆栈段为stager2的C语言环境做准备。
stage2全部由C语言编写,(1)初始化本阶段要使用到的硬件设备(2)将内核映像和根文件系统映像从 flash 上读到RAM (3)调用内核
摘自: Bootloader的作用、为什么需要Bootloader?