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

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

3天内不再提示

简化嵌入式物联网应用的软件开发

星星科技指导员 来源:嵌入式计算设计 作者:Jaya Kathuria Bindra, 2022-11-22 16:37 次阅读

作者:Jaya Kathuria Bindra,Shriram M

为了在物联网市场取得成功,原始设备制造商需要能够以更快的速度拥抱创新。

然而,为物联网边缘构建强大的产品并非易事。随着物联网世界中越来越多的事物连接到互联网,对联网设备的需求不仅能够连接到云,而且还可以在边缘处理复杂的计算。

OEM 不断寻找新的、更有用的方法来利用传感器的功能、监控数据类型、处理信息、连接到云以及控制设备的生态系统。物联网应用的可能范围是无穷无尽的,从家庭、汽车、可穿戴设备、工业智能城市。

MCU和连接设备是这些基于物联网的产品的核心。为了帮助物联网设计人员设计独特、高效、安全且美观的设备,芯片制造商正在集成更多功能和外设,同时通过机器学习人工智能等高级功能增强可用的处理能力。这些嵌入式计算和无线设备必须无缝协同工作,以降低设计复杂性。

通过现代软件套件,可以隐藏或抽象复杂性,并为物联网设计人员开发其应用程序提供简单、安全和直观的平台,从而最大限度地降低这种复杂性。这些专门设计的软件环境处理硬件配置,并允许跨多个设备、各种平台和网络轻松连接,以创建一个通信网络,彻底改变我们在这个数字世界中智能交互的方式。

本文将详细探讨这些挑战,并解释直观的软件环境如何补充优化的物联网硬件,为以更快的速度开发智能物联网解决方案提供完整强大的安全平台。作为说明,我们将以低功耗物联网设备为例,使用 MQTT 协议安全地连接到云。

设计嵌入式物联网系统的挑战

让我们首先了解设计物联网应用程序的挑战,然后探索现代软件如何帮助物联网设计师克服这些挑战。

上市时间

每年连接到互联网的设备数量正以指数级的速度增长。为了跟上竞争的步伐,上市时间是关键。但是,软件对开发时间和成本有重大影响。选择合适的软件和工具可以简单而加快开发速度,从而显著缩短生产时间。由于构建实际物联网应用程序涉及大量协议,因此该软件还需要处理各种协议的底层复杂性,以帮助应用程序在物联网世界中无缝交互。为了防止这些协议和不断的变化消耗设计人员的资源,软件需要将应用程序与硬件更改隔离开来。

易用性

为了支持物联网应用的复杂计算需求,MCU变得更加复杂,以提供更高的处理能力、安全性和智能逻辑。它们还必须提供许多外围设备以支持其他功能,如音频、与外部存储器接口电机控制等。除此之外,MCU还有一个额外的任务来管理无线系统。在一个保护伞下同时支持嵌入式和无线系统的软件工具可以节省宝贵的开发时间并增强用户友好性。这些工具面临的最大挑战不仅是隐藏硬件复杂性,而且还要提供一个易于使用的基于 GUI 的开发平台。为了实现这一目标,开发平台通常提供许多基于 GUI 的工具和配置器来执行应用程序开发中涉及的大多数任务——项目创建、导入库、配置外围设备等。基于 GUI 的配置的基础代码是自动生成的,并与项目一起构建,以便设计人员能够以最少的编码工作开发应用程序。

开发平台

物联网开发工具 - 构建物联网应用程序需要完整的软件开发套件。这些软件工具包括集成开发环境 (IDE)、命令行界面 (CLI)、软件开发工具包 (SDK) 以及为 IoT 开发人员量身定制的库或 API。这些软件开发工具可以在物联网开发平台之上使用,也可以与它们结合使用。简单直观的开发平台为物联网开发人员提供了灵活性,因为它提供了完全使用供应商的IDE和工具进行开发的选项,或者在自己选择的任何其他IDE上开发应用程序,如IAR嵌入式工作台,Arm 微控制器开发工具包和Microsoft Visual Studio Code以及供应商提供的工具。这些平台还提供文档齐全的模板应用程序,使开发人员能够快速启动并加速应用程序开发。

