什么是动态多协议管理器(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集成到已有的项目中等主题。 我们现在已经结束了本次会议。
课程介绍 共计1课时,17分2秒

什么是动态多协议管理器 (DMM)

MCU BLE ZigBee CC26x2 CC13x2 DMM 动态多协议管理器 软件模块 无线堆栈 同时运行

此培训将涵盖使用DMM(动态多协议管理器)的基础知识,这是一个软件模块,允许多个无线堆栈在单个CC13x2 / CC26x2设备上共存和同时运行.DMM使应用程序能够从多个无线中获得互斥的优势 单个MCU上的协议,例如通过BLE的智能手机访问和通过Zigbee的家庭自动化网络。

  • 相关产品
  • 技术支持

推荐帖子

MSP430F2132中断的一个问题?
定义全局变量FrequencyCounter用于Timer0_A3中断程序中计数,很简单的一个,但是出现了问题! unsigned int FrequencyCounter; main(){  ...  ...} #pragma vector=TIMER0_A1_VECTOR__interrupt void Timer0_A1(void){&nbs...
零晨 微控制器 MCU
【MSP430 编译器使用经验】+Energia初探
Energia是一种挺有意思的工具,界面简单,功能清晰。如果用习惯了CCS,KEIL,就会觉得有些简陋。不过用一段时间后,才发现,用在MSP430上,正好。 CCS是集成的开发工具,包括了全部的TI产品,以及丰富的文档。但是MSP430系列本身就具有低功耗,精简系统和集成的特点,其实有限的硬件资源上实现功能,代码开发是非常精简的。为了帮助开发,TI有GRACE,非常简单易用,不过多少牺牲了灵活性...
fyaocn 微控制器 MCU
TI源码对TMS320f28335中断机制的进一步理解
因为TI官方给出的28335的例子中,对中断向量表的定义为 // Define Vector Table: struct PIE_VECT_TABLE { // Reset is never fetched from this table. // It will always be fetched from 0x3FFFC0 in // boot ROM    &n...
Aguilera 微控制器 MCU
【求助】149的AD
求助一段149的测量(××cc-××ss)/2的一段程序 12位时FFF是否对应着参考电压值? 我用mem0测得值还是比较准的 用mem2 根本没有反应 请高手指点迷津 程序如下 void adc_ini() { ADC12CTL0 &=~ENC; ADC12CTL0=REFON+REF2_5V+SHT0_15+SHT1_15; ADC12CTL1=CSTA...
badapple628 微控制器 MCU

54chenjq

什么是动态多协议管理器 (DMM)

2020年10月21日 18:22:42

pol666

动态多协议管理器,学习ing。

2020年10月14日 11:43:29

大明58

什么是动态多协议管理器 (DMM)

2019年11月22日 08:36:41

06010601

学习了,内容不错,值得一看!

2019年11月13日 20:55:14

shakencity

什么是动态多协议管理器 (DMM)

2019年11月06日 13:09:22

hawkier

动态多协议管理,长见识了

2019年11月04日 17:14:22

zly1986ZLY

学习了,内容不错,值得一看!

2019年10月28日 17:04:19

zx1988ZX

好好学习,天天向上!

2019年09月29日 19:16:15

zwei9

学习学习

2019年09月22日 18:16:27

hellokt43

什么是动态多协议管理器 (DMM)

2019年08月23日 16:53:43

YangTwo

动态多协议管理器(DMM

2019年08月22日 22:17:05

分享到X
微博
QQ
QQ空间
微信

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved