0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用微控制器上的引导加载程序使您的嵌入式设计面向未来

星星科技指导员 来源:microchip 作者:microchip 2023-05-06 10:55 次阅读

引导加载程序概述

产品开发的初始阶段,引导加载程序可能经常被忽视,因为它不是主要的最终产品。但是,它允许公司使用仅满足其最终功能集的一部分的软件来启动其产品,然后在产品投放市场后向其产品添加功能或解决错误。

引导加载程序的用途

随着嵌入式设计在功能和连接性方面的发展,支持远程应用程序更新的需求也在增加。嵌入式连接不限于单一通信协议,具有多种形式,在汽车工业消费医疗物联网IoT 等不断增长的市场中至关重要。

引导加载程序是一个程序,允许您通过许多方便的接口加载应用程序固件,如UARTCAN/CAN FD,LIN,I 2C等。当您打开或重置微控制器MCU) 时,引导加载程序是第一个运行的程序,用于检查是否存在上传请求。如果有,它将上传新固件并将其编程到闪存中。这是一个复杂且耗时的过程,但不用担心,我们通过MPLAB® 代码配置器 (MCC) 中提供引导加载程序库来简化将引导加载程序添加到您的设计中,MCC 是一种免费的图形代码生成工具,可帮助使用 PIC24 微控制器 (MCU) 和 dsPIC33 数字信号控制器 (DSC) 进行应用开发。

生成的引导加载程序代码的主要要求是:

确定是否加载了有效的最终应用程序

通信/执行支持的命令

验证收到的最新固件的真实性和完整性

擦除/重写最终应用程序内存空间

将控制权移交给最终应用程序

健壮性需要一些附加功能:

确保擦除/写入地址超出引导加载程序内存范围

允许主机读取程序存储器

检测损坏的最终应用程序代码并正常恢复

这些是如果您自己开发引导加载程序可能会遇到的一些复杂性。但是,MCC 引导加载程序库抽象了这些复杂性,并简化了在 MCC 中只需单击几下即可添加引导加载程序的过程。我们的 MCC 引导加载程序经过严格测试,包括检查和平衡,可在您的设计中构建弹性和健壮性,以避免意外损坏。

安全固件升级

对于执行固件更新的开发人员来说,安全性是一项关键挑战,我们最不希望看到的就是被黑客入侵。执行固件更新的开发人员应进行身份验证,甚至可以选择性地加密其应用程序映像,以防止任何人深入了解专有固件或逆向工程和入侵系统。我们的高性能 dsPIC33C DSC 和低功耗 PIC24F MCU 与我们的 ATECC608 加密身份验证™和 TrustAnchor100 (TA100) 加密汽车™安全 IC 或 dsPIC33C MPT 安全 DSC 相结合,提供了一组特别有趣的安全功能,可实现不可变的安全启动和安全固件升级功能

安全启动可确保仅在设备上执行授权固件;但是,黑客可能会尝试利用旧固件并尝试撤消任何固件更新。例如,黑客可能会尝试使用较旧的映像重新刷新设备,这可能会导致严重的安全隐患。防回滚通过确保这些黑客无法加载旧版本的固件来防止这些攻击。但是,回滚可以用于恢复目的,但前提是已获得授权。

我们还能如何使这些引导加载程序健壮?除了在电源事件后延迟软件执行外,强大的引导加载程序入口方法对于保护应用程序也很重要。不建议使用过于简单的输入方法,例如仅检测单个UART字节。包含“32”和“1”位混合的 0 位或更长的检测序列不太可能意外解码随机通信噪声。还建议在引导加载协议中实现闪存解锁命令,而不是在应用软件中实现硬编码。主机应用程序不仅应负责发送进入引导加载程序模式的命令,还应负责发送单独的命令以解锁擦除/写入操作,然后才能允许发送修改闪存内容的其他命令。

信任不仅依赖于设备,还依赖于制造过程。利用生产线中的弱点是黑客的首要目标之一。将密钥和机密与制造隔离同样重要。客户可以将这一负担留给Microchip的安全工厂,并利用我们值得信赖的配置服务。

Microchip的解决方案/MCC旋律简介

开发自定义引导加载程序代码可能是一个复杂且耗时的过程。面对所有这些关键挑战,Microchip的解决方案如何解决它们?