操作系统的选择 - 物联网包括从小型传感器到机器人等复杂系统的各种设备。为物联网系统选择操作环境是影响固件开发方法的关键任务之一。IoT 操作系统的重要要求包括优化的内存占用、能效、集成安全性、连接功能、与硬件无关的操作和实时处理功能。物联网操作环境的范围从裸机到嵌入式操作系统,再到满足物联网应用不同要求的全功能操作系统。嵌入式物联网应用有许多开发平台可供选择,包括Mbed OS和Amazon FreeRTOS,仅举两例。除了这些平台之外,嵌入式和连接设备供应商有时会提供额外的库来支持定制的物联网功能。这些库/平台补充了开发操作系统,在直观的物联网开发环境中提供嵌入式和无线功能。设备供应商提供的功能丰富的库与基于应用选择的操作系统的无缝结合,为物联网开发人员提供了全面的物联网解决方案开发平台。

能够连接到您选择的云

随着越来越多的嵌入式设备连接,有许多云服务可用。任何计划开发实际物联网应用程序的人都可以为各种任务选择云服务组合。因此,嵌入式软件必须高度灵活,以支持各种云服务(AWS,Azure,AliOS等)和平台。软件必须让开发人员按照自己的方式设计系统,而不是将他们限制在某些选项上。独立于硬件的软件架构是解决此问题的关键,提供此功能的软件生态系统为用户提供了极大的灵活性。

安全性:不可协商的要素

连接设备后,就会引入被黑客入侵的可能性。因此,物联网设备的安全性是一个不可协商的元素,无论设备是个人可穿戴设备还是联网汽车。所有级别都需要数据保护,包括存储、处理和通信期间,以确保系统可靠性。为物联网应用设计的硬件需要具备开发安全可靠应用所需的所有元素。除了硬件安全之外,软件还需要补充这些硬件安全元素。还需要以与应用程序的处理和成本要求相匹配的方式集成安全性。

应对嵌入式物联网系统中的挑战

让我们以基于 MQTT 的低功耗嵌入式物联网应用为例,更深入地讨论上述概念。MQTT是嵌入式系统用来连接物联网世界的流行通信协议。在典型的物联网系统中,嵌入式设备收集各种传感器数据,对其进行处理,并使用MQTT协议将信息传达给远程云系统。

要构建这样的应用,您需要一个专为物联网应用而设计的超低功耗微控制器(例如PSoC 6MCU)和低功耗无线连接设备(例如CYW43012Wi-Fi/BT组合设备)。为了高效开发,需要一个能够同时开发和调试这些嵌入式和无线设备的软件平台,例如ModusToolbox。ModusToolbox是一个完整的嵌入式和物联网应用开发系统。图 2 概述了 ModusToolbox。它为物联网开发人员提供基于 GUI 的工具、固件、中间件、API 和文档。借助 GitHub 中提供的板级支持包 (BSP)、中间件库和模板应用程序,开发人员可以直接访问所需的资源。此外,在ModusToolbox中创建的项目可以导出到其他IDE,如IAR Embedded Workbench,Arm Microcontroller Development Kit和Microsoft Visual Studio Code。可以在这些环境中继续进一步开发,同时在用户首选编译器工具链(如 GCC、ARM、IAR)的帮助下构建项目,如图 2 中的白框突出显示所示。

poYBAGN8iqWATBl7AAHhe9i6PYk565.png

(图2.ModusToolbox - 一个高级概述)

