UG435.05: Using Micrium OS (RTOS) with Silicon Labs Connect v3.x (Rev. 0.1)

Connect v3.x User’s Guide 的本章介绍了如何在 Micrium OS 内核上运行 Silicon Labs Connect stack。Connect stack 作为 Silicon Labs Proprietary Flex SDK v3.0 及更高版本的一部分来交付。 Connect v3.x User’s Guide 假定您已经安装了 Simplicity Studio 开发环境和 Flex SDK,并且熟悉配置、编译、刷写 Connect-based 应用程序的基础知识。有关 Connect v3.x User’s Guide 中各章的概述,请参阅 UG435.01: About the Connect v3.x User’s Guide

1. Introduction

Simplicity Studio 中的软件组件提供了对 Micrium 的 Silicon Labs Connect 支持。要启用此支持,应用开发者几乎不需要付出任何努力。有关 Micrium OS 的文档,请访问 http://doc.micrium.com

2. Getting Started

只需启用 Micrium Stack IPC 组件即可将任何 Connect 应用程序轻松转换为在 Micrium OS 上运行的应用程序,如下图所示。这还将安装 Micrium OS Kernel 组件作为依赖项。

Figure 2.1. Micrium Stack IPC Component

Micrium RTOS plugin 具有以下配置选项,使应用开发者可以自定义某些设置:

  • CPU usage tracking :如果启用,则应用程序框架将编译一些其他代码,以使某些调试工具可以获取来自 OS 的扩展调试信息。
  • Connect Task call stack size :Stack 任务使用的调用栈的大小(以字节为单位)。
  • Application Framework Task call stack size :应用程序框架任务使用的调用栈的大小(以字节为单位)。
  • Max callback queue size :定义从 stack 任务到应用程序任务的同时支持的最大回调消息数。
  • Application Task (N) :应用开发者还可以选择启用最多三个自定义应用程序任务。对于这些任务中的每一个,应用开发者都可以指定调用栈的大小和优先级。
  • 启用 Micrium OS Kernel 也可以更改其他组件的行为。例如,CLI Core 组件还将为其自身创建一个 Micrium 任务,通常它是从主 while 循环中调用的。

3. Virtual NCP Architecture Details

启用 Micrium Stack IPC 组件后,Connect stack 将在 Micrium 任务中运行,而应用程序框架代码在一个单独的 Micrium 任务中运行。这个 two-task 模型也称为 vNCP(virtual Network Co-Processor) 架构,因为两个任务之间的处理和通信与 host/NCP 架构相同。区别在于,其不是应用程序和 NCP 不在同一处理器上运行并通过串行端口相互传递消息,而是在同一处理器上运行但执行不同的 Micrium 任务。消息传递使用 Micrium 消息队列或受保护的全局数据结构处理,并且对应用程序是透明的。

通过启用 Micrium OS Kernel 组件,Micrium 内核代码将添加到项目中。Micrium Stack IPC 组件将自动启动两个必需的主要任务,以使协议栈运行:

  • 一个负责运行 Connect stack 的 Connect stack task (优先级较高,默认情况下为 6)。该任务负责以下操作:
    • 通过调用 emberTick() API 定期地 tick Connect stack。
    • 处理来自应用程序任务(如果有)的传入 IPC 命令,并发出响应。
    • 将回调 IPC 命令(如果有)发送到应用程序任务。
    • 尽可能尝试将其自身挂起以允许优先级较低的应用程序任务运行。
  • 一个负责运行应用程序框架代码的 Application Framework task (优先级较低,默认为 7)。该任务负责以下操作:
    • 定期地调用 emberAfTickCallback()emberAfTick() ,以分别 tick 应用程序和 Connect 组件。
    • 运行应用程序事件。
    • 处理来自 stack 任务的传入回调 IPC 命令(如果有)。
    • 尽可能尝试将其自身挂起以允许优先级较低的自定义应用程序任务。

当然,您可以创建其他 Micrium 任务,但是 Silicon Labs 建议您将 Connect stack 任务的优先级保持尽可能的高。

自定义应用程序任务可以自由调用 stack API,因为底层 IPC 协议确保所有 stack API 都是 thread-safe。请记住,只有 stack API 才通过上述 vNCP 传递。HAL 函数和任何 MCU-related 代码可能都不是 thread-safe。您应该根据文档来验证它们是否是 thread-safe。对于非易失性存储,仅支持 NVM3,因为 simEEv1 和 simEEv2 都不是 thread-safe。