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

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

3天内不再提示

深入探讨i.MX RT1010 OTA存储结构

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2021-10-29 16:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近恩智浦在Github发布了一套基于MCU的OTA工程,该工程支持i.MX RT系列,且支持security的相关功能,得到了用户的广泛关注。

这套工程是基于恩智浦的EVK开发板,板载Flash的容量也就决定了整个OTA工程的存储结构。但是不同容量的flash,OTA的存储结构也不尽相同。本文将最近支持客户时的一些经验予以总结,当大家更换flash的时候,可以更快的完成OTA工程配置。本文介绍的方案为基于Remap功能实现OTA的方法。整个OTA的存储结构可以用下图进行表示,即 SBL(Secure Bootloader), OTA Flag Data,Slot1,Slot2和Customer Data区域。

SBL的主要功能是用于在芯片POR启动后,根据OTA flag data的信息,决定存储在Slot1或者Slot2的程序进行运行。除此之外,还支持程序的验签,回滚等功能。

OTA Flag Data区域主要是用于存储OTA升级过程中的一些标志位信息,根据相关的标志位信息SBL进行image升级,回滚和跳转到对应的slot运行程序。

Slot1和Slot2用于存储应用程序。

Customer Data用于存储客户的一些信息(可选项,非必须)。

本文将就上述几个区域的存储空间分配,及中间的一些需要注意的点予以介绍。

基本的硬件环境是i.MX RT1010-EVK开发板,客户的实际需求是使用一颗容量为512KB的Flash,且不需要使用Security相关的功能。因此在禁用Security功能后,使用IAR编译出一个大小为25KB的SBL.bin文件。由于OTA中使用的Remap功能需要4KB对齐,以及Flash的最小擦除容量是4KB,因此SBL分配的容量是28KB,则此时SBL的地址分配空间为:FunctionAdd_StartAdd_End

SBL0x6000 00000x6000 6FFF

OTA Flag data尽管只有32Bytes的数据,但是在升级过程中这些数据需要读写擦,但Flash的擦除过程需要按照Sector的大小进行,因此也至少需要留存4KB的空间,则此时OTA Flag data的地址及空间分配为:

fd68864e-388a-11ec-82a8-dac502259ad0.png

接下来就是Slot1和Slot2,Slot1和Slot2要使用Remap的功能进行切换,Remap的地址需要4K对齐,则此时用于存储应用层程序的地址空间分配为:

FunctionAdd_StartAdd_End

Slot10x6000 80000x6004 3FFF

Slot20x6004 40000x6007 FFFF

此时,细心的朋友们就会发现,完整的512K Flash空间已经被使用光了。没错,这次客户不需要用这个CustomerData区域,希望把更多的空间用于应用程序。

在完成了OTA存储结构按功能地址分配之后,我们进行一些细部探究。

首先看SBL,SBL区间主要包括用于Flash boot的相关信息,例如IVT, Flash Config Block等。这部分代码基本上不需要改动,可以直接使用。

在地址空间分配上,可以将SBL区域视为一个可以从Flash XIP boot的hello word工程。

fdc48da4-388a-11ec-82a8-dac502259ad0.png

接着看一下OTAFlag Data区间的地址分配,OTA Flag Data共计32个字节,用于指示OTA过程中的三种状态,升级,回滚以及正常工作(没有升级和回滚发生)。

该32字节通常存储在Slot1的首地址之前的32字节位置。

ff92553a-388a-11ec-82a8-dac502259ad0.png

最后来看Slot1和Slot2的地址空间分配。

应用程序的首地址,即中断向量表的首地址并不是从Slot1的首地址开始的,原因有两点

第一在image的起始地址需要增加用于OTA的ImageHeader信息,该Image Header的大小为32字节。

其次,对于应用程序中中断向量表的起始地址,需要进行计算。其基本的计算原则是:中断向量的数量 * 4的结果,向上对齐到2的次幂整数倍。看RT1010的中断向量共计256个,但是真正可以使用的是96个。则此时的计算结果是:96 * 4 = 384。向上对齐到2次幂整数倍,则为512即0x200。