适用于 dsPIC33 DSC 和 PIC24 MCU 的 MCC 引导加载程序允许客户配置和使用引导加载程序以及与引导加载程序关联的应用程序。引导加载程序在设计中的集成包括三个部分:

主机应用程序

设备引导加载程序

设备端应用

主机应用程序负责加载新的十六进制文件,并通过支持的命令语法将其发送到引导加载程序。设备终端应用程序需要了解引导加载程序,并且必须了解如何在请求或配置的事件时将控制权返回给引导加载程序。默认情况下,设备引导加载程序生成为在启动时运行,并确认是否加载了有效的应用程序。如果存在有效的应用程序,则放弃控制权;否则,该操作将保留在引导加载程序中。

用于管理引导加载程序过程的主机应用程序可以是Microchip的统一引导加载程序应用程序,它可以是独立的应用程序,也可以是单独的外部微控制器设备。无论哪种方式,最终目的都保持不变:通过使用引导加载程序和支持的命令更新最终应用程序固件版本。

MCC Melody和引导加载程序库应该提供您所需的所有支持,以加快设计/最终应用程序的开发时间。MCC Melody提供的升级和灵活的架构,由MCC Classic开发而成,使配置设备,外围设备,库和代码变得简单。它清楚地可视化组件的依赖项以简化开发,并通过在驱动程序级别启用内容版本控制来提供易于维护。您可以使用 MCC Melody 轻松跨微控制器迁移,以满足您的应用需求。

MCC Melody提供库、驱动程序、外设库(PLIB)和硬件初始值设定项(HWI),用于开发Microchip PIC和AVR®微控制器以及dsPIC DSC®®的嵌入式软件。这些组件通过图形配置工具进行定制,该工具可生成高效的 C 代码。

低级PLIB很简单,用于初始化和控制外设和基本器件功能。系统驱动程序支持配置常规功能,通常由其他外设使用,如引脚、中断和系统时钟。驱动程序依赖于 PLIB,并将硬件详细信息从库和应用程序中抽象出来。库使用驱动程序和系统服务来实现设备独立性,并为当今嵌入式应用程序通常需要的网络USB、加密和其他功能提供支持。您可以从MPLAB X IDE / MPLAB Xpress中安装MCC Melody,也可以下载并将其作为插件安装。

关键要点

那么,是什么让引导加载程序成为一个好的引导加载程序呢?易用性是主要要求之一,我们使用 PIC24 微控制器和 dsPIC33 DSC 的 MCC 引导加载程序提供了这些要求。简单的 GUI 界面使您能够创建专为满足您的应用需求而设计的引导加载程序固件。我们还提供应用程序固件配置,使您能够轻松地使用应用程序自定义引导加载程序。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7542

    浏览量

    151320
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17128

    浏览量

    350999
  • MPLAB
    +关注

    关注

    9

    文章

    215

    浏览量

    66863
