用于装置设计的代码模块选择

文档序号:1327705 发布日期:2020-07-14 浏览:3次 >En<

阅读说明:本技术 用于装置设计的代码模块选择 (Code module selection for device design ) 是由 R·D·杨 S·克里希那穆里 R·P·科克伦 R·巴里 于 2018-11-05 设计创作,主要内容包括:描述了一种用于提供代码模块来构建装置的技术。可以接收要在设计装置时使用的硬件部件的指示。可以接收所述装置的用例。可以提供与所述硬件部件兼容的代码模块列表。所述代码模块列表可以基于所述装置的所述用例。可以接收来自与所述硬件部件兼容的代码模块列表的代码模块的选择。可以提供所述代码模块用于设计所述装置。(Techniques for providing code modules to construct an apparatus are described. An indication of hardware components to be used in designing the apparatus may be received. A use case for the apparatus may be received. A list of code modules may be provided that are compatible with the hardware component. The list of code modules may be based on the use case of the apparatus. A selection of a code module from a list of code modules compatible with the hardware component may be received. The code means may be provided for designing the apparatus.)

具体实施方式

描述了一种用于提供用于装置(诸如IoT装置)的代码模块的技术。可以在装置的设计过程期间为所述装置选择代码模块。代码模块(例如,软件模块、程序模块、功能模块、可执行部分)可以对应于要包含在装置中的硬件部件。在选择之后,可以将代码模块发送到装置(例如,在装置图像中)并安装在装置上。代码模块可以使包含在装置中的硬件部件能够正确地运作。在一个示例中,代码模块可以使装置中的硬件部件能够正确地与实时操作系统(RTOS)或在装置上执行的另一类型的嵌入式操作系统接口连接。

在一个配置中,装置配置服务可以从硬件部件列表中确定要包含在装置图像中的硬件部件,并且硬件部件可以包含在正在设计的装置中。可用于装置配置服务的每个硬件部件可以由批准机关(例如,计算服务提供商)认证并给予预先批准,并且未经认证的硬件部件可能不能由装置配置服务选择。经认证的硬件部件可被认证为具有可从装置配置服务加载的适当代码模块。硬件部件可以包含微控制器、数字信号处理(DSP)芯片、传感器、收发器、相机、麦克风、扬声器等。在一个示例中,装置配置服务可以经由可经由服务提供商环境访问的用户界面提供硬件部件列表,所述用户界面使得用户能够选择将被包含在装置中的硬件部件。因此,装置配置服务可以用于基于经由用户界面接收的用户选择来确定硬件部件。

可选地,装置配置服务可以经由用户界面接收装置的装置能力定义,并且装置能力定义可以描述装置的用例。装置的用例可以是恒温器、雨量传感器、视频流、图像捕获、运动感测等。基于装置能力定义,装置配置服务可以推荐要包含在装置中的硬件部件(例如,视频编码器、高清晰度(HD)相机、温度传感器等)。

在一个配置中,装置配置服务可以提供与所选择的硬件部件兼容的代码模块列表。代码模块列表可以基于装置能力定义而产生。可以经由使用户能够选择代码模块的用户界面来提供代码模块列表。可用于装置配置服务的每一个代码模块可以被认证为与特定硬件部件兼容。此外,经认证的特定代码模块可能与单独的硬件部件兼容,并且可能与具有相同功能性的不同硬件部件(例如,另一型号类型或另一制造商的硬件部件)不兼容。代码模块可以包含微控制器模块、数字信号处理(DSP)模块、传感器模块、收发器模块、相机模块、麦克风模块、扬声器模块等。代码模块可以包含固件、装置驱动程序、可执行代码、库、配置文件等。在替代性配置中,装置配置服务可以基于所选择的硬件部件来自动地检测代码模块。

在一个配置中,装置配置服务可以提供所选择的经认证的代码模块用于下载到装置上。例如,装置配置服务可以将代码模块提供到用户计算装置。用户计算装置可以组装代码模块以产生可以安装在装置上的装置图像。装置图像可以是包含代码模块的计算机文件或图像(代码模块对应于包含在装置中的硬件部件)。装置图像的安装可以向装置提供与装置硬件相对应的装置功能性,诸如连接到服务提供商环境中运行的服务(例如,连接到IoT服务的无线联网功能性)的能力。可选地,装置图像的安装可以使装置能够连接到本地无线网络中的计算集线器,并且计算集线器可以连接到在服务提供商环境中运行的服务。

图1A示出用于提供用于设计装置130(例如,IoT装置)的代码模块114的示例性系统和相关操作。可以从在服务提供商环境100中操作的装置配置服务110来提供代码模块114。装置配置服务110可以提供用于使用硬件部件136和代码模块114(例如,软件模块、程序模块、功能模块、可执行模块)作为设计过程的可选元素来设计和配置装置130的平台。装置配置服务110可以与用户计算装置120通信,以便呈现从装置配置服务110接收的用户界面122(例如,基于浏览器的界面中的装置配置用户界面)。可选地,装置配置服务110可以与用户计算装置120上加载的应用通信,并且所述应用可以呈现从装置配置服务110接收的用户界面122。

装置配置服务110可以基于经由用户界面122从用户计算装置120接收的输入来为装置130提供代码模块114。用户计算装置120可以经由有线或无线连接而连接到装置130。装置130可以被配置成执行实时操作系统(RTOS)132(例如,自由RTOS)或另一类型的嵌入式操作系统。RTOS 132可以管理硬件资源、托管应用并以减少的缓冲延迟实时处理传入的数据。另外,装置130可以包含硬件部件136,其可以基于从装置配置服务110接收的代码模块114来进行配置,并且代码模块114可以与在装置130上运行的RTOS 132兼容。

在一个配置中,装置配置服务110可以提供在设计和构建装置130时可用的硬件部件列表112。装置配置服务110可以经由用户界面122向用户计算装置120提供硬件部件列表112。硬件部件列表112可以包含各种类型的微控制器、传感器、收发器、相机、麦克风、扬声器、I/O接口(例如,USB控制器)、装置外围设备等,它们在设计和构建装置130时是可用的。

在一个示例中,装置配置服务110可以基于经由用户界面122接收的准则(例如,关键字搜索或装置类型)来过滤硬件部件列表112。例如,装置配置服务110可以基于经由用户界面122接收的反馈来提供硬件部件列表,诸如:具有限定的存储器和/或处理器能力的微控制器、某些类型的传感器(例如,环境光传感器)、或者捕获特定分辨率的高清晰度(HD)图像的相机类型等。装置配置服务110可以以定义的格式(例如,表格格式或列表格式)提供硬件部件列表112,这使得用户能够比较各种类型的硬件部件136。

在一个示例中,配置服务110可以基于由装置能力定义指定的装置的用例来过滤硬件部件列表112。例如,用户可以经由用户界面122定义装置130的装置能力定义,并且装置能力定义可以对应于正在设计和构建的装置130的既定用例。因此可以基于装置能力定义来过滤呈现给用户界面122的硬件部件列表112。

