跳过主要内容

MicroController中的引导加载程序是什么?你为什么需要它?

MicroController中的Bootloader是什么
MicroController中的引导加载程序

在过去的几年中,188金宝搏官方网站已成为我们日常生活的重要组成部分。您可能不会注意到它,但是它在引擎盖下并执行一些简约的任务来改善我们的日常生活。从控制我们的设备等简单的8位芯片中聪明的灯泡和那些强大的32位的烤面包机数字信号处理器(DSP)在我们的电视和机顶盒中,这使我们充满了数字媒体和娱乐。如果没有微控制器188金宝搏官方网站,我们的生活不仅会变得不那么娱乐,而且肯定会失去我们享受很多的控制。随着需求的增加,小型基于微控制器的产品的开发增加,这就是为什么每年出售数十亿微控制器单元的原因。

现在的问题是,当数十亿微控制器的产品制造和出售时会发生什么,而固件升级成为重中之重?每次需要固件升级时,是否需要将每个售出的单位都退还给制造商?这个问题的明显答案绝对不是!这是基于微控制器的系统运输的最重要原因之一引导加载程序在船上。所以什么是引导加载程序?

一个引导加载程序是一个应用程序,其主要目标是升级/修改系统软件没有专门的固件升级工具的干预。引导加载程序可以具有许多功能,但主要用于管理应用程序。他们还可以使用不同的协议,例如uart,,,,能够,,,,I2C,,,,I2S,,,,以太网, 或者USB建立沟通和初始固件升级。一个很好的例子是在Arduino董事会,该配置为在Atmega芯片的闪存中刷新应用程序软件。

了解引导加载程序系统

引导加载程序系统

引导加载程序可以有多种尺寸,并且可以通过执行的任务类型来区分,但是通常,引导加载程序是相对标准的。任何引导程序中都有三个关键部分:分支代码,在启动时,它决定是否执行引导加载器代码或者应用代码。这是通过在启动时检查GPIO PIN来完成的;但是,制造商和开发商使用了此类方法。在更复杂的系统中,引导加载程序将自己加载到记忆随着应用程序代码,然后检查初始参数和系统完整性。完成此操作后,它将返回执行应用程序代码。这就是为什么许多引导加载程序都包含分支代码的原因。

即使应用程序正在运行,它的设计也是如此,以至于可以要求固件升级,之后,它需要照顾必要的系统清理;完成此操作后,它通过将已知值放到看门狗注册。此外,该应用程序还为分支代码提供了所有必要的说明,以将设备放置在引导加载模式下。

现在引导加载程序加载到内存中,它开始初始化基本指令和外围设备以准备固件升级。外围设备通常是系统时钟,,,,中断沟通渠道, 和调度程序。这些允许引导加载程序从外部接受指令,并开始升级过程。完成后,它将芯片软化,然后再次启动时,它将进入普通操作模式。

内存编程

让我们通过获得一些了解记忆结构及其编程。为此,我们将举一个例子AVR微控制器,但是在此之前,让我们清除您可能知道或可能不知道的一些特定术语。每种类型的微控制器都配有用于存储程序的非易失性内存。最常用的内存称为闪存它分为不同的较小部分。该过程的最小部分称为。页面组合并制成一个称为一个称为的记忆结构部门。安排了扇区以形成更大的结构。每一个微控制器在如何操纵这些块方面是不同的。但是大多数微控制器188金宝搏官方网站都可以让您一次编写单个字节。

AVR中的引导加载程序:

AVR带有一个分为两个部分的内存,一个应用,引导加载程序部分。“应用程序”部分包含特定于应用程序的代码,并且“引导加载程序”部分可以包含不同的引导加载程序。在AVR中,可以通过设置保险丝来配置此部分。我们可以将所需的引导程序空间设置为我们的要求,也可以将其设置为应用程序代码。下面的流程图将使您更好地了解来自uart写入记忆AVR

AVR中的引导加载程序

上面的流程图显示了当AVR进入引导加载程序。首先,它删除页面内存并从中获取新的页面内容乌尔特,然后填充页面缓冲区。在那之后,它等待了更多页面uart;如果有一个新页面,该过程再次启动;如果没有,该程序将进入RWW(写时阅读)部分并完成操作。这是引导加载程序操作的过于简单版本。如果您想了解有关该主题的更多信息,则可以参考自我编程Microchip Technologies指南。

相关文章


加入20k+订户

我们绝不会垃圾邮件。

*表示需要

成为我们不断发展的社区的一部分。