【MCU】BootLoader的简单介绍


>>返回总目录<<

1 什么是BootLoader

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行,用来初始化硬件设备,建立内存空间映射图,以便为操作系统的启动做准备。在嵌入式系统中,通常没有想BIOS那样的的固定程序,因此整个系统的加载启动任务就完全由BootLoader来完成。在嵌入式系统中,系统在上电或复位时通常从地址0x0000出开始执行,BootLoader即从该地址开始执行,即上电或复位后执行的第一段代码。

2 BootLoader的启动过程

BootLoader的启动分为两个阶段:
(1)第一个阶段通常用汇编语言来实现,包含依赖于CPU的体系架构的硬件的初始化代码。该阶段的任务:
1.对硬件设备进行初始化(如屏蔽所有中断,关闭处理器内部指令/数据Cache等);
2.为第二阶段准备RAM空间;
3.复制BootLoader的第二阶段代码到RAM中;
4.设置堆栈为第二阶段的C语言环境做准备。

第一阶段关闭Cache的原因:通常使用Cache是为了提高系统性能,但此时Cache的使用可能改变访问主存的数量,类型或时间,BootLoader是不需要的,即BootLoader直接访问主存即可,不需要通过缓存来访问。
(2)第一阶段执行完会跳转到第二阶段的C程序入口点,该阶段是由C语言完成,以便实现更复杂的功能,也是程序有更好的可读性和可移植性。该阶段的任务:
1.初始化本阶段要用到的硬件设备;
2.检测系统的内存映射;
3.将操作系统程序从Flash读到RAM;
4.为操作系统设置启动参数;
5.调用操作系统代码进行启动。

3 BootLoader的操作模式

大多数BootLoader有两种操作模式:
(1)启动加载模式:在这种模式下,BootLoader将操作系统程序代码从flash中加载到RAM中运行。
(2)下载模式:BootLoader将通过串口或网络等通信手段从外部或远程主机下载内核和程序代码到RAM中,然后将接收到的程序写到本地的flash中,或者直接进行系统的引导。
前者用在第一次烧写操作系统代码到flash中或操作系统更新时使用;后者用在前期开发的调试阶段,此时BootLoader会向其终端用户提供一个简单的命令行接口。

4 总结

简单的说,BootLoader就是在操作系统运行之前运行的一段小程序。BootLoader广泛用于有操作系统的嵌入式设备上,它负责完成硬件初始化,操作系统引导和系统配置等,相当于PC上的BIOS,是整个系统运行的基础。
BootLoader是严重依赖硬件平台来实现的,因此不同的处理器架构有不同的BoottLoader,没有通用的BootLoader,并且对于具有相同处理器架构但外设不同的两块PCB板,BootLoader也不一定是完全相同的。
反过来,BootLoader仍然具有许多共性,一些BootLoader也能够支持多种体系架构的嵌入式系统,例如,U-Boot可同时支持PwerPC,ARM,MIPS,X86等体系架构。

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STM32 bootloader app合并是指将MCU的启动程序和应用程序合并到一起,可以在单个MCU中实现启动程序和应用程序两种不同的功能。这种技术有助于简化系统设计和开发流程,减少成本和减少系统板子的体积。 在STM32单片机开发中,bootloader和app分别是分开编写的。bootloader在芯片出厂后就已经存在,主要负责系统的初始化、底层硬件的配置以及app的加载、升级和运行。app是用户程序,包括主函数等,通常是由开发人员或客户按照需求编写的。 为了实现bootloader和app的合并,需要在编写app时做一些特殊处理。主要有以下几个方面: 1.确定代码入口 合并后的代码需要在单片机上运行,所以需要确定代码的入口地址。一般情况下,bootloader的代码会占用一些内存,app的代码入口需要从bootloader的后面开始。如果bootloader占用的内存不一定严格固定,可以使用一个全局变量来指示app的入口地址。 2.禁用某些功能 为了保证bootloader正常运行,app中有些功能不能使用。例如,如果app中涉及到修改bootloader中的某些参数或实现特定的外设控制,可能会干扰bootloader的正常工作。解决这个问题的方法是,在app中禁用相关的功能。 3.编写代码复位程序 合并后的代码需要能够执行复位操作,即允许app重新启动。为了实现这一功能,需要编写复位程序(Reset)。 总之,STM32 bootloader app的合并不是一件简单的事情,需要开发人员根据具体应用需求做出相应的处理,确保代码的可靠性和运行稳定性。但是,在现代嵌入式系统中,将bootloader和app合并在一起已经成为常见技术,为MCU的开发提供了更大的灵活性和优秀性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

woniudaidai

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值