可选地,装置配置服务110可以不过滤经由用户界面122呈现给用户计算装置120的硬件部件列表112。换句话说,装置配置服务110可以提供装置配置服务110所支持的所有硬件部件列表112。

在一个示例中,装置配置服务110可以接收来自硬件部件列表112的硬件部件136的选择。装置配置服务110可以经由用户界面122接收来自用户计算装置120的选择。所选择的硬件部件136可以指示预期使用的硬件部件136或正用以构建装置130的硬件部件。

在一个示例中,所选择的硬件部件136可以对应于装置能力定义所指定的装置130的用例。换句话说,取决于装置130的目的或目标(例如,视频流、工厂监测),如装置能力定义中所指示,可以经由用户界面122来为装置130选择或识别适当的硬件部件136(例如,用于编码视频的硬件编码器、温度传感器、环境光传感器)。因此,用户可以取决于正被设计和构建的装置130的类型来选择适当的硬件部件136。

在一个示例中,装置配置服务110可以提供与所选择的硬件部件136兼容的代码模块列表114。基于硬件部件136的选择,装置配置服务110可以识别对应于装置130的所选择硬件部件136的代码模块114。装置配置服务110可以经由用户界面122向用户计算装置120提供代码模块列表114。代码模块114可以包含微控制器模块、传感器模块、收发器模块、无线通信模块(例如,蓝牙和Wi-Fi)、消息传递模块(例如,消息队列遥测传送(MQTT)、传输控制协议和因特网协议(TCP/IP)、超文本传送协议(HTTP))相机模块、麦克风模块、扬声器模块等。代码模块114可以包含固件、装置驱动程序、可执行代码、库、配置文件、操作系统等。每一个代码模块114可以链接到相应的硬件部件136(例如,可以存在一个或多个代码模块114可用于特定的硬件部件136),且代码模块114可以配置相应的硬件部件136以在装置130中操作。装置配置服务110可以确保经由用户界面122提供用于呈现的代码模块114彼此兼容。

在一个示例中,经由用户界面122提供给用户计算装置120的代码模块114的列表可以取决于装置130的用例,如装置能力定义中所指示。例如,可以基于装置130的用例来过滤代码模块114的列表。另外,装置配置服务110可以提供代码模块114的上下文信息。例如,装置配置服务110可以为每一个代码模块114提供关于芯片组上使用的存储量的信息。这可以允许设计者确定代码模块114是否适合装置图像大小的约束。在一个示例中,装置配置服务110可以为用户创建包含用户所使用的代码模块114的修正控制系统储存库(诸如Git储存库),并且修正控制系统储存库可以被克隆或复制以允许包含在修正控制系统储存库中的代码模块114可被其他用户访问。

在一个示例中,装置配置服务110可以接收来自代码模块114列表的代码模块114的选择。另外,装置配置服务110可以基于装置130的用例来识别用于所选择的代码模块114的一组配置参数115。例如,基于装置能力定义所指定的用例,装置配置服务110可以推荐用于所选择的代码模块114的某些配置参数115。推荐的配置参数115可以与针对装置130选择的特定硬件部件136和代码模块114相关联。配置服务110可以经由用户界面122接收来自用户计算装置120的某些配置参数115的选择。因此,代码模块114可以取决于装置130的用例而被配置有某些配置参数115,而非仅仅选择用于装置130的代码模块114。

作为示例,客户可以向装置配置服务110提供被配置成与服务提供商环境100中托管的应用通信的网络连接恒温器装置的通用规范。客户提供的规范可以用于识别可用于网络连接恒温器装置的硬件部件136,诸如微控制器和与微控制器兼容的RTOS 132,以及温度传感器和联网装置。

在一个示例中,装置配置服务110可以向用户计算装置120提供代码模块114和配置参数115。正使用用户计算机装置120的开发者可以提供用于装置130的额外定制代码,并且定制代码可以被添加到代码模块114和配置参数115。然后,用户计算装置120可以将选择的代码模块114与选择的配置参数115进行组装以产生装置图像116。用户计算装置120可以组装(例如,编译、链接或组合)选择的代码模块114和选择的配置参数115,以使用在用户计算装置120上运行的集成开发环境(IDE)来产生装置图像116。装置图像116可以是具有选择的代码模块114和配置参数115的计算机文件(例如,数字图像、安装图像或压缩文件,诸如ZIP文件或一组文件)。在组装或编译之后,装置图像116可以经由有线或无线连接从用户计算装置120传输到装置130。可以利用装置图像116来安装软件部件,并将选择的硬件部件136配置在装置130中。例如,基于装置图像116,硬件部件136可以被配置成与在装置130上运行的RTOS 132接口连接。装置图像116可以是基础构建包或安装包,以便为在装置130上运行的硬件部件136和RTOS 132提供核心功能性。因此,在装置图像116被加载到装置130上之后,在用户计算装置120上运行的IDE可以被用来开发额外的定制代码,所述代码链接到将由装置130执行的特定功能或操作。

在一个示例中,装置配置服务110可以基于芯片组来确定装置130的可选配置。取决于为装置130选择的硬件部件136,装置配置服务110可以选择适当的软件来使硬件部件136在装置130中可操作。装置配置服务110可以提供完全模块化的可下载软件栈,其中根据需要为硬件部件136构成适当的软件。

在一个示例中,在用户计算装置120上运行的IDE可以用以开发或并入尚未被装置配置服务110认证的额外代码模块。在此示例中,IDE可以用以为额外代码模块创建(即,允许编程)垫片层,这可以使得额外代码模块与在装置130上运行的RTOS兼容。

另外,装置配置服务110可以提供用于提交代码模块的开放源平台,然后可以对其进行测试和认证。这些代码模块可以对照由装置配置服务110提供的现有代码模块来测试(例如,新创建的垫片界面可以由装置配置服务110测试)。在被认证之后,这些代码模块可以由装置配置服务110提供给正在设计和构建装置130的其他客户。

图1B示出用于在服务提供商环境100中经由装置图像构建服务140提供用于构建装置130的装置图像116的示例性系统和相关操作。例如,装置配置服务110可以接收来自硬件部件列表112的硬件部件的选择。装置配置服务110可以接收代码模块114和配置参数115的选择。可以将代码模块114和配置参数115提供到装置图像构建服务140,从而可以产生装置图像116。可以将装置图像142提供到用户计算装置120。用户计算装置120可以将装置图像116发送到装置130,且可以将装置图像116安装在装置130上。可选地,可以从装置图像构建服务140将装置图像142直接提供到装置130。

在过去的解决方案中,装置开发者(例如,IoT装置开发者)可能会花费过多的时间量来设计和构建装置以及用于操作装置的软件层。例如,装置开发者可以典型地花费3至6个月来编写要用于装置中的芯片组的代码。装置开发者可能必须查阅单独的硬件规范文档,这取决于装置中实施的硬件部件。然后,在设计和构建装置时,装置开发者可能会花费额外的时间来确保各种硬件部件之间的兼容性。大体来说,装置开发者将花费过多的时间量来获得基本功能性(例如,存储器分配、CPU调度、基础外围设备(例如,USB、相机等)),其中不包含根据装置的目的或目标而开发定制功能所花费的时间。结果,在过去的解决方案中,装置开发是繁琐的,并且涉及增加的时间量和资源。

