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

描述

引导加载程序概述

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

引导加载程序的用途

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

引导加载程序是一个程序,允许您通过许多方便的接口加载应用程序固件,如UART,CAN/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 界面使您能够创建专为满足您的应用需求而设计的引导加载程序固件。我们还提供应用程序固件配置,使您能够轻松地使用应用程序自定义引导加载程序。

审核编辑:郭婷

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分