所以,应用程序的真正起始地址需要在Slot1的基础上,向后调整0x200。

Slot2的空间分配也需要满足这个条件。

fff0a036-388a-11ec-82a8-dac502259ad0.png

最终完整的地址空间分配如下图所示:

006545f8-388b-11ec-82a8-dac502259ad0.png

当需要对OTAFlag Data以及Slot地址进行分配,可以在程序中搜索下图中的关键词进行更改,对下面的表格进行调整。

通常需要进行关注的关键地址为:BOOT_FLASH_ACT_APP和 BOOT_FLASH_CAND_APP。其余的地址信息,与这两个地址信息存在依赖关系,程序内部可根据这两个地址信息进行计算。

需要注意的是,本文中涉及到的OTA方法,是基于Remap功能实现的,因此仅仅适用于除RT1050,RT1020, RT1024, RT1015以外的RT系列。

最后,向在本次客户支持中提供大量协助的Tim, Gavin, Xiaoli表示感谢。

差点忘了,原工程的下载地址是:

https://github.com/NXPmicro/sbl

https://github.com/NXPmicro/sfw

编辑:jq

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

    关注

    462

    文章

    53530

    浏览量

    458869
  • OTA
    OTA
    +关注

    关注

    7

    文章

    623

    浏览量

    37949
  • Boot
    +关注

    关注

    0

    文章

    154

    浏览量

    37474
  • SBL
    SBL
    +关注

    关注

    0

    文章

    4

    浏览量

    8605