另外,在过去的解决方案中,当在新版本装置中使用不同的硬件部件时,必须手动重写用于装置中的芯片组的代码。例如,当硬件部件供应商改变并且因此将在新版本的装置中使用不同的硬件部件时(即使装置的功能性在装置的各种版本之间保持相同),将必须手动重写装置中的代码以适应新的硬件部件,这将使得装置开发过程过度繁琐。

在本技术中,装置配置服务或装置开发者可以从硬件部件列表中选择。硬件部件可以先前由装置配置服务批准。装置配置服务或装置开发者可以从与硬件部件兼容的代码模块列表中选择,并且可以针对装置的用例定制代码模块列表。例如,装置开发者可以取决于与所选硬件部件的兼容性以及正在开发的装置的用例而经由用户界面选择代码模块。每一个代码模块可以包含链接到特定硬件部件的代码。在选择了代码模块之后,可以产生包含代码模块的装置图像,并且然后可以下载装置图像并将其安装在装置上。因此,装置开发者可以避免为装置中的每一个硬件部件手动地编写代码。相反,装置开发者可以从批准的硬件部件列表中选择硬件部件,并且然后自动地获得对应于这些硬件部件的代码模块。因此,装置开发过程可以被简化并且涉及减少的时间量。

图2示出在服务提供商环境200中的本技术的示例部件。服务提供商环境200可以操作装置配置服务210。装置配置服务210可以利用一个或多个计算实例220和数据存储区240来提供用于装置280(例如,IoT装置)的代码模块244。装置配置服务210可以提供代码模块244用于经由用户计算装置270来下载并安装在装置280上。装置配置服务210可以通过网络260与用户计算装置270通信。用户计算装置270可以包含使用户能够选择用于装置280上的各种代码模块244和配置参数246的用户界面272。

在一个示例中,数据存储区240可以包含硬件部件列表242。硬件部件列表242可以包含由装置配置服务210提供的硬件部件282,并且可以在设计和构建装置280时使用这些硬件部件282。例如,硬件部件282可以包含相应代码模块已经被装置配置服务210测试和认证的硬件部件。硬件部件列表242可以不包含相应代码模块尚未被装置配置服务210测试和认证的硬件部件。硬件部件列表242可以包含在设计装置280时可以使用的各类硬件部件282。例如,硬件部件列表242可以包含无线通信部件,诸如Wi-Fi芯片组、超低功率Wi-Fi芯片组、蓝牙芯片组、蓝牙低功耗(BLE)芯片组、ZigBee芯片组或长期演进(LTE)芯片组。硬件部件列表242可以包含各种类型的嵌入式微控制器和片上系统(SoC),具有不同级别的处理和存储能力。硬件部件列表242可以包含各种类型的传感器,诸如温度传感器、接近传感器、位置传感器、光传感器、水分/湿度传感器、运动传感器、加速度和定向传感器、麦克风、化学/气体传感器等。硬件部件列表242可以包含各种类型的相机和录像机。另外,硬件部件列表242可以包含各种类型的显示屏幕、扬声器系统、电源单元(例如,电池)以及可以包含在装置280中的其他硬件部件242。

在一个示例中,数据存储区240可以包含代码模块244(例如,软件模块、程序模块、功能模块、可执行部分)。代码模块244可以由装置配置服务210提供,并且代码模块244可以对应于可用于设计和构建装置280的硬件部件282。代码模块244可以是要安装在装置280上的模块化软件部件。代码模块244可以对应于特定类型和/或型号的硬件部件282。代码模块244可以包含固件、装置驱动程序、可执行代码、库、配置文件等。代码模块244可以安装或复制到装置280上以使相应硬件部件282能够在装置280中正确地运作。代码模块244可以包含无线通信模块(例如,蓝牙模块或Wi-Fi模块)、能够支持消息传递协议的消息传递模块(例如,MQTT、TCP/IP或HTTP)、微控制器模块、传感器模块、相机模块、录像机模块、显示屏幕模块、扬声器系统模块、电源管理模块或能够实现装置280中可能包含的硬件部件282(例如,基础硬件或硬件外围设备)的功能性的其他类型的软件。

在一个示例中,数据存储区240可以包含配置参数246。配置参数246可以与代码模块244相关联。例如,配置参数246可以包含在代码模块244中定义的各种设置、参数、配置、变量等。配置参数246可以基于装置280的装置能力定义250来定义。因此,配置参数246可以基于装置280的用例来定义。在一个示例中,装置配置服务210可以经由用户界面272向用户计算装置270提供一系列问题,并且可以基于从用户计算装置270接收的用户输入来选择或配置代码模块244的配置参数246。作为示例,用于代码模块244的配置参数246可以取决于装置280中的相应硬件部件282是否用于支持温度感测、视频流、农业机械等。

在一个示例中,数据存储区240可以包含依赖关系树248。依赖关系树248可以将多个代码模块244映射到在设计装置280时兼容的多个硬件部件282。依赖关系树248还可以指示哪些代码模块244与定义的硬件部件282兼容。另外,依赖关系树248可以指示哪些代码模块244与其他代码模块244兼容或者依赖于其他代码模块。这可以指示哪些代码模块244具有多个依赖关系以便在装置280上操作。依赖关系树248中特定代码模块244之间不存在依赖关系链接可以指示那些特定代码模块244彼此不兼容。因此,根据依赖关系树248,代码模块244可以不被选择包含在装置图像248中。

作为非限制性示例,依赖关系树248可以指示微控制器与某个蓝牙芯片组和某个传感器兼容,且因此,微控制器代码模块与相应蓝牙代码模块和传感器代码模块兼容。依赖关系树248还可以指示蓝牙模块和传感器模块彼此兼容。可选地,依赖关系树248可以指示虽然蓝牙模块和传感器模块各自与微控制器代码模块兼容,但是蓝牙模块和传感器模块彼此不兼容。因此,在此情况下,在设计装置280时,这个特定的蓝牙芯片组不可以与这个特定的传感器结合使用。

在一个示例中,数据存储区240可以包含装置能力定义250。装置能力定义250可以定义装置能力和装置280的用例。可以经由用户计算装置270上的用户界面272来接收装置280的装置能力定义250。装置能力定义250可以定义与装置280相关联的用例、目的或目标(例如,温度捕获、水感测、入侵检测、音频流、视频流、图像捕获)。可以基于响应于经由用户界面272从装置配置服务210向用户计算装置270提供的一系列问题而接收的用户输入来定义装置能力定义250。装置能力定义250可以定义将使用装置280的位置或设置类型(例如,农场、工厂、家庭)。装置能力定义250可以定义将由装置280收集和上载的数据类型(例如,温度数据、水分数据、运动数据和图像数据),并且装置能力定义250可以定义收集和上载数据的周期性。装置能力定义250还可以定义装置280是否在特定位置处的一组类似装置280内运作。

