Bootloader基础概念

Bootloader也叫做引导加载程序。在嵌入式系统上电复位后首先运行引导加载程序,它的功能主要是负责系统的上电自检、必要的硬件初始化、建立储存空间映射,并加载和启动操作系统。Bootloader一般储存在bootROM中,当前使用最多的类型是NOR flash rom,在大多数的嵌入式系统中,flash里边不仅储存了bootloader,还储存了用户程序代码。

接下来说一下bootloader如何加载用户程序, 有以下四种方式: 

方式一:在flash中运行
也就是说在嵌入式系统上电或者复位后,执行bootloader代码,完成必要的硬件初始化后, 直接跳转到flash中用户程序的入口地址继续执行。 

方式二:在RAM中运行在单片机上电或者复位后,在flash中执行bootloader代码,完成必要的硬件初始化,接下来将flash中的操作系统和用户程序代码拷贝到RAM中,然后跳转到ram中的用户程序入口地址执行程序。

方式三:从外存储器加载
这种情况下,用户程序不存在flash中,而是存在外存中,但是bootloader还在flash中,此时在bootloader中必须要有访问外存的驱动程序,在处理器上电复位后,执行flash中的存放的bootloader代码,完成硬件初始化,通过外存驱动程序去读取外存中的用户程序,并将其复制到RAM中,然后跳转到用户程序的入口地址。

方式四:从通信端口加载
这种方式与方式三类似,不过需要在访问外存的驱动程序中添加通信端口的驱动程序,比如串口、以太网等,一般用于固件程序的更新调试。

前三种方式属于启动加载模式,这是嵌入式系统正常工作时使用的启动方式。第四种加载方式属于下载模式,这是在调试或者维护更新阶段使用的系统启动方式。在下载模式下,bootloader 会通过通信端口从上位机或者服务器上下载操作系统映像/用户程序,暂存到RAM中,然后将其烧录到flash中,也可以烧录到SRAM中运行。

最后,如果有需要《STM32➕RTOS项目》、《嵌入式八股文合集》及《Freertos开发手册》等资料,也可以私信笔者获取。#嵌入式# #嵌入式软件开发# #嵌入式项目# #嵌入式秋招# #嵌入式学习路线# #找工作#
全部评论

相关推荐

12-10 08:46
门头沟学院 C++
写在前面:主包是研二下发现自己找工作不知道找什么样的,本身专业是地坑专业,因此急转嵌入式为第二年的秋招做准备。本身有点c/c++的基础,但是比较缺少嵌入式方面的基础,因此提前6个月为秋招做足准备。主包本身是选择RTOS和Linux双修,可以在秋招多几个方向选择,如果有自己擅长的小伙伴可以只选择一个猛攻。个人推荐本科生选择RTOS、硕士生选择Linux。(为什么不推荐本科生选择Linux呢,因为Linux会卡学历,RTOS是对本科生来说最优选)大致路线是:速通mcu、rtos基础教程(第1个月) —Linux驱动、应用开发基础教程 (第2个月 — 做个比较全面的基础型项目(第3个月) — 找2段相关的嵌入式实习(第2-6个月) — 决战秋招。中间一直保持着刷hot100的习惯,以解决手撕问题。1️⃣第一个月mcu+rtos:首先选择b站播放量高点以及短一些的课程、资料同时学习,以基础为主,更重要的是对嵌入式方向有个基础的认知。(关于b站教程方面,个人没有特别推荐某一个,我看过几个其实大差不差,每个点击量高的都讲的比较全面,选择一个自己喜欢的即可,推荐从HAL库学起)要点:记住做足笔记,实习/秋招面试注重基础,并非花里胡哨的项目(但是也需要一个拿得出手的项目),基础的知识主要从前期学习打好框架。如果自己的c/c++的基础不好的话,也可以先从语言方面进行打磨,路线也是从b站视频学起!2️⃣第二个月Linux:也是从b站播放量较高的几个视频开始学起,主要是驱动与应用方向,要点与RTOS相同,要做好笔记!!3️⃣项目学习:每个课程都有自己附带的小项目,可以在实习前对其中一个项目进行打磨(不要直接照抄!!这种项目都是烂大街的)。接下来对项目进行修改(比如多加个功能,优化源码和八股里的知识结合),这种都可以进行AI赋能,让AI帮你想个点子。写在最后:实习和秋招来说,大厂都注重基础,因此对很多基础型的八股要了如指掌,但是也不能忽视项目,有一个吸引眼球的项目才会让你的简历被面试官发现。下一期准备分享实习/秋招经验、刷题经验,解决评论区常见问题~
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务