原文标题:i.MX RT1010 OTA存储结构小记

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    i.MX RT1180实现EtherCAT+伺服控制的终极实践

    今天继续为大家介绍i.MX RT1180实现EtherCAT+伺服控制的终极实践:双电机控制与Ethercat资源使用。
    的头像 发表于 11-26 08:19 2223次阅读
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1180实现EtherCAT+伺服控制的终极实践

    恩智浦i.MX RT1180跨界MCU助力下一代伺服控制系统

    今天我们将聚焦一项正在重塑工业自动化边界的技术组合 —— 基于NXP的i.MX RT1180微控制器,实现EtherCAT通信与高性能伺服控制的融合方案。
    的头像 发表于 09-28 14:16 4249次阅读
    恩智浦<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1180跨界MCU助力下一代伺服控制系统

    恩智浦i.MX RT1180跨界处理器如何选型

    i.MX RT1180 跨界处理器包含众多的型号,以满足客户对不同性能与价格的需求,今天就先给大家说说如何选型。
    的头像 发表于 09-28 14:01 2003次阅读
    恩智浦<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1180跨界处理器如何选型

    恩智浦MCU方案 单颗i.MX RT1180实现EtherCAT+伺服控制

    介绍基于单颗i.MX RT1180芯片的EtherCAT+伺服电机控制方案-伺服控制板硬件电路资源介绍,即为下图中的Servo Motor Driver Board。
    的头像 发表于 09-11 14:27 4.9w次阅读
    恩智浦MCU方案 单颗<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1180实现EtherCAT+伺服控制

    恩智浦i.MX 95系列MPU如何赋能边缘计算

    在本系列博文的第一部分,我探讨了恩智浦i.MX 95系列如何将新功能安全技术应用于工业环境、汽车领域及其他边缘应用。在接下来的文章中,我将进一步阐述i.MX 95系列如何赋能边缘计算,实现先进的AI功能。
    的头像 发表于 07-30 11:08 2356次阅读
    恩智浦<b class='flag-5'>i.MX</b> 95系列MPU如何赋能边缘计算

    基于恩智浦i.MX RT芯片内部RAM运行LVGL工程

    随着越来越多用户选择i.MX RT系列芯片制作产品,产品的需求以及芯片的用法也越来越多。本文将介绍在i.MX RT平台中,如何创建LVGL项目并将其运行在内部SRAM而非SDRAM上。
    的头像 发表于 07-01 09:33 2185次阅读
    基于恩智浦<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>芯片内部RAM运行LVGL工程

    如何实现安卓与恩智浦i.MX RT1170的无线投屏与控制

    Scrcpy是一款免费开源的软件,支持将安卓端屏幕投影到其他设备,并支持被投屏设备对安卓的反向控制。基于ADB工具,安卓端无需安装任何软件,延迟低,稳定性好。现在,安卓也可投屏到恩智浦i.MX RT1170上。
    的头像 发表于 06-26 09:53 1932次阅读
    如何实现安卓与恩智浦<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1170的无线投屏与控制

    i.MX RT系列中FlexSPI DQS信号引脚配置GPIO方法

    i.MX RT060项目(采用QSPI Flash)的实际应用中,有客户反馈,其在设计阶段并未预留DQS信号引脚,而是将该引脚作为GPIO用于控制关键外设的开关,这导致程序无法正常运行。在此背景下
    的头像 发表于 06-16 11:30 1261次阅读
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列中FlexSPI DQS信号引脚配置GPIO方法

    如何禁用i.MX RT1170 MCU中的M4内核?

    如何禁用 i.MX RT1170 MCU 中的 M4 内核? 您能否提供具体的可行方法? 或者是否可以将内核的工作时钟频率降低到 0 ?
    发表于 04-09 07:28

    i.MX RT 1176上正常运行代码时与使用IAR调试代码时存在一些奇怪的差异,为什么?

    我在 i.MX RT 1176 上正常运行代码时的行为与使用 IAR 调试代码时的行为之间存在一些奇怪的差异,并注意到这是由于堆栈指针的初始化方式造成的。 我的重置向量表将其指向 DTC 的顶部
    发表于 03-17 07:26

    NXP i.MX 93 开发板#提供高效的机器学习 支持高能效的边缘计算

    Wi-Fi ^®^ 和蓝牙功能,非常适合工业和物联网应用。其主要功能包括HDMI显示接口、LPDDR4/LPDDR4X存储器、用于快速启动的eMMC存储器、PMIC和扩展选项。该板支持面向i.MX处理器
    的头像 发表于 03-10 15:30 2490次阅读
    NXP <b class='flag-5'>i.MX</b> 93 开发板#提供高效的机器学习 支持高能效的边缘计算

    恩智浦推出FRDM i.MX 93开发板

    备受嵌入式开发者青睐的恩智浦FRDM开发平台,迎来了一位新成员——FRDM i.MX 93开发板,这也是第一块配备i.MX MPU的FRDM开发板,意味着强大的FRDM生态合作体系,已经扩展到i.MX应用处理器。
    的头像 发表于 02-21 14:22 2874次阅读

    i.MX RT处理器上使用PXP实现缩放和旋转组合操作

    本文主要探讨如何使用PXP实现缩放和旋转组合操作,PXP是NXP推出的一个2D图形加速器,主要完成对图像的数据格式转换、固定角度旋转(90°,180°,270°),任意比例缩放、混色,移位以及翻转等功能。运行平台为i.MX RT
    的头像 发表于 02-20 10:53 1568次阅读
    在<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>处理器上使用PXP实现缩放和旋转组合操作

    恩智浦i.MX 94应用处理器如何变革工业和汽车连接

    恩智浦半导体发布i.MX 94系列应用处理器,为工业和汽车连接设定了新的标准。作为i.MX 9系列应用处理器的最新成员,i.MX 94旨在提供高性能和低延迟的实时计算能力,这是工业自动化和汽车信息服务应用的关键功能。
    的头像 发表于 01-17 10:51 1530次阅读

    恩智浦i.MX RT700系列MCU的优势

    作为边缘智能时代的嵌入式工程师,你对一款理想的MCU有何期待?高性能、高集成、低功耗、更安全,以及出众的AI推理能力……恩智浦半导体新近发布的i.MX RT700跨界MCU系列,就是你想要的答案!
    的头像 发表于 12-09 09:16 2923次阅读