由装置配置服务210操作的计算实例220可以利用多个模块来为装置280提供代码模块244。计算实例220可以包含硬件部件选择模块222、代码选择模块224、代码递送模块226、以及未详细论述的其他应用、服务、过程、系统、引擎或功能性。

硬件部件选择模块222可以被配置成识别正被设计的装置280的硬件部件282。硬件部件选择模块222可以基于经由用户界面272从用户计算装置270接收的选择来识别硬件部件282。例如,用户可以提供硬件部件282的选择以实现装置280的目标或用例。可选地,硬件部件选择模块222可以基于经由用户界面272从用户计算装置270接收的装置能力定义250和用例来推荐或自动地选择某些硬件部件282。

代码选择模块224可以被配置成识别正被设计的装置280的代码模块244。代码选择模块224可以自动地识别与用于装置280的所选择的硬件部件282相关联的代码模块244。可选地,代码选择模块224可以提供与已经选择的硬件部件282兼容的代码模块列表244,并且代码选择模块224可以基于经由用户界面272从用户计算装置270接收的用户输入来识别特定代码模块244。可以基于装置280的用例来定制或过滤提供给用户计算装置270的代码模块列表244,如装置能力定义250中所定义。另外,代码选择模块224可以基于经由用户界面272从用户计算装置270接收的用户输入来选择用于代码模块244的各种配置参数246。例如,代码选择模块224可以选择配置参数246以针对装置280的用例进行定制,如在装置能力定义250中所定义。

代码递送模块226可以经由网络260向用户计算装置270提供选择的代码模块244和选择的配置参数246。代码递送模块226可以提供代码模块244和配置参数246,以使得使用用户计算装置270的开发者能够根据代码模块244和配置参数246来设计和产生装置图像。然后可以将装置图像加载到装置280上。

具有用户界面272的用户计算装置270可以是例如基于处理器的系统。用户计算装置270可以包含但不限于,台式计算机、膝上型计算机或笔记型计算机、平板计算机、手持式计机、工作站、网络计算机或具有类似能力的其他装置。

装置280(例如,IoT装置)可以是例如基于处理器的系统或嵌入式系统。作为非限制性示例,装置280可以包含消费产品(例如,电饭煲、电视机、打印机或扫描仪)、家庭自动化产品(例如,智能恒温器、智能冰箱、供暖、空调等)、制造装置、农业装置、工厂装置、工业金属冲压装置、工业机器人、传感器、无人机、或者被指派唯一识别符并能够通过网络260传达数据的其他装置。商业装置还可以包含在装置280的定义中,包含:商业印刷机、商业冷冻机、商业窑炉、商业搅拌机或其他商业设备。装置280可以是为机器或系统提供电子控制的其他类型的嵌入式装置。

服务提供商环境200内包含的各种过程和/或其他功能性可以在与一个或多个存储器模块通信的一个或多个处理器上执行。服务提供商环境200可以包含多个计算装置,这些计算装置布置在例如一个或多个服务器组或计算机组或其他布置中。计算装置可以使用管理程序、虚拟机管理器(VMM)和其他虚拟化软件来支持计算环境。

术语“数据存储区”可指代能够存储、访问、组织、和/或检索数据的任何装置或装置组合,所述装置或装置组合可包含任何集中式、分布式或集群式环境中的任何组合和任何数目的数据服务器、关系数据库、面向对象数据库、集群式存储系统、数据存储装置、数据仓库、平面文件、以及数据存储配置。数据存储区的存储系统部件可以包含存储系统,诸如SAN(存储区域网络)、虚拟化存储网络、易失性或非易失性RAM、光学介质、或硬盘驱动器类型介质。如可理解,数据存储区可代表多个数据存储区。

网络260可以包含任何有用的计算网络,包含内联网、因特网、局域网、广域网、无线数据网络或任何其他此类网络或其组合。用于这种系统的部件可至少部分地取决于所选网络和/或环境的类型。通过有线或无线连接及其组合可启用网络上的通信。

图2示出了可以结合本技术讨论的某些处理模块,并且这些处理模块可以实现为计算服务。在一个示例配置中,模块可以被认为是服务,其具有在服务器或其他计算机硬件上执行的一个或多个进程。此类服务可为可接收请求且将输出提供到其它服务或消费者装置的集中托管的功能性或服务应用。例如,提供服务的模块可以被认为是托管在服务器、虚拟化服务环境、网格或集群计算系统中的按需计算。可以为每个模块提供API以使第二模块能够向第一模块发送请求并且从其中接收输出。此类API还可以允许第三方与模块接口连接和发出请求并从模块接收输出。虽然图2示出了可以实现上述技术的系统的示例,但是很多其他类似或不同的环境也是可能的。以上所论述和说明的示例环境仅仅是代表性的而非限制性的。

图3示出用于提供用于构建装置330(例如,IoT装置)的代码模块316的示例性系统和相关操作。可以从在服务提供商环境300中操作的装置配置服务310来提供代码模块316。装置配置服务310可以与用户计算装置320通信,以便呈现从装置配置服务310接收的用户界面322(例如,装置配置用户界面)。可选地,装置配置服务310可以与用户计算装置320上执行的应用通信,并且所述应用可以呈现从装置配置服务310接收的用户界面322。装置配置服务310可以基于经由用户界面322从用户计算装置320接收的用户输入来为装置330提供代码模块316。

在一个示例中,装置配置服务310可以经由用户界面322接收来自用户计算装置320的装置能力定义312。装置能力定义312可以定义装置330的用例。例如,装置能力定义312可以指示装置330将用于温度感测、视频流、工厂监测等。

因此,装置配置服务310可以推荐指示硬件部件336和兼容代码模块316的装置包用于设计和构建装置330。例如,装置配置服务310可以基于访问先前使用的装置包318的数据存储区317来识别推荐的装置包。其他用户可以将他们的装置包(其指示特定用例的先前使用的硬件部件和代码模块)上载到数据存储区317,并且此信息可以被装置配置服务310访问。例如,装置配置服务310可以为用户创建包含用户所使用的先前使用的装置包318(可以包含代码模块)的修正控制系统储存库(诸如Git储存库),并且修正控制系统储存库可以被克隆或复制以允许包含在修正控制系统储存库中的先前使用的装置包318(可以包含代码模块)可被其他用户访问。装置配置服务310可以搜索对应于装置330的用例的先前使用的装置包318,如装置能力定义312中的功能性所定义。当装置配置服务310识别数据存储区317中的先前使用的装置包318与装置330的用例(例如,基于标签、字段、关键字或与装置包相关联的其他描述符)匹配或类似时,装置配置服务310可以在设计和构建装置330时推荐类似的装置包。换句话说,装置配置服务310所推荐的装置包可以指示针对装置330的特定用例定制的硬件部件336和兼容代码模块316。例如,这些推荐的硬件部件336可以考虑装置330的处理和存储器规范、装置330的传感器规范(例如,温度传感器、运动检测器)、装置330的无线通信规范(例如,蓝牙、Wi-Fi)、装置330的消息传递或联网规范(例如,MQTT、TCP/IP)等。鉴于装置能力定义312,装置配置服务310可以提供关于硬件部件336和代码模块316的优点和缺点的信息。

