当前位置:首页 > 嵌入式 > 嵌入式动态
[导读] 世界上很少有什么项目能给嵌入式固件开发人员提供足够多的开发时间。事实上,嵌入式固件开发就好像气体一样,会占据它所在的整个空间。而这往往意味着项目结束阶段的测试和

 世界上很少有什么项目能给嵌入式固件开发人员提供足够多的开发时间。事实上,嵌入式固件开发就好像气体一样,会占据它所在的整个空间。而这往往意味着项目结束阶段的测试和质量评估承受压力,进而提高风险。项目经理为如何跟上项目计划进度发愁,嵌入式设计人员和测试工程师也面临开发时间和测试覆盖质量之间的矛盾。要是所有人都能实现自己的目标该多好。要是硬件设计能在代码完成前就进一步推进该多好。要是固件测试在生产构造阶段也能继续进行该多好。要是整个团队都能明确如果设计情况不好,他们总是能够通过现场升级实现重大修改该多好。这样,所有人晚上都能睡个安稳觉,而通过适当利用嵌入式引导加载程序(bootloader),这完全有可能实现。

首先我们先明确一下有关术语。引导加载程序是一段常驻微处理器中的代码,有时也位于只读存储器(ROM)中(在工厂制造时编写)或者位于板载闪存存储器的预留区域。可加载引导代码能载入内存并作为正常工作期间在微处理器上运行的主应用代码。可加载引导代码可通过引导加载程序更新。产品固件的现场升级正是通过板载引导加载程序实现的。

那么,什么是引导加载程序呢?引导加载程序就是位于给定微控制器上受保护程序存储器中的一部分代码。它通常是加电启动或重启后运行的第一个软件,往往针对具体处理器和电路板。引导加载程序可视为一种“笨”代码,因为它并不了解需要执行什么应用,甚至也不了解器件功能是什么。引导加载程序专门用来理解如果通过任意数量的通讯协议与外部进行通讯(这些协议包括UART、I2C、SPI、CAN、以太网等),也可用来了解微控制器的存储器映射。引导加载程序在发挥作用时,负责与外部或主机进行通讯;读取主机发送的数据文件;更新它所在的微处理器,从而运行所提供的最新应用代码。

 

 

图1:典型的嵌入式硬件架构。

引导加载程序可以在接收到人工操作员(也就是手动重启)或外设设备(即系统主机)的启动信号后开始工作,视具体嵌入式系统而定。引导加载程序信号首先确认引导加载程序本身是否有效,明确当前器件应用是否有效,与主机通讯并载入提交的新应用,随后根据指令执行应用闪存重写。大多数现代微控制器都能对自己的闪存重新编程。典型的引导加载程序在几微秒内就能完成这一工作。不过,存储器尺寸较大情况下,该时间就会大幅延长,有时甚至要花几秒钟才能完成一次更新。一旦完成加载引导,引导加载程序必须确认加载引导镜像,并将控制权交给加载引导代码。用于中断矢量的指针也必须进行设置。典型情况下,引导加载程序将进行软重启,以便让应用掌握控制。图2给出了引导加载程序的逻辑流程实例。

 

 

图2:引导加载程序的逻辑流程。

由于引导加载程序是在制造过程中被编程到器件中,并且不是器件工作所必需的首要应用,因此实际上可以把它看作是“开销”代码。项目经理和嵌入式设计人员必须要考虑引导加载程序所带来的风险保护功能与其所占用的代码空间相比是否值得。由于这段代码要占用空间,许多设计人员需要尽可能减小引导加载程序的存储器占用量,从而将用于应用代码的存储器空间实现最大化。引导加载程序至少应提供:通讯通道、擦写并重新编程闪存存储器的方法以及确认和执行新应用代码的方法。

此外,引导加载程序应该能够检测、报告和处理加载引导操作过程中出现的错误,如断电、通讯损失、闪存写入错误等。一般通过存储应用的校验和或循环冗余代码(CRC)来实现闪存错误保护功能。加载引导操作开始后,这些位就会被清空。如果新的应用成功下载并安装,校验和就会被更新。如果下载过程中出错(通讯损失、断电等),那么引导加载程序会检测无效的校验位,且不会开始应用操作,而是与主机通讯,等待有效的加载引导操作。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