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

    文章

    6812

    浏览量

    147659
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16022

    浏览量

    343680
  • MPLAB
    +关注

    关注

    8

    文章

    213

    浏览量

    66350
收藏 人收藏

    评论

    相关推荐

    ARM9微控制器嵌入式无线网络实战

    将高性能、低功耗的ARM微控制器与目前新兴的ISM波段短距离无线通信技术和各种新兴的无线网络技术相结合,将是未来嵌入式设计的一个“热点”。本书以ARM9微控制器为基础,分别介绍ARM9
    发表于 03-04 17:19

    微控制器系统设计中的嵌入式软件

    微控制器技术现状智能化、互联网、物联网和云计算让控制器(MCU)无处不在MCU8/16/32的位数界限变得模糊MCU与嵌入式处理界限变得模糊MCU开放核心与专有核心之争激烈MCU的S
    发表于 03-08 16:33

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

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

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

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

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

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

    基于微控制器的现代嵌入式系统

    通常是基于微控制器(如含集成内存和/或外设接口的中央处理单元)的,但在较复杂的系统中普通微处理器使用外部存储芯片和外设接口电路。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求...
    发表于 07-30 07:49

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

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

    嵌入式平台上板载的微控制器是什么

    1 填空题嵌入式竞赛平台上板载的微控制器是: 3 级流水线,具有 128 Kbytes的Flash存储空间。(请在第一、二空格处填写10进制数值)解析:STM32G431RBT6采用采用
    发表于 11-08 06:09

    如何使用XC8编译开发具有8位PIC微控制器嵌入式系统

    图书说明:学习如何在没有所有装饰和数学的情况下使用微控制器。本书使用实用的方法向展示如何使用XC8编译开发具有8位PIC微控制器嵌入式
    发表于 11-25 08:39

    嵌入式Linux的引导过程是怎样的?

    如何使用。通过本文可以对嵌入式Linux的引导从概念到实际操作有一个总体清晰的认识1.启动顺序1.1BootloaderBootloader(引导加载
    发表于 12-17 07:25

    HCS12微控制器是否有预- 编程的引导加载程序

    我一直在看有关 LRAE 引导加载程序的 freescale AN 数据表很长时间,我收集了很多信息,我想知道一些我无法理解的元素,每个 HCS12 微控制器是否有预- 编程的
    发表于 04-18 07:44

    嵌入式编程和微控制器应用

    欢迎进入嵌入式编程和微控制器应用的世界!使用日益流行且价格适宜的AtmelAVR嵌入式控制器作为学习平台。本书是目前可以获得的最佳书籍之一。对于初学者,本书将会是极好的选择。随着
    发表于 09-20 07:52

    嵌入式引导加载技术

    嵌入式引导加载技术
    发表于 02-08 01:37 10次下载

    嵌入式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

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

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