在一个示例中,装置配置服务310可以基于用户计算装置320所指定的实现方式定义来选择装置包以定义推荐的硬件部件336。例如,装置配置服务310可以基于实现方式而选择高端硬件部件336(例如,具有增加的处理和存储器能力的硬件部件),或者可选地,装置配置服务310可以基于实现方式而选择低端硬件部件336(例如,具有降低的成本的硬件部件)。

在一个示例中,装置配置服务310可以向用户计算装置320提供推荐的装置包。装置配置服务310可以先前已经经由用户界面322从用户计算装置320接收了推荐装置包的选择。在此示例中,装置配置服务310可以提供与装置包相关联的代码模块316用于在装置330上使用。

在替代性示例中,装置配置服务310可以从用户计算装置320接收对推荐装置包的选择,并请求不与所述装置包相关联的替代代码模块316。在此示例中,装置配置服务310可以提供替代代码模块316用于在装置330上使用。换句话说,用户计算装置320可以经由用户界面322接受与装置包相关联的代码模块316,或者可选地,用户计算装置320可以经由用户界面322来修改与装置包相关联的一些代码模块。此外,用户可以不限于使用与推荐装置包相关联的硬件部件336中的每一者。相反,用户可以使用装置包中指示的某些硬件部件336,并选择不包含在某些装置包中的替代硬件部件336,使得推荐的装置包可以提供设计和构建装置330的起点。

图4示出用于测试代码模块440的示例性系统和相关操作。可以使用在服务提供商环境400中操作的装置配置服务410中的测试模块420来测试代码模块440。在一个示例中,在设计和构建装置时可以通过客户来选择和利用几百个代码模块440。代码模块440可以映射到存储在装置配置服务410的数据存储区430中的依赖关系树432中。依赖关系树432可以映射代码模块440之间的依赖关系。随着代码模块440的数目随着时间增长,与测试代码模块440相关联的复杂性也增加。因此,可以使用测试矩阵来测试代码模块440,所述测试矩阵降低了复杂性,同时提高了代码模块440的某些组合起作用的可能性。在一个示例中,当代码模块440已经被测试模块420成功测试时,这些代码模块440可以被装置配置服务410认证并变得可用。随着增加数目的代码模块440被测试,依赖关系树432可以包含增加数目的代码模块440。

在一个示例中,测试模块420可以测试彼此依赖的所选代码模块440之间的接口450,而不是测试代码模块440的每个组合,如依赖关系树432中所指示。所选择的代码模块440可以包含在设计和构建装置时可用的多个代码模块440中。可以测试代码模块440之间的接口450以确保代码模块440之间的适当功能性。在一个替代性示例中,测试模块420可以随机采样代码模块440之间的接口450,并且测试模块420可以随时间旋转采样,以确保随着时间而测试增加数目的代码模块组合。测试模块420可以基于代码模块440的测试而产生测试度量422,所述测试度量可以指示哪些代码模块440被认证以及哪些代码模块440未被认证。

作为示例,在与特定芯片组一起使用时,第一代码模块(例如,以太网驱动程序、TCP/IP库、IP层、MQTT层)可以具有五个依赖关系(例如,依赖于第一代码模块的五个其他代码模块)。在此示例中,测试模块420可以测试第一代码模块与五个其他代码模块中的每一者之间的接口以确保第一代码模块与五个依赖代码模块中的每一者之间的兼容性和可用性。作为另一示例,第一代码模块(例如,MQTT层)可以不直接调用第二代码模块(例如,以太网驱动程序)。而是第一代码模块(例如,MQTT层)可以调用第三代码模块(例如,TCP/IP层),但可以存在直接调用第二代码模块(例如,以太网驱动程序)的其他模块(例如,TCP/IP层)。因此,测试模块420可以测试彼此依赖的模块(例如,第一和第三代码模块,以及第二和第三代码模块)之间的接口。

图5示出用于为补充装置图像534执行空中(OTA)更新的示例性系统和相关操作。OTA更新可以由在服务提供商环境500中操作的更新服务530来执行。OTA更新可以涉及将存储在数据存储区532中的补充装置图像534提供给装置570(例如,IoT装置)上的代理572,并且补充装置图像534可以安装在装置570上。补充装置图像534可以经由服务提供商环境500中的发行/订阅装置图像代理540和装置网关550(其可以被认为是装置570访问服务提供商环境500的入口点)提供给装置570。例如,装置570可以订阅由发布者/订阅者装置图像代理540创建的主题542,更新服务530可以向所述主题发布补充装置图像530以递送给装置570。

在一个示例中,服务提供商环境500中的装置配置服务510可以接收代码模块512的选择。装置配置服务510可以接收来自用户计算装置560的选择。装置配置服务510可以向用户计算装置560提供代码模块。用户计算装置560可以组装代码模块512以产生补充装置图像534。补充装置图像534可以为装置570提供新的功能性或增强装置570的现有功能性,或者补充装置图像534可以修复装置570中的现有问题。

用户计算装置560可以将补充装置图像534上载到服务提供商环境500中的数据存储区532。更新服务530可以安全地递送补充装置图像534用于在装置570上使用或安装。更新服务530可以通过将补充装置图像534分成能够由装置570无线接收的数据块来提供补充装置图像534以供下载(或推送传输)。可以经由发布/订阅代理540将单独的数据块随着消息发送出去。补充装置图像534可以使用代码签名证书来签名,以确保补充装置图像534来自可信任的来源。装置570可以接收源自更新服务530的补充装置图像534,并且然后可以安装补充装置图像534以获得新功能性、增强现有功能性、修复问题等。

图6示出用于提供用于构建装置(例如,IoT装置)的代码模块的方法的示例。可以提供在设计装置时可用的硬件部件列表,如在框610中。可以从在服务提供商环境中操作的装置配置服务接收硬件部件列表。包含在硬件部件列表中的硬件部件可能先前已被装置配置服务认证。装置配置服务可以不提供不包含在硬件部件列表中的硬件部件。

可以接收来自硬件部件列表的硬件部件的选择,如在框620中。装置配置服务可以提供使得能够从硬件部件列表选择硬件部件的用户界面。作为示例,用户可以基于装置类型(例如,真空吸尘器、智能家庭仪表)而经由装置的用户界面选择适当的硬件部件。

可以接收定义装置的用例的装置能力定义,如在框630中。可以从在服务提供商环境中操作的装置配置服务接收装置能力定义。可以从用户计算装置接收装置能力信息。装置能力定义可以描述要构建的装置的既定目的或目标。

可以提供与所选择的硬件部件兼容的代码模块列表,如在框640中。可以基于装置的用例过滤认证的代码模块列表,如装置能力定义中所指示。另外,列表上的认证的代码模块可以与先前经由用户界面选择的硬件部件兼容。代码模块可以包含固件、装置驱动程序、可执行代码、库、配置文件等。

可以接收来自代码模块列表的代码模块的选择,如在框650中。例如,装置配置服务所提供的用户界面可以使得能够从代码模块列表选择代码模块。代码模块可以使得硬件部件能够在装置中操作。换句话说,特定代码模块可以实现装置中的特定相应硬件部件的操作和/或接口连接。

可以提供代码模块来设计装置,如在框660中。例如,装置配置服务可以向用户计算装置提供代码模块,诸如膝上型计算机或个人计算机。用户计算装置可以根据代码模块而产生装置图像,并且然后将装置图像加载到装置上,诸如IoT装置。装置图像可以安装在装置上,这可以使得装置中的硬件部件能够正确地运作。另外,可以向代码模块提供一组配置参数。所述一组配置参数可以基于装置的用例来选择,如装置能力定义中所指示,并且可以在产生装置图像时使用所述一组配置参数。

图7示出用于提供用于构建装置(例如,IoT装置)的代码模块的方法的示例。可以接收用于装置的装置能力定义,如在框710中。例如,在服务提供商环境中操作的装置配置服务可以提供使得装置能力定义能够被接收的用户界面。装置能力定义可以描述装置的用例。换句话说,装置能力定义可以在装置被设计时定义所述装置的既定用例。

可以推荐指示硬件部件和兼容代码模块的装置包用于构建装置,如在框720中。装置配置服务可以根据与装置的用例相对应的先前使用的装置包来识别为装置推荐的装置包,如装置能力定义中所指示。换句话说,装置配置服务可以识别相比于目前正被设计的装置具有类似用例的装置包,并且装置配置服务可以推荐与那些装置包相关联的硬件部件和兼容代码模块。装置配置服务可以基于装置能力定义来推荐具有硬件部件和兼容软件部件的装置包,所述硬件部件和兼容软件部件具有适用于所述装置的特征或特性。

可以接收装置包的选择,如在框730中。例如,装置配置服务所提供的用户界面可以使得正设计和构建所述装置的用户能够选择推荐的装置包。通过选择装置包,用户可以选择与装置包相关联的硬件部件和兼容代码模块。代码模块可以使得硬件部件能够在装置中操作。换句话说,特定代码模块可以实现装置中的特定相应硬件部件的操作和/或接口连接。

可以提供与装置包相关联的代码模块用于下载和安装在所述装置上,如在框740中。例如,装置配置服务可以向用户计算装置提供代码模块,诸如膝上型计算机或个人计算机。用户计算装置可以根据代码模块而产生装置图像,并且然后将装置图像加载到装置上,诸如IoT装置。

图8示出用于提供用于构建装置(例如,IoT装置)的代码模块的方法的示例。可以接收要用于设计具有受约束的硬件能力的装置的硬件规范,如在框810中。硬件规范可以定义要用于正被设计的装置中的一个或多个硬件部件。另外,装置的受约束的硬件能力可以指装置的有限处理和存储器能力,以及装置缺乏某些硬件能力(例如,缺乏Wi-Fi能力、蓝牙能力、数字信号处理(DSP)能力等)。

可以接收用于装置的装置配置,如在框820中。装置配置可以包含装置的用例。另外,装置配置可以包含关于要加载到装置上的感兴趣代码模块的输入。用例可以描述装置的特定目的或要由装置达到的特定特征。可以从用户接收关于代码模块的输入。例如,输入可以描述在设计装置时用户感兴趣的特定代码模块。

可以确定与硬件规范兼容的代码模块列表,其满足装置的受约束的硬件能力和装置的装置配置,如在框830中。换句话说,可以确定代码模块列表包含满足装置的受约束硬件能力的代码模块(例如,不会消耗比装置中包含的更多的处理和存储的代码模块),并且与装置的装置配置(例如,关于感兴趣的代码模块的用例和/或用户输入)相对应,并且与硬件规范兼容。

可以提供代码模块列表,如在框840中。例如,可以经由用户界面提供代码模块列表。代码模块可以包含固件、装置驱动程序、可执行代码、库、配置文件等。可以接收来自代码模块列表的代码模块的选择,如在框850中。可以经由用户界面接收代码模块的选择。可以提供选自代码模块列表的代码模块用于在设计装置时使用,如在框860中。例如,所选择的代码模块可以用以产生装置图像,并且装置图像可以加载到装置上。

图9是示出示例计算服务900的框图,所述示例计算服务可以用于执行和管理本技术可在其上执行的多个计算实例904a-d。具体地说,所描绘的计算服务900示出其中可以使用本文描述的技术的一个环境。计算服务900可以是包含各种虚拟化服务资源的一种类型的环境,所述虚拟化服务资源可以例如用以托管计算实例904a-d。

计算服务900可以能够将计算、存储和联网能力作为软件服务递送给最终接收者社区。在一个示例中,计算服务900可以由组织或代表组织为组织建立。也就是说,计算服务900可以提供“私有云环境”。在另一示例中,计算服务900可以支持多租户环境,其中多个客户可以独立地操作(即,公共云环境)。一般来说,计算服务900可以提供以下模型:基础设施即服务(“IaaS”)、平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可以提供其他模型。对于IaaS模型,计算服务900可以提供计算机作为物理或虚拟机以及其他资源。虚拟机可由管理程序作为客机运行,如下文进一步描述。PaaS模型递送计算平台,所述计算平台可包含操作系统、编程语言执行环境、数据库、以及web服务器。

应用开发商可在计算服务平台上开发并运行它们的软件解决方案,而不会引起购买和管理基础硬件和软件的成本。SaaS模型允许在计算服务900中安装和操作应用软件。例如,最终客户可以使用运行web浏览器或其他轻量级客户端应用的联网的客户端装置来访问计算服务900,诸如台式计算机、膝上型计算机、平板型计算机、智能电话等。熟悉本领域的技术人员将认识到,计算服务900可以被描述为“云”环境。

特别示出的计算服务900可以包含多个服务器计算机902a-d。服务器计算机902a-d还可以被称为物理主机。虽然示出了四个服务器计算机,但可以使用任何数目,并且大型数据中心可以包含几千个服务器计算机。计算服务900可以提供用于执行计算实例904a-d的计算资源。计算实例904a-d可以例如是虚拟机。虚拟机可为像物理机一样执行应用的机器(即,计算机)的软件实施的实例。在虚拟机的示例中,服务器计算机902a-d中的每一者可以被配置成执行能够执行实例的实例管理器908a-d。实例管理器908a-d可以是管理程序、虚拟机管理器(VMM)、或被配置成能够在单个服务器上执行多个计算实例904a-d的另一类型的程序。此外,计算实例904a-d中的每个都可被配置为执行一个或多个应用。