ModusToolbox提供了一系列软件库,称为AnyCloud解决方案,用于快速开发Wi-Fi和蓝牙应用程序(见图3)。紫色的块,如USB和CapSense代表MCU库。绿色块(如 MQTT 和低功耗助手 (LPA)是连接库。这些 MCU 和连接库无缝集成,以实现安全的物联网应用开发。

poYBAGN8iquABWdXAACStOfASic474.png

(图3.任意云软件堆栈)

对于 MQTT 应用程序,AnyCloud 提供了一个隐藏各种复杂性的单一软件环境,例如处理网络连接、IP 地址更改等的 Wi-Fi 连接管理;网络套接字创建;传输层安全性 (TLS) 等等。它为用户提供了根据自己的风格开发应用程序的灵活性。要开发基于 MQTT 的物联网系统,物联网设计人员可以从现有的 MQTT 应用程序开始,该应用程序可作为项目创建者 GUI 工具中所需设备的模板应用程序的一部分使用(参见图 4)。

poYBAGN8irWAX62nAAI_n0zxOps445.png

(图4.使用模板应用程序创建物联网项目)

拥有现有项目并需要将 MQTT 添加到其应用程序的物联网开发人员可以使用库管理器来执行此操作。库管理器管理和导入应用程序使用的库,并处理所选库具有的依赖项。它还以递归方式导入顶级应用程序所需的所有库。对于这个低功耗 IoT 项目,IoT 设计人员将启用“mqtt”库,库管理器会自动拉入所有依赖项,如下图 5 所示。

poYBAGN8iryAbOdzAAMV0e4o6PE125.png

(图5.将 MQTT 功能添加到现有项目)

导入 MQTT 包后,IoT 设计人员可以使用随 MQTT 模板应用程序和 MQTT 库提供的非常详细的自述文件获取更多信息来启动应用程序开发。图 6 显示了各个 README 文件的一部分,这些文件可帮助 IoT 设计人员入门并针对所需的开发流程运行其应用程序。

poYBAGN8isiAOBeIAAFa9VQqpds101.png

(图6.用于快速启动物联网软件的详细自述文件)

一旦 MQTT 实施,物联网开发人员的主要关注点通常是低功耗。节能物联网系统的一个关键特征是“卸载”。主机卸载使主机 PSoC 6 MCU 能够长时间进入深度睡眠状态,同时无线设备代表 MCU 主机处理任务,例如 ARP 请求、TCP 保持连接等。主机卸载在优化主机功耗方面起着关键作用。此外,这些卸载使主机 CPU 能够腾出时间执行其他更强大的任务,例如音频或传感器数据处理。这反过来又提高了整体系统效率和功耗。在现实世界的物联网系统中配置这些卸载将是一项复杂的任务。借助集成了MCU和无线设计的工具环境,可以减少开发时间和工作量。

例如,ModusToolbox 附带的“低功耗助手”(LPA) 配置器工具使开发人员能够通过启用复选框并选择必要的配置来配置低功耗卸载,如图 7 所示。该工具根据应用程序的这些配置设置自动生成源代码。

pYYBAGN8iu6AOQvGAAIReaVN-BQ231.png

(图7.低功耗助手 (LPA) 工具)

此外,为了配置MCU的各种引脚、外设和时钟,需要编写大量代码。配置器提供了一种使用 GUI 执行此类任务的简单方法,从而消除了开发人员手动编写这些任务的时间。配置器还可以帮助完成各种 MCU 相关设置,如 GPIO 引脚设置、外设配置、模拟路由、系统设置、时钟树设置和 DMA 路由。图 8 显示了其中的一些配置器:GPIO 引脚配置、外设配置和时钟设置。项目创建器、库管理器、USB 配置器、设备固件更新主机、蓝牙配置器和分段 LCD 配置器等工具也显著减少了物联网开发人员的开发时间和工作量。

pYYBAGN8iuWACGVHAAIh4kF4lAo920.png

(图8.(a) 引脚配置器 GUI 工具)

poYBAGN8ityATQuzAAH3GAaKNHQ676.png

(图8.(b) 外设配置器 GUI 工具)

poYBAGN8itWAZW_bAAFFLDAmgnc132.png

(图8.(c) 系统时钟配置器 GUI 工具)

某些应用程序在开发中需要更大的灵活性来自定义设置。GUI 工具所做的配置可以在需要时通过手动编码覆盖。此外,更灵活的开发平台提供了可与许多第三方 IDE 集成的构建系统,高级用户也可以使用 CLI 工具。拥有如此强大而灵活的开发平台可以加快生产时间并大大提高效率。

随着许多云服务和平台的可用性,OEM 需要灵活并能够快速适应创新。灵活性的一个关键要素是使用开发工具进行设计,这些工具可以适应各种物联网平台并支持广泛的生态系统。在本文中,我们探讨了设计物联网系统最重要的挑战,以及软件工具如何通过隐藏物联网架构所需的底层复杂性来简化设计复杂性。这些软件平台还为高级开发人员提供了灵活性,以定制物联网系统的大部分设计方面。这是通过在硬件和软件堆栈中主动无缝集成嵌入式和连接设备来实现的。MCU和无线设备的这种集成是紧凑,超低功耗和强大系统的基础,可满足蓬勃发展/不断增长的物联网市场的需求。

审核编辑:郭婷

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

    关注

    2550

    文章

    51042

    浏览量

    753105
  • 嵌入式
    +关注

    关注

    5082

    文章

    19109

    浏览量

    304836
  • 物联网
    +关注

    关注

    2909

    文章

    44571

    浏览量

    372838
收藏 人收藏

    评论

    相关推荐

    三大嵌入式软件开发趋势

    1 产业背景 2024年2月IDC发布的数据显示,2023年中国联网(IoT)连接量超66亿个,未来5年复合增长率约16.4%[1]。随着联网设备数量的增加和应用场景的扩展,
    的头像 发表于 12-16 16:00 333次阅读
    三大<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>趋势

    一文了解嵌入式软件开发的对象

    以前应用场景很单一,嵌入式开发可能谈不上面向对象开发。但现在,做嵌入式开发,没有面向对象开发,你就有点落伍了。 本文结合个人经验和周立功《抽象接口技术和组件
    的头像 发表于 11-15 10:31 326次阅读
    一文了解<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>的对象

    嵌入式系统与联网的结合

    随着科技的飞速发展,嵌入式系统和联网(IoT)已经成为现代技术领域的重要组成部分。嵌入式系统是指嵌入到设备或系统中的专用计算机系统,而
    的头像 发表于 11-06 10:23 286次阅读

    你认为嵌入式软件开发的尽头是什么?

    嵌入式软件开发的“尽头”是一个富有哲理且多维度的概念,因为它不仅关乎技术发展的极限,还涉及到行业应用、市场需求、技术融合与创新等多个方面。从几个不同的视角来看
    的头像 发表于 09-18 09:42 462次阅读
    你认为<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>的尽头是什么?

    EsDA,一站嵌入式软件

    ,旨在提高嵌入式软件开发的效率、性能和可扩展性。EsDA全称是嵌入式系统设计自动化,它是一个由AWorksLP、AWStudio、AXPI、AWTK、ZWS等多种软件
    的头像 发表于 09-15 08:10 280次阅读
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>

    节点、跨平台开发,AWFlow让嵌入式开发变得更简单

    国产化趋势对嵌入式软件开发构成挑战,导致软件移植和适配需求激增,影响开发效率。AWFlow软件通过节点化和跨平台
    的头像 发表于 08-02 08:25 361次阅读
    节点<b class='flag-5'>式</b>、跨平台<b class='flag-5'>开发</b>,AWFlow让<b class='flag-5'>嵌入式开发</b>变得更简单

    嵌入式软件开发与AI整合

    嵌入式软件开发与AI整合是当前技术发展的重要趋势之一。随着人工智能技术的快速发展,嵌入式系统越来越多地集成了AI算法,以实现更复杂的智能功能。以下是关于嵌入式
    的头像 发表于 07-31 09:25 698次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>与AI整合

    嵌入式软件开发招聘

    本帖最后由 jf_19082533 于 2024-7-26 13:56 编辑 寻求:嵌入式软件工程师 要求:3年以上开发经验,音视频领域应用层开发 地址:北京市昌平区 邮箱:10
    发表于 07-26 13:44

    AMD Vitis™ Embedded嵌入式软件开发套件的功能和特性概述

    Vitis Embedded 是一款独立的嵌入式软件开发套件,主要用于为 AMD 自适应 SoC 和 FPGA 中的 AMD 嵌入式处理子系统(基于 ARM 的子系统和 AMD MicroBlaze)
    的头像 发表于 04-08 10:50 920次阅读
    AMD Vitis™ Embedded<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>套件的功能和特性概述

    嵌入式人工智能的就业方向有哪些?

    的发展方向有很多,门槛高低不一样。下面给大家列举一些相应岗位所需具备的技能: 一:嵌入式Linux,C语言开发工程师,Linux软件开发工程师 LinuxC语言开发 LinuxC语言
    发表于 02-26 10:17

    嵌入式软件设计的原则分享

    嵌入式软件开发如果具有更好的阅读性、扩展性以及维护性,就需要考虑很多因素。今天给大家分享几个嵌入式软件设计的原则。
    发表于 02-25 10:54 679次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>设计的原则分享

    嵌入式软件开发应该掌握哪些知识?

    嵌入式软件开发应该掌握哪些知识? 一、 什么是嵌入式软件嵌入式软件通常是指
    发表于 02-19 11:23

    嵌入式学习步骤

    嵌入式行业是一个涉及广泛领域的行业,嵌入式联网、人工智能、智能与科学、电子信息工程、通信工程、自动化工程、测控、计算机科学等专业在嵌入式
    发表于 02-02 15:24

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发
    的头像 发表于 01-22 15:27 2277次阅读

    基于功能安全的汽车嵌入式软件单元验证技术研究

    随着汽车嵌入式软件功能的不断叠加,软件复杂性不断提升,对汽车嵌入式软件的安全性提出了更高要求,基于功能安全的
    的头像 发表于 01-07 11:27 1047次阅读
    基于功能安全的汽车<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>单元验证技术研究