收藏 人收藏

    评论

    相关推荐

    如何为嵌入式应用选择合适的微控制器

    嵌入式应用选择合适的微控制器可能是一项至关重要的任务。不仅有各种各样的威廉希尔官方网站 选择需要考虑,还有商业案例问题,如价格和交付时间可能会削弱项目。在项目或嵌入式系统应用程序开始时,很有可能在
    发表于 12-21 17:58

    如何在I2C从外部微控制器运行引导加载程序

    编程部分。我还没有找到任何关于如何使用外部微控制器作为引导加载程序的文档。我只能在HSSP编程接口上找到文档,如果它坏了,可能会擦除引导
    发表于 07-12 09:09

    慧荣科技FerriSSD是如何满足嵌入式引导加载应用需求的?

    Silicon Motion(慧荣科技)的 FerriSSD®产品家族开发满足了嵌入式应用中引导加载程序独特而苛刻的要求。在各种工作温度环境下,嵌入
    发表于 10-16 08:05

    使用ARM Cortex和STM32的嵌入式系统微控制器

    背景知识视频教程使用ARM Cortex和STM32的嵌入式系统的基础掌握微控制器:定时,PWM,CAN,RTC,低功耗STM32Fx微控制器自定义
    发表于 08-03 06:47

    时间触发嵌入式系统设计模式(使用8051微控制器开发可靠应用

    时间触发嵌入式系统设计模式:使用8051微控制器开发可靠应用主要关注使用软件模式迅速地开发时间触发嵌入式系统的软件,涉及的系统全部基于8051系列微控制器。时间触发威廉希尔官方网站
    发表于 10-28 23:20 688次下载
    时间触发<b class='flag-5'>嵌入式</b>系统设计模式(使用8051<b class='flag-5'>微控制器</b>开发可靠应用

    基于CORBA威廉希尔官方网站 的嵌入式控制器设计

    本文以制造业嵌入式控制器为背景,在所选择的嵌入式硬件和实时操作系统的基础,开发基于CORBA威廉希尔官方网站 的面向重矿行业的
    发表于 09-06 17:30 1707次阅读
    基于CORBA威廉希尔官方网站
的<b class='flag-5'>嵌入式</b><b class='flag-5'>控制器</b>设计

    嵌入式引导加载威廉希尔官方网站

    嵌入式引导加载威廉希尔官方网站
    发表于 02-08 01:37 10次下载

    如何在STM32微控制器引导加载中使用USART协议的详细资料说明

    本应用程序说明描述了STM32微控制器引导加载中使用的USART协议。它详细描述了每个支持的命令。有关USART硬件资源和设备
    发表于 12-13 15:20 4次下载
    如何在STM32<b class='flag-5'>微控制器</b><b class='flag-5'>引导</b><b class='flag-5'>加载</b><b class='flag-5'>器</b>中使用USART协议的详细资料说明

    嵌入式Linux操作系统引导加载程序BootLoarder

    嵌入式Linux操作系统引导加载程序BootLoarderBootLoarder是什么Linux操作系统分层BootLoarderBootLoader操作模式BootLoader启动
    发表于 11-01 17:05 8次下载
    <b class='flag-5'>嵌入式</b>Linux操作系统<b class='flag-5'>引导</b><b class='flag-5'>加载</b><b class='flag-5'>程序</b>BootLoarder

    MAXQ微控制器的多路复用JTAG接口引脚

    通常在嵌入式应用中,微控制器的每一个端口引脚都需要,没有多余的端口引脚。大多数具有可重写内部程序存储(如闪存或EEPROM)的MAXQ®
    的头像 发表于 01-10 11:34 1169次阅读

    为MAXQ2000微控制器实现JTAG自举加载程序主控

    通过使用一组标准化命令,MAXQ微控制器提供的JTAG引导加载程序允许外部JTAG主机轻松识别和编程任何MAXQ微控制器
    的头像 发表于 02-21 11:22 1129次阅读
    为MAXQ2000<b class='flag-5'>微控制器</b>实现JTAG自举<b class='flag-5'>加载</b><b class='flag-5'>程序</b>主控

    使用高速微控制器作为自举加载程序

    高速微控制器系列的一些成员集成了内部EPROM或ROM用于程序存储。但是,某些应用需要程序存储的系统内重新编程。使用带有内部程序存储
    的头像 发表于 03-01 13:57 771次阅读
    使用高速<b class='flag-5'>微控制器</b>作为自举<b class='flag-5'>加载</b><b class='flag-5'>程序</b>

    用于Hercules微控制器的CAN总线引导加载程序

    电子发烧友网站提供《用于Hercules微控制器的CAN总线引导加载程序.pdf》资料免费下载
    发表于 09-19 10:52 0次下载
    用于Hercules<b class='flag-5'>微控制器</b>的CAN总线<b class='flag-5'>引导</b><b class='flag-5'>加载</b><b class='flag-5'>程序</b>

    用于Hercules微控制器的CAN总线引导加载程序

    电子发烧友网站提供《用于Hercules微控制器的CAN总线引导加载程序.pdf》资料免费下载
    发表于 09-19 10:55 0次下载
    用于Hercules<b class='flag-5'>微控制器</b>的CAN总线<b class='flag-5'>引导</b><b class='flag-5'>加载</b><b class='flag-5'>程序</b>

    嵌入式系统中微控制器与微处理的区别

    它们在现代电子设备中的核心作用,并探讨它们如何持续推动威廉希尔官方网站 创新的未来。什么是嵌入式微控制器?嵌入式微控制器是设计用于在电子系统中执行特定任务的紧凑型集成电路。与更广
    的头像 发表于 10-14 11:02 418次阅读
    <b class='flag-5'>嵌入式</b>系统中<b class='flag-5'>微控制器</b>与微处理<b class='flag-5'>器</b>的区别