查看: 1729|回复: 0

i.MX RT链接Arm Pelion云

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32012
    最后登录
    2024-4-9
    发表于 2020-5-28 15:38:58 | 显示全部楼层 |阅读模式
    i.MX RT链接Arm Pelion云


    说起Arm的Cortex-M7内核,大家自然想到高性能MCU处理器。2019年,NXP率先发布了基于1GHz的Cortex-M7处理器,成为MCU圈的性能怪兽。

    不过,高性能仅仅是一枚爆款MCU处理器的必备条件之一,易用性、高安全性、丰富的外设、完善的参考设计,都是NXP深思熟虑,精益求精的方向,i.MX RT系列跨界处理器就是其集大成者。这个系列的处理器,天生的适合IoT相关应用,从控制到计算,从网关到云端,可以轻松串起整个IoT云下的世界。
    NXP与Arm携手合作,i.MX RT处理器早已支持mbed OS,并取得mbed Enabled标签认证。现在,i.MX RT1050打通与Arm Pelion云的通道,基于Arm官方mbed代码,可以轻松实现i.MX RT1050与Pelion云的链接,支持设备管理、网络安全、硬件密钥加速,以及OTA等应用。
    1、i.MX RT1050与mbed全
    开篇一张图,清晰明了。
    1.png

    i.MX RT1050的优势非常突出:
    ·高性能:3020 CoreMark/1284 DMIPS @ 600 MHz
    ·高安全性:TRNG, SRTC, eFuse, HAB, DCP等硬件保证信任链根与加解密性能
    ·网络链接:Ethernet以及可扩展WIFI模块的SDIO接口
    ·应有尽有的外部存储
    ·丰富的外设以及MCU级的易用性

    除了NXP官方网站,Arm mbed官网也可以找到对i.MX RT1050及其EVK开发板的详细介绍。
    Arm Mbed Enabled标志,代表i.MX RT1050已经通过mbed自动化测试流程,可以方便的支持mbed系统及其他mbed服务,比如mbed Bootloader, mbed DAPLink等。

    2.png

    Arm mbed项目,是一系列子系统的集合,可以形象的称之为Arm mbed全家桶,主要包括:
    ·mbed OS: MCU RTOS实时操作系统
    ·mbed cli: mbed OS工程构建,管理工具
    ·mbed Bootloader: MCU L2 Bootloader,支持OTA等
    ·mbed DAPLink: MCU调试,下载协议
    ·mbedtls: 用于MCU的开源SSL库
    ·mbed Pelion: Arm IoT Pelion云

    其中,mbed OS是核心,其他应用,如mbed Bootloader、mbed Pelion等,都是以mbed OS为基础构建的,部分基础代码也直接使用mbed OS源文件,编译时也需要包含mbed OS全部文件架构。


    目前,i.MX RT1050已经支持以上所有mbed全家桶系统。从mbed DAPLink的USB拖拽更新image,到mbed Bootloader的OTA,从mbed OS的kvstore,到对文件系统的支持,从硬件DCP模块加速mbedtls加密传输,到mbed Pelion的安全链接。所有代码已经在mbed github仓库中,方便开发者快速参考验证。
    2、mbde配置i.MX RT
    Arm mbed采用JSON文件对系统进行配置,配合mbed命令编译出最终的可执行文件。i.MX RT1050EVK的基础配置信息在mbed OS的targets/targets.json文件里,下面我们看一下具体内容。

    4.png

    图中的JSON数据描述了i.MX RT1050EVK在mbed OS中的定义和配置,以下对关键信息进行解释说明。


    ·"supported_toolchains":支持的编译工具链,i.MX RT1050EVK支持Arm、GCC_ARM和IAR。
    ·"macros":编译时使用的宏定义。其中"HYPERFLASH_BOOT"表示当前选择HyperFlash作为启动Flash,i.MX RT1050EVK同时也支持QSPI Flash,只需进行简单的硬件修改,就可以在不同Flash间进行切换。如果选择QSPI Flash, 编译时只需要删除"HYPERFLASH_BOOT"宏定义。
    ·"components_add":特别模块的支持,目前定义了"FLASHIAP",用于支持对Flash的读写擦除操作。
    ·"bootloader_supported":bootloader的支持选择,目前设置为true,支持bootloader。
    ·"network-default-interface-type:默认网络接口选择,目前设置为"ETHERNET"。


    基于上述配置信息,mbed cli构建与编译工具就能根据要求增删相应模块,创建宏定义,并最终编译出在i.MX RT1050EVK上运行的二进制代码。
    、i.MX RT1050EVK连通Pelion
    Arm Pelion是一个安全,灵活的物联网基础平台,提供链接、设备管理、数据管理等服务。Pelion平台支持任何规模无缝、安全地连接和管理物联网设备和数据,适用于公共云和私有云以及本地混合环境。
    专为物联网构建的mbed OS操作系统集成安全和连接技术,降低开发成本和研发周期, 配合mbed Bootloader, 方便的实现OTA等物联网功能。另外,统一的Pelion设备管理系统可以降低实时运维成本。
    5.png

    NXP i.MX RT1050EVK已经支持链接Arm Pelion物联网云平台。相关代码已经合并到mbed项目主分支。(mbed-os-example-pelion相关代码Pull Request已经验证完毕且提交,等待最新mbed OS版本发布后会被merge到主分支)下面分步骤介绍链接Pelion过程。

    一、mbed开发环境搭建

    基于笔者经验,强烈建议使用mbed cli工具进行开发编译。虽然mbed支持Online Compiler,不过使用体验不佳。同样的,mbed Studio也无法和IAR,MDK等主流IDE工具相比。

    mbed cli是Arm基于Python开发的代码构建,编译工具,可跨平台使用,支持丰富的开发特性。请读者参考以下链接文档,搭建环境。
    http://os.mbed.com/docs/mbed-os/v5.15/tools/developing-mbed-cli.html

    另外,我们还需要注册一个Pelion账户,并申请一个设备API Key用于i.MX RT1050EVK链接Pelion云。
      http://portal.mbedcloud.com/login

    具体操作步骤,请参阅Pelion文档;

    http://www.pelion.com/docs/device-management/current/user-account/api-keys.html#generating-an-api-key


    二、i.MX RT1050EVK板卡准备
    NXP i.MX RT1050EVK开发板支持Hyper Flash与QSPI Flash,板卡上已经有这两个芯片,默认使用Hyper Flash。

    mbed OS中i.MX RT1050EVK代码可以支持这两个芯片,这儿我们使用更常用的QSPI Flash,为此需要对板卡做少许硬件修改。请读者参考i.MX RT1050EVK原理图进行Flash的切换。
    6.png

    三、配置编译mbed Bootloader


    请使用mbed cli下载mbed Bootloader并切到master分支:

    http://github.com/ARMmbed/mbed-bootloader

    i.MX RT1050EVK板卡的配置信息,在configs/internal_flash_no_rot.json文件中。

    7.png

    其中:

    ·"target.macros_remove"删除了默认的"HYPERFLASH_BOOT",板卡将使用QSPI Flash。
    ·"mbed-bootloader.application-start-address"定义了当前application可执行文件在QSPI Flash中的地址。
    ·"update-client.storage-address"定义了OTA时更新来的application可执行文件在QSPI Flash中的地址。

    其他参数的定义请读者参照mbed文档说明。

    当然,这儿必须展示一下我们对8MB QSPI Flash进行的分区设计。

    8.png

    编译mbed Bootloader并获取可执行文件:
    mbed compile -m MIMXRT1050_EVK -t GCC_ARM --app-config=configs/internal_flash_no_rot.json

    编译成功,在BUILD/MIMXRT1050_EVK/GCC_ARM/下可以看到mbed-bootloader.bin可执行文件。
    下一步,我们需要把这个可执行文件放到Pelion的代码中,与application一起编译。

    四、配置编译mbed Pelion应用

    请使用mbed cli下载mbed Pelion应用并切到master分支:

    http://github.com/ARMmbed/mbed-os-example-pelion

    如有必要,需要merge以下Pull Request:

    http://github.com/ARMmbed/mbed-os-example-pelion/pull/123

    i.MX RT1050EVK板卡的配置信息,在mbed_app.json文件中。

    9.png

    其中:

    ·"target.macros_remove"删除了默认的"HYPERFLASH_BOOT",板卡将使用QSPI Flash。
    ·"target.network-default-interface-type"指出了程序将使用RJ45 Ethernet口链接网络。
    ·"target.bootloader_img"指定了包含的mbed Bootloader image的位置。您猜的没错,我们需要把第3步中编译的Bootloader image拷贝到mbed-os-example-pelion/bootloader文件夹下,并且修改名称与这个宏的定义保持一直致。

    其他参数的定义请读者参照mbed文档说明。
    然后按照文档说明编译mbed-os-example-pelion:
    mbed config -G CLOUD_SDK_API_KEY xxxxxx

    mbed device-management init -d nxp.com --model-name example-app --force -q

    mbed compile -m MIMXRT1050_EVK -t GCC_ARM

    编译成功,在BUILD/MIMXRT1050_EVK/GCC_ARM/下可以看到mbed-os-example-pelion.bin可执行文件。此文件包含了mbed Bootloader与Pelion application,可以直接通过USB拖拽功能烧写到i.MX RT1050EVK板卡中。

    之后板卡上电,可以在串口终端看到代码执行log,并在Pelion云平台看到设备状态为online。利用mbed cli命令,也可以测试执行OTA功能。

    结语

    正如您所看到的,当前NXP有37款平台支持Arm mbed系统,很多mbed用例也是基于NXP平台进行展示。i.MX RT系列处理器与mbed系统在性能,安全性,易用性方面有天然的默契,配合天衣无缝。
    我们也正努力把更多i.MX RT处理器推向mbed系统,给客户提供更多的选择,与mbed系统一起,为您的产品设计、生产、运营提供完整的服务。





    文章出处:恩智浦MCU加油站



    签到签到
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-23 14:41 , Processed in 0.110527 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表