服务器914可以被保留来执行用于实现本技术或管理计算服务900和计算实例904a-d的操作的软件部件。例如,服务器计算机914可以执行装置配置服务915。装置配置服务915可以接收在设计装置时要使用的硬件部件的指示。装置配置服务915可以提供与硬件部件兼容的代码模块列表。所述代码模块列表可以基于装置的用例。装置配置服务915可以接收来自与选自硬件部件列表的硬件部件兼容的代码模块列表的代码模块的选择。装置配置服务915可以提供代码模块用于在装置上使用。

服务器计算机916可执行管理部件918。客户可访问管理部件918以配置由客户购买的计算实例904a-d的操作的各个方面。例如,客户可建立计算实例904a-d并对计算实例904a-d的配置作出改变。

部署部件922可用于辅助客户进行计算实例904a-d的部署。部署部件922可对与计算实例904a-d相关联的帐户信息(诸如帐户所有者的名称、信用卡信息、所有者的国家等)具有访问权。部署部件922可从客户接收包括描述可如何配置计算实例904a-d的数据的配置。例如,配置可包括操作系统、提供要安装在计算实例904a-d中的一个或多个应用、提供要执行以用于配置计算实例904a-d的脚本和/或其它类型的代码、提供指定应如何准备应用缓存的缓存逻辑以及其它类型的信息。部署部件922可利用客户提供的配置和缓存逻辑来配置、初始化并启动计算实例904a-d。配置、缓存逻辑和其它信息可由访问管理部件918的客户指定或者通过将该信息直接提供至部署部件922来指定。

客户账户信息924可包括与多租户环境的客户相关联的任何期望信息。例如,客户账户信息可包括客户的唯一标识符、客户地址、计费信息、许可信息、用于启动实例的定制参数、调度信息等。如上所述,客户账户信息924还可包括用于对API请求的异步响应的加密的安全信息。“异步”意味着API响应可在初始请求之后的任何时间并利用不同网络连接作出。

可以利用网络910来使计算服务900和服务器计算机902a-d、916互连。网络910可以是局域网(LAN)并且可以连接到广域网(WAN)912或因特网,使得最终客户可以访问计算服务900。另外,网络910可以包含叠加在物理网络上的虚拟网络,以提供服务器902a-d之间的通信。图9中所说明的网络拓扑结构已简化,因为更多的网络和联网装置可被利用来将本文中所公开的各种计算系统互连。

图10示出可以在其上执行本技术的模块或代码部件的计算装置1010。说明计算装置1010,本技术的高级示例可在所述计算装置上执行。计算装置1010可包含与存储器装置1020通信的一个或多个处理器1012。计算装置可以包含用于计算装置中的部件的本地通信接口1018。例如,根据需要,本地通信接口可以是本地数据总线和/或任何相关的地址或控制总线。

存储器装置1020可以包含可由处理器1012执行的模块1024或代码部件以及用于模块1024的数据。模块1024可以执行先前描述的功能。数据存储区1022也可位于存储器装置1020中以用于存储与模块1024以及其它应用相关的数据,连同可由处理器1012执行的操作系统。

其它应用也可存储在存储器装置1020中且可能够由处理器1012执行。此描述中所论述的部件或模块可使用高级编程语言以软件形式实施,所述高级编程语言使用方法的混合来编译、解译或执行。

计算装置还可访问可由计算装置使用的I/O(输入/输出)装置1014。I/O装置的示例是可用以显示来自计算装置的输出的显示屏幕。根据需要,其他已知的I/O装置可以与计算装置一起使用。联网装置1016和类似通信装置可包含在计算装置中。联网装置1016可为连接到因特网、LAN、WAN、或其它计算网络的有线或无线联网装置。

示出为存储在存储器装置1020中的部件或模块可由处理器1012执行。术语“可执行的”可意味着呈可由处理器1012执行的形式的程序文件例如,以更高级语言的程序可被编译为呈可载入存储器装置1020的随机存取部分中且由处理器1012执行的格式的机器代码,或源代码可由另一可执行程序载入和解译以在存储器的随机存取部分中产生待由处理器执行的指令。可执行程序可存储在存储器装置1020的任何部分或部件中。例如,存储器装置1020可为随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器、固态驱动器、存储卡、硬盘驱动器、光盘、软盘、磁带、或任何其它存储器部件。

处理器1012可表示多个处理器,并且存储器1020可表示与处理电路并行操作的多个存储器单元。这可提供用于系统中的过程和数据的并行处理信道。本地接口1018可用作网络以有助于多个处理器中的任一个与多个存储器之间的通信。本地接口1018可使用设计用于协调通信的额外系统,例如负载平衡、批量数据传输和类似系统。

虽然呈现用于此技术的流程图可暗示具体执行次序,但是执行次序可不同于所说明的执行次序。例如,多两个框的次序可相对于所示出的次序被重新布置。此外,连续示出的两个或更多个框可并行或部分并行执行。在一些配置中,流程图中所示的一个或多个框可省略或跳过。为了增强效用、记账、性能、测量、故障排除或出于类似原因,可将任何数目的计数器、状态变量、警告信号标、或消息添加到逻辑流程中。

此说明书中所描述的功能单元中的一些已标记为模块以便更具体地强调其实施独立。例如,模块可实施为硬件电路(包括定制VLSI电路或门阵列)、成品半导体(例如逻辑芯片、晶体管)或其它离散部件。模块还可在可编程硬件装置(例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑装置等)中实施。

模块还可在软件中实施以用于由各种类型的处理器执行。可执行代码的已标识模块可例如包括可被组织为对象、进程或函数的计算机指令的一个或多个块。然而,已标识模块的可执行部分无需在物理位置上在一起,但可包括存储在不同位置的不同指令,这些不同指令在逻辑上结合在一起时包括所述模块且实现所述模块的所述目的。

实际上,可执行代码的模块可为单个指令或许多指令,且甚至可分布在若干不同代码段上、不同程序之间以及若干存储器装置上。类似地,在本文中,操作数据可标识且说明在模块内,且可以任何合适形式来实施且被组织在任何合适类型的数据结构内。操作数据可被收集为单个数据集,或可分布在不同位置上(包含在不同存储装置上)。模块可为被动的或主动的,包含可操作以执行所希望功能的代理。

这里所描述的技术还可存储在计算机可读存储介质上,所述计算机可读存储介质包含与用于存储信息的任何技术一起实施的易失性和非易失性、可移除和不可移除介质,所述信息例如计算机可读指令、数据结构、程序模块、或其它数据。计算机可读存储介质包含但不限于,RAM、ROM、EEPROM、闪存存储器或其他存储器技术、CD-ROM、数字通用光盘(DVD)或其他光学存储器、磁盒、磁带、磁盘存储器或其他磁性存储装置、或可用于存储所需信息并且所描述技术的任何其他计算机存储介质。

