什么是动态多协议管理器(DMM)?
Loading the player...
将在30s后自动为您播放下一课程
大家好,欢迎来到这个 关于动态多协议管理器的会议。 它是什么? 它是如何工作的? 以及如何使用它? 在本节中,我们将介绍 使用动态多协议管理器的 基本原理, 这是一个软件模块, 允许多个无线电协议栈 在单个CC13X2或CC26X2设备上 共存和同时操作。 动态多协议管理器 使应用程序能够从单个MCU上的 多个无线协议中获益。 例如,这可以是通过Zigbee实现的 智能手机可访问性 和家庭自动化网络。 我叫Max[听不清], 我是德州仪器公司的 一名软件应用工程师。 在本次会议期间, 我们将尝试讨论以下主题。 什么是动态多协议管理器 或简称DMM? 它给系统带来了什么价值? DMM如何运作 以及它是如何工作的? 什么是DMM策略表,它的策略 如何定义系统行为? 在使用DMM时需要考虑 哪些限制,以及在哪里 可以找到培训材料? 本次会议分为两个主要部分。 在第1部分中,我们将讨论 DMM在非常高的级别上是什么, 它如何适应系统,基本用例, 它如何工作, 以及与之相关的限制。 在第二部分中,我们将讨论 如何使用DMM,什么是策略表, 以及如何定义它的策略, 什么是平衡模式, 以及应用程序在代码方面 需要什么。 最后,我们今天将复习DMM的 可用培训材料。 DMM是跨层软件模块, 位于原始应用程序的这一侧。 DMM的目标是简化在一个设备上 同时运行多个无线电协议栈。 DMM由两个单独的模块组成, DMM策略管理器 和DMM调度程序。 DMM策略管理器持有系统的状态 以及与之关联的所有规则和策略。 DMM调度程序为无线电驱动程序 提供调度和冲突解决功能。 让我们从DMM的 几个基本用例开始。 例如,DMM可以使用智能手机 从传感器网络访问信息。 如图所示,您可以看到 传感器节点也充当BLE外围设备, 提供与智能手机的连接。 例如,另一个用例可以是 将设备配置到现有网络中。 例如,启用DMM的设备可以是 Zigbee端设备和BLE外围设备, 其中BLE外围设备提供了 将Zigbee端设备调试到 现有Zigbee网络的简单方法。 DMM还可以用于 在两个现有网络之间 创建桥梁。 就像在这个例子中一样, 启用DMM的设备 在左边的传感器网络 和右边的Zigbee网络之间 创建了一个桥梁。 现在让我们看看策略管理器 及其工作原理。 策略管理器向DMM调度程序 提供规则, 并告诉它如何调度命令 以及如何解决冲突。 DMM上下文中的规则 在策略表中称为策略。 策略表构成了策略管理器 可以应用于系统的 完整规则集。 策略管理器可以根据系统中 运行的两个堆栈应用程序的 组合状态在规则之间 动态更改。 作为我所说的结合态的一个例子, 我们可以在这里拍这张照片。 每个堆栈应用程序都有多个状态。 堆栈应用程序A有四个-- 扫描、执行OAD、传输文件 和调试。 堆栈应用程序B有三种状态-- 广告、等待确认和空闲。 让我们假设粗体是每个应用程序的 活动状态。 DMM策略管理器将查看堆栈A 正在执行扫描, 堆栈B正在执行广告。 这将导致调用策略集, 意味着堆栈A的优先级 高于堆栈B。 现在让我们看看DMM调度程序 及其工作原理。 DMM调度程序在系统中 组织无线电命令队列。 每当堆栈向无线电驱动程序 发出命令时, 无线电驱动程序 将要求DMM调度程序 将该命令放在队列的适当位置。 当两个命令之间有冲突时, 无论是在调度时间还是在运行时, 无线电驱动程序都会调用 DMM调度程序的 冲突决议钩,并要求它解决 两个命令之间的冲突。 DMM调度程序使用动态调度方法, 而不是 分时多址调度方法。 这允许更好地利用共享广播, 因为系统中 没有固定的时间段。 现在让我们看看 DMM调度程序如何处理冲突。 当DMM调度程序 将命令放入队列时, 它将根据命令的启动时间 对队列进行排序。 假设两个命令 在查看它们的启动时间时 没有冲突, 这两个命令都将被放入队列中, 但DMM调度程序除外。 在调度期间,如果两个命令之间 发生冲突,DMM调度程序 将立即解决冲突。 当两个命令在运行时发生冲突时, DMM调度程序将在运行时 处理此问题。 我们来看一个例子 如果这是单选命令时间轴, 堆栈A从调度第一个命令开始。 目前它是队列中唯一的命令。 现在堆栈B在与堆栈A命令 完全相同的启动时间 调度命令。 这是在调度时间上的冲突, 可以立即解决。 现在堆栈A调度另一个命令 和再一个命令。 堆栈B还调度另一个命令。 假设堆栈B的第二个命令即将运行, 我们现在在运行时有一个冲突。 此冲突由决议钩解决, 当计划运行堆栈B时 调用该决议钩。 现在让我们看看使用DMM 所带来的一些限制。 DMM基本上是一个有损耗的系统, 这意味着任何冲突 或利用率超过100% 都会导致数据丢失, 这是因为DMM仲裁 一个单一的无线电源。 要记住的另一个限制是, 与CPU调度不同, 抢占命令不能恢复。 每当DMM调度程序 中止一个命令时, 该命令将不会再次运行, 直到堆栈重新调度。 DMM偶尔会尝试 重新调度命令本身, 作为恢复的替代方案。 我们过几张幻灯会再讲这个。 最后,DMM支持在给定的时间内 仅限于两个无线电协议栈。 现在让我们看看如何使用DMM, 它在代码中是什么样子的, 以及策略表是什么样子的。 使用DMM应该很容易。 我的意思是,对现有应用程序 实现DMM所需的工作量 应该相对较低。 例如,它可以像设置系统 所需的调度规则,即策略表, 一样简单; 在启动过程中初始化DMM一次; 并根据需要使用应用程序状态 更新DMM。 理论上,DMM支持任何 无线协议栈组合, 只要它是可行的。 在评估无线协议栈组合时, 请问问自己,这两个协议栈 都支持DMM吗? 两种协议都有足够的 无线电时间运行吗? 以及协议如何处理无线电拒绝, 也就是丢失。 现在让我们看看策略表 是由什么组成的, 以及它在代码中的样子。 首先,策略稳定定义了系统中 使用的无线协议栈的堆栈角色。 例如,这可以是BLE外围设备 或Zigbee设备。 用户可用的角色是由 DMM策略堆栈角色 和分子定义的角色。 这是用DMM预定义的东西, 不能由用户自己扩展。 注意如何将堆栈角色分配到 策略表中的索引顺序非常重要, 这是因为这里的索引顺序 必须与定义系统策略时 使用的任何顺序匹配。 接下来,策略表包含 对将要在系统中 使用的策略的引用。 最后,策略表包含要使用 哪个索引表的引用。 索引表目前没有使用。 但是在将来, 它将在堆栈和DMM之间 创建更深层的连接, 而不仅仅是用户和DMM之间。 现在让我们看看策略是如何设置的, 以及如何根据堆栈应用程序状态 组成规则。 作为一个基点,策略由一组 DMM策略状态组成。 每个策略包含 两个应用程序状态条目, 每个堆栈行对应一个。 每个堆栈行的第一个条目 是状态条目。 状态项构成此策略 将应用于的状态的组合。 例如,当堆栈A处于状态X 或状态Y, 堆栈B处于状态Z时, 将应用策略1。 下一项是策略1活动时 每个堆栈角色的权重。 权重可以被认为是 每个应用程序堆栈的优先级, 可以是低优先级, 也可以是高优先级。 接下来是时间约束项。 这个条目告诉DMM调度程序 是否应该将堆栈中的命令 视为关键时间。 暂停项是一个棘手的问题。 它告诉DMM是否要考虑 暂停或不暂停应用程序堆栈。 每当堆栈的暂停状态发生变化时, DMM将调用堆栈应用程序, 要求它暂停或取消暂停其活动。 DMM本身不会基于此状态 采取任何操作。 最后一个条目是应用的活动。 目前还没有使用它,但是将来 会与policy表中找到的索引表 一起使用。 最后,有一个称为平衡模式的 常见条目, 当它处于活动状态时, 将改变策略的行为,如上所述。 我们将在下一张幻灯片中 讨论这个。 当平衡模式处于活动状态时, 将使用基于时间的动态优先级, 而不是我们在策略中 分配的权重。 它的工作方式是根据 策略内的权重将堆栈 视为高优先级, 并将给予保护时间。 它将被给予一个上最低警戒时间 和超限保护时间。 让我们用下图来解释这一点。 堆栈A被认为是高优先级的, 并具有保护时间。 它给出的最小保护时间 是100毫秒, 以及50毫秒的超限保护时间。 这意味着堆栈A保证 至少有100毫秒的高优先级 无线电时间。 在这100毫秒之后,堆栈B 可以选择抢占堆栈A, 并在那时获得高优先级, 而不是堆栈A。 现在堆栈B保证最高50毫秒的 高优先级无线电时间。 在此50毫秒过期之后, 当下一次抢占发生时,优先级 将移回堆栈A,它将再次被视为 高优先级堆栈。 平衡模式对于收集器类型的 应用程序特别有用, 因为它总是在接收数据。 现在,我们将回到DMM调度程序 在抢占之后偶尔 重新调度命令的问题。 每当DMM抢占一个长时间的 接收命令时, 它将选择重新调度该命令, 而不是通知堆栈。 DMM将为堆栈应用程序 屏蔽此活动, 这意味着对于堆栈应用程序, 它看起来就像一个 正在进行的RX活动, 而实际上它可能是 几个小的活动, 中间可能有抢占。 现在,让我们看看为了运行DMM, 应用程序在代码方面需要什么。 应用程序与DMM的交互量 取决于您定义的策略表。 如果定义多个策略,应用程序 需要使用状态更新DMM。 只有一个策略或一个状态, 应用程序可能不需要 使用状态更新DMM, 但是您可以在开始时 只初始化一次DMM。 在代码中,这意味着作为基线, 您必须从初始化 和打开策略管理器开始。 初始化策略管理器时, 将传递要使用哪个策略表 以及它包含多少策略。 接下来,您必须初始化 并打开DMM调度程序。 DMM调度程序接受两个参数。 它接受堆栈角色和索引表指针, 索引表指针也在策略表中定义。 最后,您必须在DMM时间表内 注册客户端。 注册连接到相关堆栈的 任务句柄。 它将此绑定到特定的堆栈角色。 例如,堆栈A的任务句柄 绑定到堆栈角色堆栈A。 如果在系统中使用多个策略 或应用程序堆栈, 还可能需要使用应用程序的 当前状态更新DMM策略管理器。 在我们即将结束这节课的时候, 让我们看看今天DMM 有哪些培训材料。 首先,作为SimpleLink 软件开发工具包的一部分, 今天提供了一些示例。 这些示例展示了 可用TI堆栈产品的不同组合。 在每个示例中,BLE外围设备 都与第二个堆栈相结合。 例如,在TI 15.4的情况下, BLE外设与TI 15.4传感器相结合。 在EasyLink的情况下, BLE外围设备 与EasyLink无线传感器 网络节点相结合。 BLE外围设备与Zigbee终端设备 或Zigbee路由器相结合。 在每个示例中,BLE外围设备 都提供了到另一个堆栈的接口, 允许您使用智能手机 与它进行交互。 关于文档和其他培训材料, 您可以在SDK 和dev.ti.com/tirex网站上 找到DMM用户指南, 它提供最新和详细的 DMM说明,以及如何使用它。 在dev.ti.com/tirex网站上, 有一组SimpleLink Academy培训模块, 可用于DMM在线。 本培训涵盖了诸如DMM基础知识、 如何定制一个示例 以适合您自己的用例 以及如何将DMM集成到 已有的项目中等主题。 我们现在已经结束了本次会议。 感谢收看。
大家好,欢迎来到这个 关于动态多协议管理器的会议。 它是什么? 它是如何工作的? 以及如何使用它? 在本节中,我们将介绍 使用动态多协议管理器的 基本原理, 这是一个软件模块, 允许多个无线电协议栈 在单个CC13X2或CC26X2设备上 共存和同时操作。 动态多协议管理器 使应用程序能够从单个MCU上的 多个无线协议中获益。 例如,这可以是通过Zigbee实现的 智能手机可访问性 和家庭自动化网络。 我叫Max[听不清], 我是德州仪器公司的 一名软件应用工程师。 在本次会议期间, 我们将尝试讨论以下主题。 什么是动态多协议管理器 或简称DMM? 它给系统带来了什么价值? DMM如何运作 以及它是如何工作的? 什么是DMM策略表,它的策略 如何定义系统行为? 在使用DMM时需要考虑 哪些限制,以及在哪里 可以找到培训材料? 本次会议分为两个主要部分。 在第1部分中,我们将讨论 DMM在非常高的级别上是什么, 它如何适应系统,基本用例, 它如何工作, 以及与之相关的限制。 在第二部分中,我们将讨论 如何使用DMM,什么是策略表, 以及如何定义它的策略, 什么是平衡模式, 以及应用程序在代码方面 需要什么。 最后,我们今天将复习DMM的 可用培训材料。 DMM是跨层软件模块, 位于原始应用程序的这一侧。 DMM的目标是简化在一个设备上 同时运行多个无线电协议栈。 DMM由两个单独的模块组成, DMM策略管理器 和DMM调度程序。 DMM策略管理器持有系统的状态 以及与之关联的所有规则和策略。 DMM调度程序为无线电驱动程序 提供调度和冲突解决功能。 让我们从DMM的 几个基本用例开始。 例如,DMM可以使用智能手机 从传感器网络访问信息。 如图所示,您可以看到 传感器节点也充当BLE外围设备, 提供与智能手机的连接。 例如,另一个用例可以是 将设备配置到现有网络中。 例如,启用DMM的设备可以是 Zigbee端设备和BLE外围设备, 其中BLE外围设备提供了 将Zigbee端设备调试到 现有Zigbee网络的简单方法。 DMM还可以用于 在两个现有网络之间 创建桥梁。 就像在这个例子中一样, 启用DMM的设备 在左边的传感器网络 和右边的Zigbee网络之间 创建了一个桥梁。 现在让我们看看策略管理器 及其工作原理。 策略管理器向DMM调度程序 提供规则, 并告诉它如何调度命令 以及如何解决冲突。 DMM上下文中的规则 在策略表中称为策略。 策略表构成了策略管理器 可以应用于系统的 完整规则集。 策略管理器可以根据系统中 运行的两个堆栈应用程序的 组合状态在规则之间 动态更改。 作为我所说的结合态的一个例子, 我们可以在这里拍这张照片。 每个堆栈应用程序都有多个状态。 堆栈应用程序A有四个-- 扫描、执行OAD、传输文件 和调试。 堆栈应用程序B有三种状态-- 广告、等待确认和空闲。 让我们假设粗体是每个应用程序的 活动状态。 DMM策略管理器将查看堆栈A 正在执行扫描, 堆栈B正在执行广告。 这将导致调用策略集, 意味着堆栈A的优先级 高于堆栈B。 现在让我们看看DMM调度程序 及其工作原理。 DMM调度程序在系统中 组织无线电命令队列。 每当堆栈向无线电驱动程序 发出命令时, 无线电驱动程序 将要求DMM调度程序 将该命令放在队列的适当位置。 当两个命令之间有冲突时, 无论是在调度时间还是在运行时, 无线电驱动程序都会调用 DMM调度程序的 冲突决议钩,并要求它解决 两个命令之间的冲突。 DMM调度程序使用动态调度方法, 而不是 分时多址调度方法。 这允许更好地利用共享广播, 因为系统中 没有固定的时间段。 现在让我们看看 DMM调度程序如何处理冲突。 当DMM调度程序 将命令放入队列时, 它将根据命令的启动时间 对队列进行排序。 假设两个命令 在查看它们的启动时间时 没有冲突, 这两个命令都将被放入队列中, 但DMM调度程序除外。 在调度期间,如果两个命令之间 发生冲突,DMM调度程序 将立即解决冲突。 当两个命令在运行时发生冲突时, DMM调度程序将在运行时 处理此问题。 我们来看一个例子 如果这是单选命令时间轴, 堆栈A从调度第一个命令开始。 目前它是队列中唯一的命令。 现在堆栈B在与堆栈A命令 完全相同的启动时间 调度命令。 这是在调度时间上的冲突, 可以立即解决。 现在堆栈A调度另一个命令 和再一个命令。 堆栈B还调度另一个命令。 假设堆栈B的第二个命令即将运行, 我们现在在运行时有一个冲突。 此冲突由决议钩解决, 当计划运行堆栈B时 调用该决议钩。 现在让我们看看使用DMM 所带来的一些限制。 DMM基本上是一个有损耗的系统, 这意味着任何冲突 或利用率超过100% 都会导致数据丢失, 这是因为DMM仲裁 一个单一的无线电源。 要记住的另一个限制是, 与CPU调度不同, 抢占命令不能恢复。 每当DMM调度程序 中止一个命令时, 该命令将不会再次运行, 直到堆栈重新调度。 DMM偶尔会尝试 重新调度命令本身, 作为恢复的替代方案。 我们过几张幻灯会再讲这个。 最后,DMM支持在给定的时间内 仅限于两个无线电协议栈。 现在让我们看看如何使用DMM, 它在代码中是什么样子的, 以及策略表是什么样子的。 使用DMM应该很容易。 我的意思是,对现有应用程序 实现DMM所需的工作量 应该相对较低。 例如,它可以像设置系统 所需的调度规则,即策略表, 一样简单; 在启动过程中初始化DMM一次; 并根据需要使用应用程序状态 更新DMM。 理论上,DMM支持任何 无线协议栈组合, 只要它是可行的。 在评估无线协议栈组合时, 请问问自己,这两个协议栈 都支持DMM吗? 两种协议都有足够的 无线电时间运行吗? 以及协议如何处理无线电拒绝, 也就是丢失。 现在让我们看看策略表 是由什么组成的, 以及它在代码中的样子。 首先,策略稳定定义了系统中 使用的无线协议栈的堆栈角色。 例如,这可以是BLE外围设备 或Zigbee设备。 用户可用的角色是由 DMM策略堆栈角色 和分子定义的角色。 这是用DMM预定义的东西, 不能由用户自己扩展。 注意如何将堆栈角色分配到 策略表中的索引顺序非常重要, 这是因为这里的索引顺序 必须与定义系统策略时 使用的任何顺序匹配。 接下来,策略表包含 对将要在系统中 使用的策略的引用。 最后,策略表包含要使用 哪个索引表的引用。 索引表目前没有使用。 但是在将来, 它将在堆栈和DMM之间 创建更深层的连接, 而不仅仅是用户和DMM之间。 现在让我们看看策略是如何设置的, 以及如何根据堆栈应用程序状态 组成规则。 作为一个基点,策略由一组 DMM策略状态组成。 每个策略包含 两个应用程序状态条目, 每个堆栈行对应一个。 每个堆栈行的第一个条目 是状态条目。 状态项构成此策略 将应用于的状态的组合。 例如,当堆栈A处于状态X 或状态Y, 堆栈B处于状态Z时, 将应用策略1。 下一项是策略1活动时 每个堆栈角色的权重。 权重可以被认为是 每个应用程序堆栈的优先级, 可以是低优先级, 也可以是高优先级。 接下来是时间约束项。 这个条目告诉DMM调度程序 是否应该将堆栈中的命令 视为关键时间。 暂停项是一个棘手的问题。 它告诉DMM是否要考虑 暂停或不暂停应用程序堆栈。 每当堆栈的暂停状态发生变化时, DMM将调用堆栈应用程序, 要求它暂停或取消暂停其活动。 DMM本身不会基于此状态 采取任何操作。 最后一个条目是应用的活动。 目前还没有使用它,但是将来 会与policy表中找到的索引表 一起使用。 最后,有一个称为平衡模式的 常见条目, 当它处于活动状态时, 将改变策略的行为,如上所述。 我们将在下一张幻灯片中 讨论这个。 当平衡模式处于活动状态时, 将使用基于时间的动态优先级, 而不是我们在策略中 分配的权重。 它的工作方式是根据 策略内的权重将堆栈 视为高优先级, 并将给予保护时间。 它将被给予一个上最低警戒时间 和超限保护时间。 让我们用下图来解释这一点。 堆栈A被认为是高优先级的, 并具有保护时间。 它给出的最小保护时间 是100毫秒, 以及50毫秒的超限保护时间。 这意味着堆栈A保证 至少有100毫秒的高优先级 无线电时间。 在这100毫秒之后,堆栈B 可以选择抢占堆栈A, 并在那时获得高优先级, 而不是堆栈A。 现在堆栈B保证最高50毫秒的 高优先级无线电时间。 在此50毫秒过期之后, 当下一次抢占发生时,优先级 将移回堆栈A,它将再次被视为 高优先级堆栈。 平衡模式对于收集器类型的 应用程序特别有用, 因为它总是在接收数据。 现在,我们将回到DMM调度程序 在抢占之后偶尔 重新调度命令的问题。 每当DMM抢占一个长时间的 接收命令时, 它将选择重新调度该命令, 而不是通知堆栈。 DMM将为堆栈应用程序 屏蔽此活动, 这意味着对于堆栈应用程序, 它看起来就像一个 正在进行的RX活动, 而实际上它可能是 几个小的活动, 中间可能有抢占。 现在,让我们看看为了运行DMM, 应用程序在代码方面需要什么。 应用程序与DMM的交互量 取决于您定义的策略表。 如果定义多个策略,应用程序 需要使用状态更新DMM。 只有一个策略或一个状态, 应用程序可能不需要 使用状态更新DMM, 但是您可以在开始时 只初始化一次DMM。 在代码中,这意味着作为基线, 您必须从初始化 和打开策略管理器开始。 初始化策略管理器时, 将传递要使用哪个策略表 以及它包含多少策略。 接下来,您必须初始化 并打开DMM调度程序。 DMM调度程序接受两个参数。 它接受堆栈角色和索引表指针, 索引表指针也在策略表中定义。 最后,您必须在DMM时间表内 注册客户端。 注册连接到相关堆栈的 任务句柄。 它将此绑定到特定的堆栈角色。 例如,堆栈A的任务句柄 绑定到堆栈角色堆栈A。 如果在系统中使用多个策略 或应用程序堆栈, 还可能需要使用应用程序的 当前状态更新DMM策略管理器。 在我们即将结束这节课的时候, 让我们看看今天DMM 有哪些培训材料。 首先,作为SimpleLink 软件开发工具包的一部分, 今天提供了一些示例。 这些示例展示了 可用TI堆栈产品的不同组合。 在每个示例中,BLE外围设备 都与第二个堆栈相结合。 例如,在TI 15.4的情况下, BLE外设与TI 15.4传感器相结合。 在EasyLink的情况下, BLE外围设备 与EasyLink无线传感器 网络节点相结合。 BLE外围设备与Zigbee终端设备 或Zigbee路由器相结合。 在每个示例中,BLE外围设备 都提供了到另一个堆栈的接口, 允许您使用智能手机 与它进行交互。 关于文档和其他培训材料, 您可以在SDK 和dev.ti.com/tirex网站上 找到DMM用户指南, 它提供最新和详细的 DMM说明,以及如何使用它。 在dev.ti.com/tirex网站上, 有一组SimpleLink Academy培训模块, 可用于DMM在线。 本培训涵盖了诸如DMM基础知识、 如何定制一个示例 以适合您自己的用例 以及如何将DMM集成到 已有的项目中等主题。 我们现在已经结束了本次会议。 感谢收看。
大家好,欢迎来到这个
关于动态多协议管理器的会议。
它是什么?
它是如何工作的?
以及如何使用它?
在本节中,我们将介绍
使用动态多协议管理器的 基本原理,
这是一个软件模块, 允许多个无线电协议栈
在单个CC13X2或CC26X2设备上
共存和同时操作。
动态多协议管理器
使应用程序能够从单个MCU上的
多个无线协议中获益。
例如,这可以是通过Zigbee实现的
智能手机可访问性 和家庭自动化网络。
我叫Max[听不清], 我是德州仪器公司的
一名软件应用工程师。
在本次会议期间, 我们将尝试讨论以下主题。
什么是动态多协议管理器
或简称DMM?
它给系统带来了什么价值?
DMM如何运作 以及它是如何工作的?
什么是DMM策略表,它的策略
如何定义系统行为?
在使用DMM时需要考虑
哪些限制,以及在哪里
可以找到培训材料?
本次会议分为两个主要部分。
在第1部分中,我们将讨论
DMM在非常高的级别上是什么,
它如何适应系统,基本用例, 它如何工作,
以及与之相关的限制。
在第二部分中,我们将讨论
如何使用DMM,什么是策略表,
以及如何定义它的策略, 什么是平衡模式,
以及应用程序在代码方面 需要什么。
最后,我们今天将复习DMM的
可用培训材料。
DMM是跨层软件模块,
位于原始应用程序的这一侧。
DMM的目标是简化在一个设备上
同时运行多个无线电协议栈。
DMM由两个单独的模块组成,
DMM策略管理器 和DMM调度程序。
DMM策略管理器持有系统的状态
以及与之关联的所有规则和策略。
DMM调度程序为无线电驱动程序
提供调度和冲突解决功能。
让我们从DMM的 几个基本用例开始。
例如,DMM可以使用智能手机
从传感器网络访问信息。
如图所示,您可以看到
传感器节点也充当BLE外围设备,
提供与智能手机的连接。
例如,另一个用例可以是
将设备配置到现有网络中。
例如,启用DMM的设备可以是
Zigbee端设备和BLE外围设备,
其中BLE外围设备提供了
将Zigbee端设备调试到
现有Zigbee网络的简单方法。
DMM还可以用于 在两个现有网络之间
创建桥梁。
就像在这个例子中一样, 启用DMM的设备
在左边的传感器网络
和右边的Zigbee网络之间 创建了一个桥梁。
现在让我们看看策略管理器 及其工作原理。
策略管理器向DMM调度程序 提供规则,
并告诉它如何调度命令
以及如何解决冲突。
DMM上下文中的规则
在策略表中称为策略。
策略表构成了策略管理器
可以应用于系统的
完整规则集。
策略管理器可以根据系统中
运行的两个堆栈应用程序的
组合状态在规则之间
动态更改。
作为我所说的结合态的一个例子,
我们可以在这里拍这张照片。
每个堆栈应用程序都有多个状态。
堆栈应用程序A有四个--
扫描、执行OAD、传输文件
和调试。
堆栈应用程序B有三种状态--
广告、等待确认和空闲。
让我们假设粗体是每个应用程序的
活动状态。
DMM策略管理器将查看堆栈A
正在执行扫描,
堆栈B正在执行广告。
这将导致调用策略集,
意味着堆栈A的优先级 高于堆栈B。
现在让我们看看DMM调度程序 及其工作原理。
DMM调度程序在系统中
组织无线电命令队列。
每当堆栈向无线电驱动程序 发出命令时,
无线电驱动程序 将要求DMM调度程序
将该命令放在队列的适当位置。
当两个命令之间有冲突时,
无论是在调度时间还是在运行时,
无线电驱动程序都会调用 DMM调度程序的
冲突决议钩,并要求它解决
两个命令之间的冲突。
DMM调度程序使用动态调度方法, 而不是
分时多址调度方法。
这允许更好地利用共享广播,
因为系统中
没有固定的时间段。
现在让我们看看 DMM调度程序如何处理冲突。
当DMM调度程序 将命令放入队列时,
它将根据命令的启动时间
对队列进行排序。
假设两个命令 在查看它们的启动时间时
没有冲突,
这两个命令都将被放入队列中,
但DMM调度程序除外。
在调度期间,如果两个命令之间
发生冲突,DMM调度程序
将立即解决冲突。
当两个命令在运行时发生冲突时,
DMM调度程序将在运行时
处理此问题。
我们来看一个例子
如果这是单选命令时间轴,
堆栈A从调度第一个命令开始。
目前它是队列中唯一的命令。
现在堆栈B在与堆栈A命令 完全相同的启动时间
调度命令。
这是在调度时间上的冲突,
可以立即解决。
现在堆栈A调度另一个命令 和再一个命令。
堆栈B还调度另一个命令。
假设堆栈B的第二个命令即将运行,
我们现在在运行时有一个冲突。
此冲突由决议钩解决,
当计划运行堆栈B时 调用该决议钩。
现在让我们看看使用DMM
所带来的一些限制。
DMM基本上是一个有损耗的系统,
这意味着任何冲突 或利用率超过100%
都会导致数据丢失,
这是因为DMM仲裁 一个单一的无线电源。
要记住的另一个限制是, 与CPU调度不同,
抢占命令不能恢复。
每当DMM调度程序 中止一个命令时,
该命令将不会再次运行, 直到堆栈重新调度。
DMM偶尔会尝试 重新调度命令本身,
作为恢复的替代方案。
我们过几张幻灯会再讲这个。
最后,DMM支持在给定的时间内
仅限于两个无线电协议栈。
现在让我们看看如何使用DMM, 它在代码中是什么样子的,
以及策略表是什么样子的。
使用DMM应该很容易。
我的意思是,对现有应用程序
实现DMM所需的工作量
应该相对较低。
例如,它可以像设置系统
所需的调度规则,即策略表, 一样简单;
在启动过程中初始化DMM一次;
并根据需要使用应用程序状态 更新DMM。
理论上,DMM支持任何
无线协议栈组合, 只要它是可行的。
在评估无线协议栈组合时,
请问问自己,这两个协议栈 都支持DMM吗?
两种协议都有足够的 无线电时间运行吗?
以及协议如何处理无线电拒绝,
也就是丢失。
现在让我们看看策略表 是由什么组成的,
以及它在代码中的样子。
首先,策略稳定定义了系统中
使用的无线协议栈的堆栈角色。
例如,这可以是BLE外围设备 或Zigbee设备。
用户可用的角色是由
DMM策略堆栈角色
和分子定义的角色。
这是用DMM预定义的东西,
不能由用户自己扩展。
注意如何将堆栈角色分配到
策略表中的索引顺序非常重要,
这是因为这里的索引顺序
必须与定义系统策略时 使用的任何顺序匹配。
接下来,策略表包含 对将要在系统中
使用的策略的引用。
最后,策略表包含要使用
哪个索引表的引用。
索引表目前没有使用。
但是在将来,
它将在堆栈和DMM之间 创建更深层的连接,
而不仅仅是用户和DMM之间。
现在让我们看看策略是如何设置的,
以及如何根据堆栈应用程序状态
组成规则。
作为一个基点,策略由一组
DMM策略状态组成。
每个策略包含 两个应用程序状态条目,
每个堆栈行对应一个。
每个堆栈行的第一个条目 是状态条目。
状态项构成此策略
将应用于的状态的组合。
例如,当堆栈A处于状态X 或状态Y,
堆栈B处于状态Z时, 将应用策略1。
下一项是策略1活动时
每个堆栈角色的权重。
权重可以被认为是 每个应用程序堆栈的优先级,
可以是低优先级, 也可以是高优先级。
接下来是时间约束项。
这个条目告诉DMM调度程序
是否应该将堆栈中的命令
视为关键时间。
暂停项是一个棘手的问题。
它告诉DMM是否要考虑
暂停或不暂停应用程序堆栈。
每当堆栈的暂停状态发生变化时,
DMM将调用堆栈应用程序,
要求它暂停或取消暂停其活动。
DMM本身不会基于此状态 采取任何操作。
最后一个条目是应用的活动。
目前还没有使用它,但是将来
会与policy表中找到的索引表 一起使用。
最后,有一个称为平衡模式的 常见条目,
当它处于活动状态时,
将改变策略的行为,如上所述。
我们将在下一张幻灯片中 讨论这个。
当平衡模式处于活动状态时,
将使用基于时间的动态优先级,
而不是我们在策略中
分配的权重。
它的工作方式是根据
策略内的权重将堆栈 视为高优先级,
并将给予保护时间。
它将被给予一个上最低警戒时间
和超限保护时间。
让我们用下图来解释这一点。
堆栈A被认为是高优先级的,
并具有保护时间。
它给出的最小保护时间 是100毫秒,
以及50毫秒的超限保护时间。
这意味着堆栈A保证
至少有100毫秒的高优先级
无线电时间。
在这100毫秒之后,堆栈B
可以选择抢占堆栈A, 并在那时获得高优先级,
而不是堆栈A。
现在堆栈B保证最高50毫秒的
高优先级无线电时间。
在此50毫秒过期之后,
当下一次抢占发生时,优先级
将移回堆栈A,它将再次被视为
高优先级堆栈。
平衡模式对于收集器类型的
应用程序特别有用, 因为它总是在接收数据。
现在,我们将回到DMM调度程序
在抢占之后偶尔
重新调度命令的问题。
每当DMM抢占一个长时间的 接收命令时,
它将选择重新调度该命令,
而不是通知堆栈。
DMM将为堆栈应用程序 屏蔽此活动,
这意味着对于堆栈应用程序,
它看起来就像一个 正在进行的RX活动,
而实际上它可能是
几个小的活动, 中间可能有抢占。
现在,让我们看看为了运行DMM,
应用程序在代码方面需要什么。
应用程序与DMM的交互量
取决于您定义的策略表。
如果定义多个策略,应用程序
需要使用状态更新DMM。
只有一个策略或一个状态,
应用程序可能不需要 使用状态更新DMM,
但是您可以在开始时
只初始化一次DMM。
在代码中,这意味着作为基线,
您必须从初始化
和打开策略管理器开始。
初始化策略管理器时,
将传递要使用哪个策略表
以及它包含多少策略。
接下来,您必须初始化 并打开DMM调度程序。
DMM调度程序接受两个参数。
它接受堆栈角色和索引表指针,
索引表指针也在策略表中定义。
最后,您必须在DMM时间表内
注册客户端。
注册连接到相关堆栈的
任务句柄。
它将此绑定到特定的堆栈角色。
例如,堆栈A的任务句柄
绑定到堆栈角色堆栈A。 如果在系统中使用多个策略
或应用程序堆栈,
还可能需要使用应用程序的
当前状态更新DMM策略管理器。
在我们即将结束这节课的时候,
让我们看看今天DMM
有哪些培训材料。
首先,作为SimpleLink
软件开发工具包的一部分,
今天提供了一些示例。 这些示例展示了
可用TI堆栈产品的不同组合。
在每个示例中,BLE外围设备
都与第二个堆栈相结合。
例如,在TI 15.4的情况下,
BLE外设与TI 15.4传感器相结合。
在EasyLink的情况下, BLE外围设备
与EasyLink无线传感器 网络节点相结合。
BLE外围设备与Zigbee终端设备
或Zigbee路由器相结合。
在每个示例中,BLE外围设备
都提供了到另一个堆栈的接口,
允许您使用智能手机 与它进行交互。
关于文档和其他培训材料,
您可以在SDK 和dev.ti.com/tirex网站上
找到DMM用户指南, 它提供最新和详细的
DMM说明,以及如何使用它。
在dev.ti.com/tirex网站上,
有一组SimpleLink Academy培训模块, 可用于DMM在线。
本培训涵盖了诸如DMM基础知识、
如何定制一个示例 以适合您自己的用例
以及如何将DMM集成到 已有的项目中等主题。
我们现在已经结束了本次会议。
感谢收看。
大家好,欢迎来到这个 关于动态多协议管理器的会议。 它是什么? 它是如何工作的? 以及如何使用它? 在本节中,我们将介绍 使用动态多协议管理器的 基本原理, 这是一个软件模块, 允许多个无线电协议栈 在单个CC13X2或CC26X2设备上 共存和同时操作。 动态多协议管理器 使应用程序能够从单个MCU上的 多个无线协议中获益。 例如,这可以是通过Zigbee实现的 智能手机可访问性 和家庭自动化网络。 我叫Max[听不清], 我是德州仪器公司的 一名软件应用工程师。 在本次会议期间, 我们将尝试讨论以下主题。 什么是动态多协议管理器 或简称DMM? 它给系统带来了什么价值? DMM如何运作 以及它是如何工作的? 什么是DMM策略表,它的策略 如何定义系统行为? 在使用DMM时需要考虑 哪些限制,以及在哪里 可以找到培训材料? 本次会议分为两个主要部分。 在第1部分中,我们将讨论 DMM在非常高的级别上是什么, 它如何适应系统,基本用例, 它如何工作, 以及与之相关的限制。 在第二部分中,我们将讨论 如何使用DMM,什么是策略表, 以及如何定义它的策略, 什么是平衡模式, 以及应用程序在代码方面 需要什么。 最后,我们今天将复习DMM的 可用培训材料。 DMM是跨层软件模块, 位于原始应用程序的这一侧。 DMM的目标是简化在一个设备上 同时运行多个无线电协议栈。 DMM由两个单独的模块组成, DMM策略管理器 和DMM调度程序。 DMM策略管理器持有系统的状态 以及与之关联的所有规则和策略。 DMM调度程序为无线电驱动程序 提供调度和冲突解决功能。 让我们从DMM的 几个基本用例开始。 例如,DMM可以使用智能手机 从传感器网络访问信息。 如图所示,您可以看到 传感器节点也充当BLE外围设备, 提供与智能手机的连接。 例如,另一个用例可以是 将设备配置到现有网络中。 例如,启用DMM的设备可以是 Zigbee端设备和BLE外围设备, 其中BLE外围设备提供了 将Zigbee端设备调试到 现有Zigbee网络的简单方法。 DMM还可以用于 在两个现有网络之间 创建桥梁。 就像在这个例子中一样, 启用DMM的设备 在左边的传感器网络 和右边的Zigbee网络之间 创建了一个桥梁。 现在让我们看看策略管理器 及其工作原理。 策略管理器向DMM调度程序 提供规则, 并告诉它如何调度命令 以及如何解决冲突。 DMM上下文中的规则 在策略表中称为策略。 策略表构成了策略管理器 可以应用于系统的 完整规则集。 策略管理器可以根据系统中 运行的两个堆栈应用程序的 组合状态在规则之间 动态更改。 作为我所说的结合态的一个例子, 我们可以在这里拍这张照片。 每个堆栈应用程序都有多个状态。 堆栈应用程序A有四个-- 扫描、执行OAD、传输文件 和调试。 堆栈应用程序B有三种状态-- 广告、等待确认和空闲。 让我们假设粗体是每个应用程序的 活动状态。 DMM策略管理器将查看堆栈A 正在执行扫描, 堆栈B正在执行广告。 这将导致调用策略集, 意味着堆栈A的优先级 高于堆栈B。 现在让我们看看DMM调度程序 及其工作原理。 DMM调度程序在系统中 组织无线电命令队列。 每当堆栈向无线电驱动程序 发出命令时, 无线电驱动程序 将要求DMM调度程序 将该命令放在队列的适当位置。 当两个命令之间有冲突时, 无论是在调度时间还是在运行时, 无线电驱动程序都会调用 DMM调度程序的 冲突决议钩,并要求它解决 两个命令之间的冲突。 DMM调度程序使用动态调度方法, 而不是 分时多址调度方法。 这允许更好地利用共享广播, 因为系统中 没有固定的时间段。 现在让我们看看 DMM调度程序如何处理冲突。 当DMM调度程序 将命令放入队列时, 它将根据命令的启动时间 对队列进行排序。 假设两个命令 在查看它们的启动时间时 没有冲突, 这两个命令都将被放入队列中, 但DMM调度程序除外。 在调度期间,如果两个命令之间 发生冲突,DMM调度程序 将立即解决冲突。 当两个命令在运行时发生冲突时, DMM调度程序将在运行时 处理此问题。 我们来看一个例子 如果这是单选命令时间轴, 堆栈A从调度第一个命令开始。 目前它是队列中唯一的命令。 现在堆栈B在与堆栈A命令 完全相同的启动时间 调度命令。 这是在调度时间上的冲突, 可以立即解决。 现在堆栈A调度另一个命令 和再一个命令。 堆栈B还调度另一个命令。 假设堆栈B的第二个命令即将运行, 我们现在在运行时有一个冲突。 此冲突由决议钩解决, 当计划运行堆栈B时 调用该决议钩。 现在让我们看看使用DMM 所带来的一些限制。 DMM基本上是一个有损耗的系统, 这意味着任何冲突 或利用率超过100% 都会导致数据丢失, 这是因为DMM仲裁 一个单一的无线电源。 要记住的另一个限制是, 与CPU调度不同, 抢占命令不能恢复。 每当DMM调度程序 中止一个命令时, 该命令将不会再次运行, 直到堆栈重新调度。 DMM偶尔会尝试 重新调度命令本身, 作为恢复的替代方案。 我们过几张幻灯会再讲这个。 最后,DMM支持在给定的时间内 仅限于两个无线电协议栈。 现在让我们看看如何使用DMM, 它在代码中是什么样子的, 以及策略表是什么样子的。 使用DMM应该很容易。 我的意思是,对现有应用程序 实现DMM所需的工作量 应该相对较低。 例如,它可以像设置系统 所需的调度规则,即策略表, 一样简单; 在启动过程中初始化DMM一次; 并根据需要使用应用程序状态 更新DMM。 理论上,DMM支持任何 无线协议栈组合, 只要它是可行的。 在评估无线协议栈组合时, 请问问自己,这两个协议栈 都支持DMM吗? 两种协议都有足够的 无线电时间运行吗? 以及协议如何处理无线电拒绝, 也就是丢失。 现在让我们看看策略表 是由什么组成的, 以及它在代码中的样子。 首先,策略稳定定义了系统中 使用的无线协议栈的堆栈角色。 例如,这可以是BLE外围设备 或Zigbee设备。 用户可用的角色是由 DMM策略堆栈角色 和分子定义的角色。 这是用DMM预定义的东西, 不能由用户自己扩展。 注意如何将堆栈角色分配到 策略表中的索引顺序非常重要, 这是因为这里的索引顺序 必须与定义系统策略时 使用的任何顺序匹配。 接下来,策略表包含 对将要在系统中 使用的策略的引用。 最后,策略表包含要使用 哪个索引表的引用。 索引表目前没有使用。 但是在将来, 它将在堆栈和DMM之间 创建更深层的连接, 而不仅仅是用户和DMM之间。 现在让我们看看策略是如何设置的, 以及如何根据堆栈应用程序状态 组成规则。 作为一个基点,策略由一组 DMM策略状态组成。 每个策略包含 两个应用程序状态条目, 每个堆栈行对应一个。 每个堆栈行的第一个条目 是状态条目。 状态项构成此策略 将应用于的状态的组合。 例如,当堆栈A处于状态X 或状态Y, 堆栈B处于状态Z时, 将应用策略1。 下一项是策略1活动时 每个堆栈角色的权重。 权重可以被认为是 每个应用程序堆栈的优先级, 可以是低优先级, 也可以是高优先级。 接下来是时间约束项。 这个条目告诉DMM调度程序 是否应该将堆栈中的命令 视为关键时间。 暂停项是一个棘手的问题。 它告诉DMM是否要考虑 暂停或不暂停应用程序堆栈。 每当堆栈的暂停状态发生变化时, DMM将调用堆栈应用程序, 要求它暂停或取消暂停其活动。 DMM本身不会基于此状态 采取任何操作。 最后一个条目是应用的活动。 目前还没有使用它,但是将来 会与policy表中找到的索引表 一起使用。 最后,有一个称为平衡模式的 常见条目, 当它处于活动状态时, 将改变策略的行为,如上所述。 我们将在下一张幻灯片中 讨论这个。 当平衡模式处于活动状态时, 将使用基于时间的动态优先级, 而不是我们在策略中 分配的权重。 它的工作方式是根据 策略内的权重将堆栈 视为高优先级, 并将给予保护时间。 它将被给予一个上最低警戒时间 和超限保护时间。 让我们用下图来解释这一点。 堆栈A被认为是高优先级的, 并具有保护时间。 它给出的最小保护时间 是100毫秒, 以及50毫秒的超限保护时间。 这意味着堆栈A保证 至少有100毫秒的高优先级 无线电时间。 在这100毫秒之后,堆栈B 可以选择抢占堆栈A, 并在那时获得高优先级, 而不是堆栈A。 现在堆栈B保证最高50毫秒的 高优先级无线电时间。 在此50毫秒过期之后, 当下一次抢占发生时,优先级 将移回堆栈A,它将再次被视为 高优先级堆栈。 平衡模式对于收集器类型的 应用程序特别有用, 因为它总是在接收数据。 现在,我们将回到DMM调度程序 在抢占之后偶尔 重新调度命令的问题。 每当DMM抢占一个长时间的 接收命令时, 它将选择重新调度该命令, 而不是通知堆栈。 DMM将为堆栈应用程序 屏蔽此活动, 这意味着对于堆栈应用程序, 它看起来就像一个 正在进行的RX活动, 而实际上它可能是 几个小的活动, 中间可能有抢占。 现在,让我们看看为了运行DMM, 应用程序在代码方面需要什么。 应用程序与DMM的交互量 取决于您定义的策略表。 如果定义多个策略,应用程序 需要使用状态更新DMM。 只有一个策略或一个状态, 应用程序可能不需要 使用状态更新DMM, 但是您可以在开始时 只初始化一次DMM。 在代码中,这意味着作为基线, 您必须从初始化 和打开策略管理器开始。 初始化策略管理器时, 将传递要使用哪个策略表 以及它包含多少策略。 接下来,您必须初始化 并打开DMM调度程序。 DMM调度程序接受两个参数。 它接受堆栈角色和索引表指针, 索引表指针也在策略表中定义。 最后,您必须在DMM时间表内 注册客户端。 注册连接到相关堆栈的 任务句柄。 它将此绑定到特定的堆栈角色。 例如,堆栈A的任务句柄 绑定到堆栈角色堆栈A。 如果在系统中使用多个策略 或应用程序堆栈, 还可能需要使用应用程序的 当前状态更新DMM策略管理器。 在我们即将结束这节课的时候, 让我们看看今天DMM 有哪些培训材料。 首先,作为SimpleLink 软件开发工具包的一部分, 今天提供了一些示例。 这些示例展示了 可用TI堆栈产品的不同组合。 在每个示例中,BLE外围设备 都与第二个堆栈相结合。 例如,在TI 15.4的情况下, BLE外设与TI 15.4传感器相结合。 在EasyLink的情况下, BLE外围设备 与EasyLink无线传感器 网络节点相结合。 BLE外围设备与Zigbee终端设备 或Zigbee路由器相结合。 在每个示例中,BLE外围设备 都提供了到另一个堆栈的接口, 允许您使用智能手机 与它进行交互。 关于文档和其他培训材料, 您可以在SDK 和dev.ti.com/tirex网站上 找到DMM用户指南, 它提供最新和详细的 DMM说明,以及如何使用它。 在dev.ti.com/tirex网站上, 有一组SimpleLink Academy培训模块, 可用于DMM在线。 本培训涵盖了诸如DMM基础知识、 如何定制一个示例 以适合您自己的用例 以及如何将DMM集成到 已有的项目中等主题。 我们现在已经结束了本次会议。 感谢收看。
大家好,欢迎来到这个
关于动态多协议管理器的会议。
它是什么?
它是如何工作的?
以及如何使用它?
在本节中,我们将介绍
使用动态多协议管理器的 基本原理,
这是一个软件模块, 允许多个无线电协议栈
在单个CC13X2或CC26X2设备上
共存和同时操作。
动态多协议管理器
使应用程序能够从单个MCU上的
多个无线协议中获益。
例如,这可以是通过Zigbee实现的
智能手机可访问性 和家庭自动化网络。
我叫Max[听不清], 我是德州仪器公司的
一名软件应用工程师。
在本次会议期间, 我们将尝试讨论以下主题。
什么是动态多协议管理器
或简称DMM?
它给系统带来了什么价值?
DMM如何运作 以及它是如何工作的?
什么是DMM策略表,它的策略
如何定义系统行为?
在使用DMM时需要考虑
哪些限制,以及在哪里
可以找到培训材料?
本次会议分为两个主要部分。
在第1部分中,我们将讨论
DMM在非常高的级别上是什么,
它如何适应系统,基本用例, 它如何工作,
以及与之相关的限制。
在第二部分中,我们将讨论
如何使用DMM,什么是策略表,
以及如何定义它的策略, 什么是平衡模式,
以及应用程序在代码方面 需要什么。
最后,我们今天将复习DMM的
可用培训材料。
DMM是跨层软件模块,
位于原始应用程序的这一侧。
DMM的目标是简化在一个设备上
同时运行多个无线电协议栈。
DMM由两个单独的模块组成,
DMM策略管理器 和DMM调度程序。
DMM策略管理器持有系统的状态
以及与之关联的所有规则和策略。
DMM调度程序为无线电驱动程序
提供调度和冲突解决功能。
让我们从DMM的 几个基本用例开始。
例如,DMM可以使用智能手机
从传感器网络访问信息。
如图所示,您可以看到
传感器节点也充当BLE外围设备,
提供与智能手机的连接。
例如,另一个用例可以是
将设备配置到现有网络中。
例如,启用DMM的设备可以是
Zigbee端设备和BLE外围设备,
其中BLE外围设备提供了
将Zigbee端设备调试到
现有Zigbee网络的简单方法。
DMM还可以用于 在两个现有网络之间
创建桥梁。
就像在这个例子中一样, 启用DMM的设备
在左边的传感器网络
和右边的Zigbee网络之间 创建了一个桥梁。
现在让我们看看策略管理器 及其工作原理。
策略管理器向DMM调度程序 提供规则,
并告诉它如何调度命令
以及如何解决冲突。
DMM上下文中的规则
在策略表中称为策略。
策略表构成了策略管理器
可以应用于系统的
完整规则集。
策略管理器可以根据系统中
运行的两个堆栈应用程序的
组合状态在规则之间
动态更改。
作为我所说的结合态的一个例子,
我们可以在这里拍这张照片。
每个堆栈应用程序都有多个状态。
堆栈应用程序A有四个--
扫描、执行OAD、传输文件
和调试。
堆栈应用程序B有三种状态--
广告、等待确认和空闲。
让我们假设粗体是每个应用程序的
活动状态。
DMM策略管理器将查看堆栈A
正在执行扫描,
堆栈B正在执行广告。
这将导致调用策略集,
意味着堆栈A的优先级 高于堆栈B。
现在让我们看看DMM调度程序 及其工作原理。
DMM调度程序在系统中
组织无线电命令队列。
每当堆栈向无线电驱动程序 发出命令时,
无线电驱动程序 将要求DMM调度程序
将该命令放在队列的适当位置。
当两个命令之间有冲突时,
无论是在调度时间还是在运行时,
无线电驱动程序都会调用 DMM调度程序的
冲突决议钩,并要求它解决
两个命令之间的冲突。
DMM调度程序使用动态调度方法, 而不是
分时多址调度方法。
这允许更好地利用共享广播,
因为系统中
没有固定的时间段。
现在让我们看看 DMM调度程序如何处理冲突。
当DMM调度程序 将命令放入队列时,
它将根据命令的启动时间
对队列进行排序。
假设两个命令 在查看它们的启动时间时
没有冲突,
这两个命令都将被放入队列中,
但DMM调度程序除外。
在调度期间,如果两个命令之间
发生冲突,DMM调度程序
将立即解决冲突。
当两个命令在运行时发生冲突时,
DMM调度程序将在运行时
处理此问题。
我们来看一个例子
如果这是单选命令时间轴,
堆栈A从调度第一个命令开始。
目前它是队列中唯一的命令。
现在堆栈B在与堆栈A命令 完全相同的启动时间
调度命令。
这是在调度时间上的冲突,
可以立即解决。
现在堆栈A调度另一个命令 和再一个命令。
堆栈B还调度另一个命令。
假设堆栈B的第二个命令即将运行,
我们现在在运行时有一个冲突。
此冲突由决议钩解决,
当计划运行堆栈B时 调用该决议钩。
现在让我们看看使用DMM
所带来的一些限制。
DMM基本上是一个有损耗的系统,
这意味着任何冲突 或利用率超过100%
都会导致数据丢失,
这是因为DMM仲裁 一个单一的无线电源。
要记住的另一个限制是, 与CPU调度不同,
抢占命令不能恢复。
每当DMM调度程序 中止一个命令时,
该命令将不会再次运行, 直到堆栈重新调度。
DMM偶尔会尝试 重新调度命令本身,
作为恢复的替代方案。
我们过几张幻灯会再讲这个。
最后,DMM支持在给定的时间内
仅限于两个无线电协议栈。
现在让我们看看如何使用DMM, 它在代码中是什么样子的,
以及策略表是什么样子的。
使用DMM应该很容易。
我的意思是,对现有应用程序
实现DMM所需的工作量
应该相对较低。
例如,它可以像设置系统
所需的调度规则,即策略表, 一样简单;
在启动过程中初始化DMM一次;
并根据需要使用应用程序状态 更新DMM。
理论上,DMM支持任何
无线协议栈组合, 只要它是可行的。
在评估无线协议栈组合时,
请问问自己,这两个协议栈 都支持DMM吗?
两种协议都有足够的 无线电时间运行吗?
以及协议如何处理无线电拒绝,
也就是丢失。
现在让我们看看策略表 是由什么组成的,
以及它在代码中的样子。
首先,策略稳定定义了系统中
使用的无线协议栈的堆栈角色。
例如,这可以是BLE外围设备 或Zigbee设备。
用户可用的角色是由
DMM策略堆栈角色
和分子定义的角色。
这是用DMM预定义的东西,
不能由用户自己扩展。
注意如何将堆栈角色分配到
策略表中的索引顺序非常重要,
这是因为这里的索引顺序
必须与定义系统策略时 使用的任何顺序匹配。
接下来,策略表包含 对将要在系统中
使用的策略的引用。
最后,策略表包含要使用
哪个索引表的引用。
索引表目前没有使用。
但是在将来,
它将在堆栈和DMM之间 创建更深层的连接,
而不仅仅是用户和DMM之间。
现在让我们看看策略是如何设置的,
以及如何根据堆栈应用程序状态
组成规则。
作为一个基点,策略由一组
DMM策略状态组成。
每个策略包含 两个应用程序状态条目,
每个堆栈行对应一个。
每个堆栈行的第一个条目 是状态条目。
状态项构成此策略
将应用于的状态的组合。
例如,当堆栈A处于状态X 或状态Y,
堆栈B处于状态Z时, 将应用策略1。
下一项是策略1活动时
每个堆栈角色的权重。
权重可以被认为是 每个应用程序堆栈的优先级,
可以是低优先级, 也可以是高优先级。
接下来是时间约束项。
这个条目告诉DMM调度程序
是否应该将堆栈中的命令
视为关键时间。
暂停项是一个棘手的问题。
它告诉DMM是否要考虑
暂停或不暂停应用程序堆栈。
每当堆栈的暂停状态发生变化时,
DMM将调用堆栈应用程序,
要求它暂停或取消暂停其活动。
DMM本身不会基于此状态 采取任何操作。
最后一个条目是应用的活动。
目前还没有使用它,但是将来
会与policy表中找到的索引表 一起使用。
最后,有一个称为平衡模式的 常见条目,
当它处于活动状态时,
将改变策略的行为,如上所述。
我们将在下一张幻灯片中 讨论这个。
当平衡模式处于活动状态时,
将使用基于时间的动态优先级,
而不是我们在策略中
分配的权重。
它的工作方式是根据
策略内的权重将堆栈 视为高优先级,
并将给予保护时间。
它将被给予一个上最低警戒时间
和超限保护时间。
让我们用下图来解释这一点。
堆栈A被认为是高优先级的,
并具有保护时间。
它给出的最小保护时间 是100毫秒,
以及50毫秒的超限保护时间。
这意味着堆栈A保证
至少有100毫秒的高优先级
无线电时间。
在这100毫秒之后,堆栈B
可以选择抢占堆栈A, 并在那时获得高优先级,
而不是堆栈A。
现在堆栈B保证最高50毫秒的
高优先级无线电时间。
在此50毫秒过期之后,
当下一次抢占发生时,优先级
将移回堆栈A,它将再次被视为
高优先级堆栈。
平衡模式对于收集器类型的
应用程序特别有用, 因为它总是在接收数据。
现在,我们将回到DMM调度程序
在抢占之后偶尔
重新调度命令的问题。
每当DMM抢占一个长时间的 接收命令时,
它将选择重新调度该命令,
而不是通知堆栈。
DMM将为堆栈应用程序 屏蔽此活动,
这意味着对于堆栈应用程序,
它看起来就像一个 正在进行的RX活动,
而实际上它可能是
几个小的活动, 中间可能有抢占。
现在,让我们看看为了运行DMM,
应用程序在代码方面需要什么。
应用程序与DMM的交互量
取决于您定义的策略表。
如果定义多个策略,应用程序
需要使用状态更新DMM。
只有一个策略或一个状态,
应用程序可能不需要 使用状态更新DMM,
但是您可以在开始时
只初始化一次DMM。
在代码中,这意味着作为基线,
您必须从初始化
和打开策略管理器开始。
初始化策略管理器时,
将传递要使用哪个策略表
以及它包含多少策略。
接下来,您必须初始化 并打开DMM调度程序。
DMM调度程序接受两个参数。
它接受堆栈角色和索引表指针,
索引表指针也在策略表中定义。
最后,您必须在DMM时间表内
注册客户端。
注册连接到相关堆栈的
任务句柄。
它将此绑定到特定的堆栈角色。
例如,堆栈A的任务句柄
绑定到堆栈角色堆栈A。 如果在系统中使用多个策略
或应用程序堆栈,
还可能需要使用应用程序的
当前状态更新DMM策略管理器。
在我们即将结束这节课的时候,
让我们看看今天DMM
有哪些培训材料。
首先,作为SimpleLink
软件开发工具包的一部分,
今天提供了一些示例。 这些示例展示了
可用TI堆栈产品的不同组合。
在每个示例中,BLE外围设备
都与第二个堆栈相结合。
例如,在TI 15.4的情况下,
BLE外设与TI 15.4传感器相结合。
在EasyLink的情况下, BLE外围设备
与EasyLink无线传感器 网络节点相结合。
BLE外围设备与Zigbee终端设备
或Zigbee路由器相结合。
在每个示例中,BLE外围设备
都提供了到另一个堆栈的接口,
允许您使用智能手机 与它进行交互。
关于文档和其他培训材料,
您可以在SDK 和dev.ti.com/tirex网站上
找到DMM用户指南, 它提供最新和详细的
DMM说明,以及如何使用它。
在dev.ti.com/tirex网站上,
有一组SimpleLink Academy培训模块, 可用于DMM在线。
本培训涵盖了诸如DMM基础知识、
如何定制一个示例 以适合您自己的用例
以及如何将DMM集成到 已有的项目中等主题。
我们现在已经结束了本次会议。
感谢收看。
视频报错
手机看
扫码用手机观看
收藏本课程
-
未学习 什么是动态多协议管理器(DMM)?
00:17:02
播放中
视频简介
什么是动态多协议管理器(DMM)?
所属课程:什么是动态多协议管理器(DMM)?
发布时间:2019.08.07
视频集数:1
本节视频时长:00:17:02
此培训将涵盖使用DMM(动态多协议管理器)的基础知识,这是一个软件模块,允许多个无线堆栈在单个CC13x2 / CC26x2设备上共存和同时运行.DMM使应用程序能够从多个无线中获得互斥的优势 单个MCU上的协议,例如通过BLE的智能手机访问和通过Zigbee的家庭自动化网络。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>