在线时间4067 小时
UID3441752
注册时间2017-11-21
NXP金币759439
TA的每日心情 | 开心 2024-3-26 15:16 |
---|
签到天数: 266 天 [LV.8]以坛为家I
管理员
- 积分
- 32012
- 最后登录
- 2024-4-9
|
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全
开篇一张图,清晰明了。
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等。
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文件里,下面我们看一下具体内容。
图中的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设备管理系统可以降低实时运维成本。
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的切换。
三、配置编译mbed Bootloader
请使用mbed cli下载mbed Bootloader并切到master分支:
http://github.com/ARMmbed/mbed-bootloader
i.MX RT1050EVK板卡的配置信息,在configs/internal_flash_no_rot.json文件中。
其中:
·"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进行的分区设计。
编译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文件中。
其中:
·"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加油站
|
|