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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Jaya Kathuria Bindra, 2022-10-17 10:52 次阅读

作者:Jaya Kathuria Bindra,Shriram M

为了在物联网市场取得成功,OEM需要能够以更快的速度拥抱创新。

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

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

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

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

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

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

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

上市时间

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

易用性

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

开发平台

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

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

能够连接到您选择的云

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

担保:不可转让的要素

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

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

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

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

pYYBAGNMxACABknXAACgJNQ-zg8697.png

(图 2.模版工具箱 - 高级概述)

模数工具箱提供了一组称为 AnyCloud 解决方案的软件库,用于快速开发 Wi-Fi 和蓝牙应用程序(参见图 3)。紫色块(如 USB电容感应)表示 MCU 库。绿色块(如 MQTT 和低功耗助手 (LPA))是连接库。这些 MCU 和连接库无缝集成,可实现安全的物联网应用开发。

pYYBAGNMxAmAZBHCAACRebkhdKA491.png

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

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

pYYBAGNMxBKAAFS0AAI_53Xkk7E535.png

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

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

pYYBAGNMxBmAO1LFAAMVsAAXVks077.png

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

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

poYBAGNMxCGAL6zzAAFbCNBZ8_4627.png

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

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

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

poYBAGNMxCmAd-xrAAIO2-JBCqA720.png

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

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

pYYBAGNMxDGAGCbQAAIfAlhnxug753.png

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

poYBAGNMxEGACWmcAAH3H35FylM903.png

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

poYBAGNMxDqAeKdJAAFGsb2ZvZA370.png

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

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

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

审核编辑:郭婷

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

    关注

    4983

    文章

    18295

    浏览量

    288615
  • 物联网
    +关注

    关注

    2870

    文章

    41659

    浏览量

    358432
收藏 人收藏

    评论

    相关推荐

    嵌入式软件开发需要些什么知识?

    嵌入式软件开发需要些什么知识?http://www.arm8.net/thread-510-1-3.html嵌入式软件开发很难,不容易学习。以为他需要学习的知识非常多,而且难,所以如
    发表于 10-14 09:19

    嵌入式软件开发需要学习什么?

    嵌入式软件开发需要学习什么? 嵌入式软件开发,一个发展迅速的行业,不少学者入门的第一个问题肯定是嵌入式
    发表于 01-31 14:45

    诚聘嵌入式软件开发

    猎头职位:嵌入式软件开发【深圳】工作职责:1.TGY电源柜项目软件的编制和调试工作; 2.TGY电源柜老项目的在线维护,软件平台的建立; 3.容量显示仪BMS产品的
    发表于 03-24 10:49

    诚聘嵌入式软件开发

    猎头职位:嵌入式软件开发【成都】工作职责:1.阅读客户或者研发提供的需求,进行需求分析; 2.根据项目需求和研发能力编制研发计划; 3.根据项目需求和所使用的技术编写详细设计说明书;4.根据详细
    发表于 04-24 11:59

    嵌入式联网的硬件设计挑战

    嵌入式系统设计人员在开发嵌入式联网系统时面临着几个灵活性方面的问题,例如:确保新服务顺利整合的问题;难以适应新环境;硬件和
    发表于 08-16 14:28

    嵌入式软件开发与非嵌入式软件开发的区别?

    嵌入式软件开发与非嵌入式软件开发区别?设备驱动开发与裸机驱动开发区别?
    发表于 04-02 06:29

    入门联网嵌入式是关键

    ,面对碎片化极为严重的联网,我们首先要掌握哪些方面?且想要从事物联网开发,是否要必须嵌入式知识基础?
    发表于 07-01 11:15

    入门联网嵌入式是关键

    ,面对碎片化极为严重的联网,我们首先要掌握哪些方面?且想要从事物联网开发,是否要必须嵌入式知识基础?
    发表于 07-18 09:53

    入门联网嵌入式是关键

    ,面对碎片化极为严重的联网,我们首先要掌握哪些方面?且想要从事物联网开发,是否要必须嵌入式知识基础?
    发表于 07-30 10:02

    如何学习嵌入式软件开发

    该不该放弃嵌入式、单片机这条路?如何学习嵌入式软件开发
    发表于 12-24 06:32

    如何学习嵌入式软件开发

    1. 如何学习嵌入式软件开发嵌入式软件开发一定要结合开发板来学习,所有的知识都可以在开发板上
    发表于 02-11 07:33

    嵌入式软件开发

    嵌入式软件开发,小家电,esp32视觉,esp8266联网,各种2G\\4G联网产品
    发表于 09-05 14:13

    ARM嵌入式软件开发

    ARM嵌入式软件开发ARM嵌入式软件开发ARM嵌入式软件开发
    发表于 01-15 17:29 63次下载

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

    然而,为物联网边缘构建强大的产品并非易事。随着物联网世界中越来越多的东西连接到互联网,对联网设备的需求不仅在能够连接到云,而且还可以在边缘处理复杂的计算。
    的头像 发表于 10-21 10:43 454次阅读
    <b class='flag-5'>简化</b><b class='flag-5'>嵌入式</b>物<b class='flag-5'>联网</b>应用的<b class='flag-5'>软件开发</b>

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

    MCU和连接设备是这些基于物联网的产品的核心。为了帮助物联网设计人员设计独特、高效、安全且美观的设备,芯片制造商正在集成更多功能和外设,同时通过机器学习和人工智能等高级功能增强可用的处理能力。这些嵌入式计算和无线设备必须无缝协同
    的头像 发表于 11-22 16:37 445次阅读
    <b class='flag-5'>简化</b><b class='flag-5'>嵌入式</b>物<b class='flag-5'>联网</b>应用的<b class='flag-5'>软件开发</b>