本文中所描述的装置还可含有允许装置与其它装置通信的通信连接或联网设备以及联网连接。通信连接是通信介质的示例。通信介质典型地具体实施例如载波或其它传送机制等已调制数据信号中的计算机可读指令、数据结构、程序模块、以及其它数据,且包含任何信息递送介质。“已调制数据信号”意味着一种信号,所述信号使得其特性的一个或多个被设定或改变,其方式为使得对信号中的信息进行编码。举例来说而并非限制,通信介质包含有线介质(例如有线网络或直接有线连接)和无线介质(例如声学、射频、红外线以及其它无线介质)。如本文中所使用的术语计算机可读介质包含通信介质。

对图式中所说明的示例进行参考且具体语言在本文中用于描述所述示例。然而,将理解,并不意图由此限制本技术的范围。相关领域的技术人员以及拥有本公开文本的人将会想到的对本文所示的特征的改变和进一步修改以及本文所示的示例的额外应用将被认为在描述的范围内。

鉴于以下条款,可以更好地理解上述内容:

1.一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质具有在其上实施的指令,所述指令由一个或多个处理器执行,包括:

从在服务提供商环境中操作的装置配置服务提供在设计装置时可用的硬件部件列表;

接收来自所述硬件部件列表的硬件部件的选择;

接收定义所述装置的用例的装置能力定义;

提供与所选择的硬件部件兼容的代码模块列表,其中基于所述装置的所述用例来过滤所述代码模块列表;

接收来自所述代码模块列表的代码模块的选择,其中所述代码模块使得选自所述硬件部件列表的所述硬件部件能够在所述装置中操作;以及

提供所述代码模块用于设计所述装置。

2.如条款1所述的非暂时性机器可读存储介质,所述非暂时性机器可读存储介质还包括:

部分地基于所述装置的所述用例来识别用于所述代码模块的一组配置参数;以及

向所述代码模块提供所述一组配置参数。

3.如条款1所述的非暂时性机器可读存储介质,所述非暂时性机器可读存储介质还包括产生依赖关系树,所述依赖关系树自动地选择所述代码模块用于在所述装置上使用。

4.一种方法,所述方法包括:

接收要用于设计具有受约束的硬件能力的装置的硬件规范;

接收所述装置的装置配置,其中所述装置配置包含所述装置的用例;

确定与所述硬件规范兼容的代码模块列表,所述代码模块列表满足所述装置的所述受约束的硬件能力和所述装置配置;

提供所述代码模块列表;

接收来自所述代码模块列表的代码模块的选择;以及

提供选自所述代码模块列表的所述代码模块用于设计所述装置。

5.如条款4所述的方法,所述方法还包括:

在服务提供商环境中使用装置图像构建服务产生包含所述代码模块的装置图像;以及

提供所述装置图像用于递送和安装到所述装置上。

6.如条款4所述的方法,所述方法还包括接收定义所述装置的所述装置配置的装置能力定义,其中所述装置配置还包含关于要加载到所述装置上的感兴趣代码模块的输入。

7.如条款4所述的方法,其中要在所述装置上使用的所述代码模块与所述装置上执行的实时操作系统(RTOS)兼容。

8.如条款4所述的方法,所述方法提供使得能够选择要在所述装置上使用的所述代码模块的用户界面。

9.如条款4所述的方法,所述方法还包括测试包含在当设计所述装置时可用的多个代码模块中的代码模块之间的接口,其中测试所述代码模块之间的所述接口以确保所述多个代码模块的适当功能性。

10.如条款4所述的方法,所述方法还包括:

根据选自所述代码模块列表的所述代码模块创建补充装置图像,其中将所述补充装置图像上载到在服务提供商环境中操作的更新服务;以及

从所述更新服务提供所述补充装置图像作为更新以安装到所述装置上,其中所述补充装置图像增强了所述装置的先前接收的装置图像的能力。

11.如条款4所述的方法,所述方法还包括:

部分地基于所述装置的所述配置来修改用于所述代码模块的一组配置参数;以及

向所述代码模块提供所述一组配置参数。

12.如条款4所述的方法,所述方法还包括从在服务提供商环境中操作的装置配置服务提供所述代码模块。

13.如条款4所述的方法,所述方法还包括产生依赖关系树,所述依赖关系树根据在所述依赖关系树中定义的软件依赖关系自动地选择所述代码模块用于在所述装置上使用。

14.如条款4所述的方法,其中所述装置的所述代码模块包含以下各项中的一个或多个:微控制器模块、数字信号处理(DSP)模块、通信模块、传感器模块、相机模块、收发器模块或电源管理模块。

15.一种系统,所述系统包括:

至少一个处理器;

至少一个存储器装置,其包含用以存储多个数据和指令的数据存储区,所述数据和指令在被执行时使得所述系统:

接收装置的装置能力定义,其中所述装置能力定义描述所述装置的用例;

推荐指示硬件部件和兼容代码模块的装置包用于构建所述装置,其中根据与所述装置的所述用例相对应的先前使用的装置包来识别针对所述装置推荐的所述装置包;

接收所述装置包的选择;以及

提供与所述装置包相关联的所述代码模块用于在所述装置上使用。

16.如条款15所述的系统,其中所述多个数据和指令在被执行时使得所述系统:

接收所述装置包的选择,并请求不与所述装置包相关联的替代代码模块;以及

提供所述替代代码模块用于设计所述装置。

17.如条款15所述的系统,其中所述多个数据和指令在被执行时使得所述系统提供所述代码模块以使得能够根据所述代码模块产生装置图像并将其安装在所述装置上。

18.如条款15所述的系统,其中所述多个数据和指令在被执行时使得所述系统:

在服务提供商环境中操作的装置配置服务处接收用于所述装置的补充代码模块的选择;

提供所述补充代码模块用于在所述装置上使用,其中使用所述补充代码模块来创建补充装置图像,所述补充装置图像被上载到在所述服务提供商环境中操作的更新服务;以及

从所述更新服务提供所述补充装置图像作为更新以安装到所述装置上,其中所述补充装置图像增强了所述装置的先前接收的装置图像的能力。

19.如条款15所述的系统,其中所述多个数据和指令在被执行时使得所述系统:

部分地基于所述装置的所述用例来识别用于所述代码模块的一组配置参数;以及

向所述代码模块提供所述一组配置参数。

20.如条款15所述的系统,其中所述多个数据和指令在被执行时使得所述系统提供使得能够选择所述装置包的用户界面。

此外,所描述的特征、结构或特性可以任何合适的方式在一个或多个示例中进行组合。在先前的描述中,提供了众多具体细节,例如各种配置的示例,以提供对所描述的技术的示例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有具体细节中的一者或多者的情况下或使用其他方法、部件、装置等来实践所述技术。在其他情况下,未详细展示或描述众所周知的结构或操作以避免模糊本技术的方面。

尽管已经用专用于结构特征和/或操作的语言对主题进行了描述,但应理解,所附权利要求中定义的主题未必限制于上文所描述的具体特征和操作。相反,上文所描述的具体特征和行为是作为实施所附权利要求的示例形式而公开。可以在不偏离所描述技术的精神和范围的情况下来设计大量修改和替代性布置。

32页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:无人飞行器及其固件升级方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!