用于发送数据分组的方法和实现该方法的装置
1.本公开涉及分组数据网络中的分组通信领域,尤其涉及网络中的时间敏感分组的传递。
背景技术:2.时间敏感网络(time-sensitive networking,tsn)是由ieee 802.1工作组的时间敏感网络任务组开发的一组标准,其提供用于以太网中的数据的时间敏感或时间关键发送的方案。应用包括汽车或工业网络中的实时音频/视频流传输和时间关键控制信号(诸如,实时控制信号)。ieee 802.1qbv时间感知调度器可用于提供tsn帧的准时递送。
3.ieee 802.1qbv定义了一种按计划发送某些tsn以太网帧的方法,同时允许在tsn帧周围尽最大努力发送非-tsn以太网帧。由于所有网络节点都是同步的,因此支持ieee 802.1qbv的设备可以非常快速地交付关键通信,并且交付时的抖动非常低。
4.然而,ieee 802.1qbv访问控制机制要求以太网发送器能够在精确时间以良好的精度(《200ns)发送一些以太网帧,以遵守ieee 802.1qbv中使用的时间片。那些发送是时间关键的以太网帧与标准以太网帧共存,标准以太网帧通过访问控制机制(诸如,由802.1q引入的机制)发送。这种性能要求通常会导致开发特定以太网mac控制器,即,具有为了tsn支持而开发的特定扩展的控制器。这严重限制了tsn的使用,不仅是出于成本原因,还因为tsn不能用于低成本的现成微控制器设备。
5.因此,需要提供一种用于发送数据分组的改进方法和实现该方法的网络节点,以解决本领域中的常规技术的至少一些上述缺陷和缺点。
技术实现要素:6.本公开的一个目的是提供一种用于发送数据分组的改进方法和实现该方法的装置。
7.本公开的另一目的是提供一种用于发送数据分组的改进方法和实现该方法的装置,以减轻计算机网络(特别是以太网网络)中的传统时间敏感数据传递方案的上述缺陷和缺点。
8.本公开的又一个目的是提供一种用于发送数据分组的改进方法和实现该方法的装置,以用于在指定时间以所需精度发送一些以太网帧,并且管理ieee 802.1qbv标准中定义的不同时间片。
9.为了实现这些目的和其它优点并且根据本公开的目的,如本文具体实现和广泛描述的,在本公开的一个方面中,提出了一种用于发送数据分组的方法。所述方法包括:在多个连续时间循环中的当前发送循环期间,所述当前发送循环包括多个连续时段:获取一个或多个第一数据分组、所述一个或多个第一数据分组的各个第一元数据、以及与一个或多个第一数据分组相关联的第一发送优先级,其中,一个或多个第一数据分组被存储在处理器的存储器中;基于第一发送优先级,将第一元数据添加到处理器的存储器中的第一等待队列中;在当前发送循环的为了发送与第一优先级相关联的数据分组而保留的第一时段期
间,将第一元数据从第一等待队列传送到接口发送队列,其中,接口发送队列被包括在处理器和mac控制器之间的数据通信接口中;以及通过基于接口发送队列中的第一元数据将一个或多个第一数据分组从存储器发送到mac控制器中的发送队列,在传输介质上发送一个或多个第一数据分组。
10.所提出的方法可以被有利地实现以与嵌入标准mac以太网控制器的任何设备一起操作,例如使用ieee 802.1qbv调度器来用于对以太网帧的时间敏感递送。事实上,所提出的方法可以使用特别为了嵌入式应用程序设计的实时操作系统在软件中实现。此外,所提出的方法可以有利地实现以与嵌入标准mac以太网控制器的小型微控制器设备一起操作,该标准mac以太网控制器广泛用于汽车或工业网络中。
11.在一个或更多个实施方式中,所提出的方法还可以包括:获取第二数据分组、第二数据分组的第二元数据、以及与第二数据分组相关联的第二发送优先级,其中,第二数据分组被存储在处理器的存储器中;基于第二发送优先级,将第二元数据添加到处理器的存储器中的第二等待队列中;在第一时段期间,在专用于发送具有第一优先级的数据分组并且包括在第一时段内的第一优先级发送时隙之后,将第二元数据从第二等待队列发送到接口发送队列;并且在当前发送循环的第一时段之后的第二时段期间,通过基于接口发送队列中的第二元数据将第二数据分组从存储器发送到mac控制器中的发送队列,在传输介质上发送第二数据分组数据。
12.在一个或更多个实施方式中,第一时段和第二时段在时间上是连续的,没有交叠。
13.在一个或更多个实施方式中,所提出的方法还可以包括获取第二数据分组、第二数据分组的第二元数据、以及与第二数据分组相关联的第二发送优先级,其中,第二数据分组被存储在处理器的存储器中;如果在第一时段内没有获取到第二数据分组,则将第二元数据加入到接口发送队列;并且在当前发送循环的为了发送与第二优先级相关联的数据分组而保留的第二时段期间,通过基于接口发送队列中的第二元数据将第二数据分组从存储器传送到mac控制器中的发送队列,在传输介质上发送第二分组数据。
14.在一个或更多个实施方式中,第一发送优先级用于数据分组的实时发送,并且第二发送优先级用于数据分组的非实时发送。
15.在一个或更多个实施方式中,所提出的方法可以进一步包括:从由处理器执行的一个或多个第一任务接收用于在传输介质上发送一个或多个第一数据分组的一个或多个请求,其中,每个请求包括第一发送优先级,或者一个或多个第一任务与第一发送优先级相关联。
16.在一个或更多个实施方式中,一个或多个第一数据分组由mac控制器在包括在第一时段内的第一优先级发送时隙(专用于发送具有第一优先级的数据分组)期间被发送,该方法还包括:在第一发送禁用时段和/或第二发送禁用时段期间禁用在mac控制器处的数据发送,其中,第一发送禁用时段发生在第一优先发送时隙之前的第一时段期间,并且第二发送禁用时段出现在第一优先级发送时隙之后的第一时段期间。
17.在一个或更多个实施方式中,当前发送循环包括紧挨在第一时段之前发生的时间保护时段,在所述时间保护时段期间,mac控制器处的数据发送被禁用。
18.在一个或更多个实施方式中,在第一优先级发送时隙结束后的第一时段期间,将第二数据分组从第二等待队列传送到接口发送队列。
19.在一个或更多个实施方式中,将第一元数据从第一等待队列传送到接口发送队列,并且在第一预定时间之后在第一优先发送时隙开始之前的第一时段期间,基于接口发送队列中的第一元数据,将一个或多个第一数据分组从存储器传送到发送队列。
20.在一个或更多个实施方式中,所提出的方法可以进一步包括:在第二预定时间之后在第一优先级发送时隙开始之前的第一时段期间,允许通过mac控制器在传输介质上发送一个或多个第一数据分组。
21.在一个或更多个实施方式中,所提出的方法可以进一步包括:在第一优先级发送时隙期间,未完成禁用在第一预定时间之后的第一时段期间接收具有第一发送优先级的数据分组并且同时由mac控制器发送具有第一发送优先级的数据分组。
22.在一个或更多个实施方式中,所提出的方法还可以包括:基于确定同与第一发送优先级相关联的相应第一数据分组的累积大小对应的数据量可以在专用于发送具有第一优先级的数据分组并且包括在第一时段中的第一优先级发送时隙期间被发送,将第一元数据添加到第一等待队列。
23.在本公开的另一方面中,提出了一种装置,其包括处理器、能够操作地联接到处理器的存储器、以及在计算机网络中通信的网络接口,其中,该装置被配置为执行如在本公开中提出的用于发送数据分组的方法的一个或更多个实施方式。
24.在本公开的又一方面,提出了一种用可执行指令编码的非暂时性计算机可读介质,当执行该指令时,使包括与存储器可操作地联接的处理器的装置执行如在本公开中提出的用于发送数据分组的方法。
25.在本公开的又一方面,提出了一种计算机程序产品,其包括有形地实现在计算机可读介质中的计算机程序代码,所述计算机程序代码包括指令,以在指令被提供给计算机系统并被执行时,使所述计算机执行在本公开中提出的用于发送数据分组的方法。在本公开的另一方面中,提出了一种数据集,该数据集例如通过压缩或编码来表示如本文中提出的计算机程序。
26.应当理解,本发明可以以多种方式实现和利用,包括但不限于作为处理、装置、系统、设备、以及作为用于现在已知和以后开发的应用的方法。本文公开的系统的这些和其它独特特征将通过以下描述和附图变得更加明显。
27.通过参考以下附图并结合所附说明书,本公开将被更好地理解并且其多个目的和优点对于本领域技术人员将变得更加明显。
附图说明
28.[图1]
[0029]
图1示出了可以在本公开的一个或更多个实施方式中使用的ieee 802.1qbv时间感知调度器的两个连续时间循环的示例性序列。
[0030]
[图2]
[0031]
图2示出了可以在本公开的一个或更多个实施方式中使用的、连接到以太网物理层(phy)和总线存储器的示例性以太网mac的框图。
[0032]
[图3]
[0033]
图3示出了应用于实时处理的抖动的定义。
[0034]
[图4]
[0035]
图4是根据本公开的一个或更多个实施方式的被配置为使用数据分组发送特征的示例性网络节点/设备的示意性框图。
[0036]
[图5]
[0037]
图5是根据本公开的一个或更多个实施方式的用于发送数据分组的示例性方法的框图。
[0038]
[图6]
[0039]
图6是根据本公开的一个或更多个实施方式的被配置为使用数据分组发送特征的示例性网络节点/设备的示意性框图。
[0040]
[图7]
[0041]
图7示出了根据本公开的一个或更多个实施方式的用于在不同队列上分配以太网帧的示例性方案。
[0042]
[图8]
[0043]
图8示出了可以针对循环定义的事件,如在实现所提出的方法的设备中配置的那样。
具体实施方式
[0044]
为了说明的简单和清楚,附图说明了一般构造方式,并且可以省略众所周知的特征和技术的描述和细节,以避免不必要地混淆对所描述的本发明的实施方式的讨论。此外,附图中的元素不必须按比例绘制。例如,图中的一些元件的尺寸可能相对于其它元件被放大,以帮助提高对本发明的实施方式的理解。某些图可能以理想化的方式示出以帮助理解,诸如当示出具有直线、锐角和/或平行平面等的结构时,其在现实世界条件下可能会显著不那么对称和有序。不同图中的相同附图标记表示相同的元件,而相同的附图标记可以但不必须表示相同的元件。
[0045]
此外,明显的是,本文的教导可以以多种形式实现,并且本文公开的任何特定结构和/或功能仅是代表性的。特别地,本领域技术人员将理解,本文公开的一个方面可以独立于任何其它方面来实现,并且多个方面可以以各种方式组合。
[0046]
下面参考根据一个或更多个示例性实施方式的方法、系统和计算机程序的功能、引擎、框图和流程图视图来描述本公开。每个描述的功能、引擎、框图和流程图视图的框可以以硬件、软件、固件、中间件、微代码或其任何合适的组合实现。如果以软件实现,则框图和/或流程图视图的功能、引擎、框可以通过计算机程序指令或软件代码来实现,所述计算机程序指令或软件代码可以通过计算机可读介质存储或发送或被加载到通用目的计算机、专用计算机或其它可编程数据处理装置来生产机器,使得在计算机或其它可编程数据处理装置上执行的计算机程序指令或软件代码创建用于实现本文所述功能的装置。
[0047]
计算机可读介质的实施方式包括但不限于计算机存储介质和通信介质,包括便于计算机程序从一个地方到另一个地方的发送的任何介质。如本文所使用的,“计算机存储介质”可以是可以由计算机或处理器访问的任何物理介质。此外,术语“存储器”和“计算机存储介质”包括任何类型的数据存储设备,诸如但不限于硬盘驱动器、闪存驱动器或其它闪存设备(例如,记忆键、记忆棒、键驱动器)、cd-rom或其它光存储设备、dvd、磁盘存储设备或其
它磁存储设备、存储芯片、随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、智能卡或可用于携带或存储计算机处理器可读取的指令或数据结构形式的程序代码的任何其它合适的介质或它们的组合。此外,各种形式的计算机可读介质可以向计算机(包括路由器、网关、服务器或其它发送设备)有线(同轴电缆、光纤、双绞线、dsl电缆)或无线(红外线、无线电、蜂窝、微波)发送或携带指令。指令可以包括来自任何计算机编程语言的代码,包括但不限于汇编、c、c++、python、visual basic、sql、php和java。
[0048]
除非另有明确说明,否则将理解,贯穿以下描述,使用诸如处理、计算、预测、确定等术语的论述是指计算机或计算系统或类似电子计算设备的动作或处理,其操纵或将计算系统的寄存器或存储器内被表示为物理量(诸如,电子量)的数据转换为类似地被表示为计算系统的存储器、寄存器或其它此类信息储存装置、发送或显示设备内的物理量的其它数据。
[0049]
术语“包括”、“包含”、“具有”及其任何变体旨在涵盖非排他性包含,使得包括要素列表的处理、方法、物品或装置不必须受限于这些元素,而是可能包括未明确列出的其它元素或此类处理、方法、物品或装置所固有的元素。
[0050]
此外,“示例性”一词在本文中用于表示“用作示例、实例或说明”。此处描述为“示例性”的任何实施方式不必须被解释为比其它实施方式或设计更优选的和有利的。
[0051]
在以下描述和权利要求中,术语“联接”和“连接”以及它们的派生词可以无差别地用于表示两个或更多个元件彼此直接物理或电接触,或者两个或更多个元件是没有彼此直接接触的,但是仍然相互合作或互动。
[0052]
在以下描述和权利要求中,术语“有效载荷”、“有效载荷数据”、“消息”、“分组”和“数据分组”可以不加区别地使用,并且可以包括可以在节点或站点之间或通过网络进行路由或发送的数据块、协议数据单元或任何数据单元。分组可以包括一组比特,例如,这些比特可以包括一个或更多个地址字段、控制字段和数据。数据块可以是任何数据或信息位单元。
[0053]
出于本公开的目的,术语“服务器”在本文中用于指代提供处理、数据库和通信设施的服务点。作为示例而非限制,术语“服务器”可以指具有相关通信和数据存储和数据库设施的单个物理处理器,或者它可以指处理器和相关网络和存储设备的联网或集群复合体,以及支持服务器提供的服务的操作软件和一个或多个数据库系统和应用软件。服务器的配置或功能可能有很大差异,但是通常服务器可能包括一个或更多个中央处理单元和存储器。服务器还可以包括一个或更多个大容量存储设备、一个或更多个电源、一个或更多个有线或无线网络接口、一个或更多个输入/输出接口或一个或更多个操作系统,诸如windows server、mac os x、unix、linux、freebsd等。
[0054]
出于本公开的目的,“计算机网络”应被理解为指可以联接设备(这里也称为“节点”)的网络,使得例如可以在设备之间(包括在经由无线网络可操作地连接的无线设备之间)发生数据通信。网络还可以包括大容量储存装置,诸如,网络附加储存装置(nas)、储存区域网络(san)或其它形式的计算机或机器可读介质,并且可以包括或可操作地连接到服务器。网络可以包括互联网、一个或更多个局域网(lan)、一个或更多个广域网(wan)、有线类型连接、无线类型连接、蜂窝、诸如运营商电话线、光纤、同步光纤网络、同步数字层次链接、电力线通信链接(例如,ieee 61334、ieee p1901.2)、以太网、蓝牙、蓝牙低功耗(ble)或
蓝牙智能、wifi或基于ieee802.11x协议的任何连接、zigbee或基于ieee802.15.4协议的任何连接、z-wave、6lowpan(ipv6低功耗无线个人局域网)、thread、sigfox、neul、lora、任意nfc连接、2g(包括gsm/gprs/edge)/3g(包括umts/hspa)/4g(包括lte和lte-advanced)/5g蜂窝、或其任意组合。各种类型的设备(例如网关)可用于提供用于区分网络中使用的架构或协议的互操作能力。根据本公开,可以在计算机网络中使用任意数量的节点、设备、装置、链路、互连等。
[0055]
通信链路或信道可以包括例如模拟电话线、完整或部分数字线、包括卫星链路的无线链路或其它通信链路或信道,诸如本领域技术人员可能已知的。
[0056]
网络的计算设备(例如,传感器节点或致动器节点)可能能够发送或接收信号,诸如经由有线或无线网络,和/或可能能够处理和/或存储数据。
[0057]
应当理解,本公开的实施方式可以用于多种应用中。尽管本发明在这方面不受限制,但是这里公开的用于发送数据分组的方法可以用于许多装置中,诸如在分组交换网络的任何网络节点中,诸如例如以太网网络的网络节点(例如,以太网交换机、以太网桥或以太网路由器)。为清楚起见,以下描述集中于以太网网络。然而,本发明的技术特征不限于此。
[0058]
如上所述,tsn是ieee 802.1定义技术,以在标准以太网上提供确定性消息传递,以便通过以太网进行实时通信,尤其是用于汽车和工业网络。tsn帧的准时递送在802.1qbv tsn组件中得到解决,该组件定义了用于发送某些以太网帧的方案,这些帧的发送根据发送调度器是时间敏感的(以下称为“tsn帧”或“实时帧”),同时允许在tsn帧周围尽最大努力发送非-tsn以太网帧。
[0059]
由ieee 802.1时间敏感网络任务组定义的不同tsn标准可以分为三个组件类别:
[0060]
(1)时间同步:tsn网络中的时间通常从一个主源分配到所有网络节点。在大多数情况下,这是使用ieee 1588精确时间协议完成的,该协议利用以太网帧来分发时间同步信息。
[0061]
(2)调度和流量整形:调度和流量整形允许在同一网络上的具有不同优先级的不同流量类别的共存。tsn通过添加机制来增强标准以太网通信,以确保及时递送软硬实时要求。
[0062]
(3)通信路径的选择、路径预留和容错机制。
[0063]
关于调度组件,对于每个优先级,用户可以从不同的访问控制和调度机制中选择如何处理以太网帧。因此,可以将一些优先级分配给已经存在的方法(诸如,ieee802.1q严格优先级调度器)或一些新的处理方法(诸如tsn ieee 802.1qbv时间感知流量调度器)。
[0064]
ieee 802.1qbv时间感知调度器被设计成将以太网网络上的通信分成固定长度、重复时间循环。在这些循环内,可以配置不同的时间片,这些时间片可以被分配给一个或更多个以太网优先级。这种时间分片方案可用于将以太网传输介质的独占使用权授予具有严格实时约束的那些流量类别。这种独占访问消除了以太网交换机传输缓冲区中的缓冲效应,并且可以在没有非确定性中断的情况下发送时间关键流量。时间片可以被认为是虚拟通信信道,并且可以将时间关键通信与非时间关键后台流量分开。
[0065]
当以太网接口开始在传输介质上发送帧时,该发送必须在另一次发送进行之前全部完成。因此,ieee 802.1qbv时间感知调度器必须确保在调度器从一个时间片切换到下一
个时间片时以太网接口不忙于发送帧。为此,在承载时间关键流量的每个时间片前面插入保护带。在此保护带时间期间,不允许发送器开始新的发送,只能完成已经在进行的发送。保护带持续时间取决于最大帧大小和数据链路速度。
[0066]
图1示出了两个连续时间循环的示例性序列,每个时间循环包括保护带和两个时间片。在所示的序列中,在两个时间片中,第一时间片(#1)被配置为与对应于时间关键流量的最高优先级(vlan优先级7)相关联,使得只有被标记为具有vlan优先级7的时间关键tsn帧在第一时间片期间被发送。第二时间片(#2)被配置为与对应于非时间关键流量的一个或更多个较低优先级(vlan优先级0到6)相关联,并且根据标准ieee 802.1q协议处理优先级,以用于在第一时间片期间发送非时间关键tsn帧。
[0067]
保护带位于紧接在下一个时间循环的第一时间片(#1)之前的时间片的末端。
[0068]
由于tsn最多定义8个优先级水平,因此优先级水平(0
…
7)也可以分别与8个时间片(1
…
8)相关联。
[0069]
在另一个示例中,3组优先级水平(优先级7、优先级6和优先级0
…
5)也可以分别与8个时间片(1、2和3)相关联。
[0070]
为了减少由保护带引起的带宽损失,ieee 802.1qbv标准引入了长度感知调度机制,该机制检查帧是否可以在保护带内被发送而没有对接下来的片(具有高优先级)的任何侵害。
[0071]
现代微控制器单元(mcu)通常包括一些以太网介质访问控制器(mac)外围设备。它们通过减少组件数量来降低集成成本。目前市场上,嵌入到mcu和低成本微处理器单元(mpu)中的以太网控制器符合基本ieee标准,诸如以太网mac的10base-t/100base-tx 802.3、用于精密联网时钟同步的1588-2008。它们支持10/100mbps的数据发送速率,并且它们中的大多数还支持ieee 802.1q vlan标签检测。它们使用集成的直接存储器访问(dma)支持高效数据存储器传送。主机cpu和mac外围设备之间的数据交换机制基于双缓冲区(环形)或链表(链式)描述符和可编程中断,以用于灵活且高效的系统实现。
[0072]
但是,它们不支持以太网优先级,并且仅实现用于发送和接收的一个队列。所提出的方法可以有利地克服这样的限制,因为它可以在一些实施方式中被实现为软件(例如根据实施方式,作为被配置为由mcu或低成本mpu执行的计算机可读程序代码),以使mcu(分别为低成本mpu)实现所提出方法的一个或更多个实施方式。这样的软件实现可以有利地使用非常适于使用mcu或低成本mpu的嵌入式应用的实时操作系统(rtos)。
[0073]
mac外围设备通常还实现一组内部快速先进先出(fifo)存储器,以发送和接收数据分组(例如,以太网帧)。
[0074]
图2示出了示例性mac控制器10的框图,其一端可操作地连接到物理层(phy)接口11,并且另一端可操作地连接到存储器总线接口15。
[0075]
mac控制器10和驱动mac控制器10的处理器的存储器之间交换的数据从存储器总线15被接收(或被发送到存储器总线15),该存储器总线15经由可操作地连接到发送/接收(tx/rx)控制器12的dma控制器13可操作地连接到处理器的存储器。
[0076]
dma控制器13包括发送侧dma控制器13a和接收侧dma控制器13b,并且dma控制器13由dma控制单元14驱动。在数据分组发送路径上,发送侧dma控制器13a被配置用于将从存储器总线15接收的数据分组发送到tx/rx控制器12。在数据分组接收路径上,接收侧dma控制
器13b被配置用于将从tx/rx控制器12接收的数据分组发送到存储器总线15。
[0077]
dma控制单元14可操作地连接到dma控制器13和mac控制器10,并且被配置为激活/去激活dma传送。在数据分组发送路径上,tx/rx控制器12包括发送fifo存储器12a,该发送fifo存储器12a被配置用于将从发送侧dma控制器13a接收的数据分组发送到dma控制器10。在数据分组接收路径上,tx/rx控制器12包括接收fifo存储器12b,该接收fifo存储器12b被配置用于将从dma控制器10接收的数据分组发送到接收侧dma控制器13b。
[0078]
phy接口11包括数据发送路径和数据接收路径,其中,在数据发送路径上从dma控制器10接收数据并在物理介质上(诸如在用于以太网发送的同轴电缆上)发送数据,并且在数据接收路径上从物理介质接收数据,并将数据发送到mac控制器10。
[0079]
在一个或更多个实施方式中,实时系统可以被认为是一组交互式实时处理,每个实时处理在有限时间内响应于外部事件产生一些反应。实时操作系统(rtos)是一种操作系统,其内部处理遵循硬或软实时要求。rtos的典型特征包括可预测性(因为任务调度是可预测的)和确定性(因为相同的条件始终会产生相同的结果)。
[0080]
就实时处理而言,处理以及系统(通过扩展)可以被分类为以下类别之一:
[0081]
非实时:非实时系统是不存在系统操作中涉及的最后期限的系统。
[0082]
软实时:软实时系统是不满足最后期限会产生不良影响,但仍然可以容忍不良影响的系统。不良影响包括例如性能下降。
[0083]
硬实时:硬实时系统是不满足最后期限会对系统操作产生严重影响的系统。
[0084]
即使在rtos中,处理也决不会在恒定时间内做出反应,因为任何物理处理都必然会在足够小的时间尺度上产生响应时间的抖动。图3示出了响应时间,即,给定实时处理对特定事件做出反应所需的时间、以及其相关的抖动(即,偏差)dt。
[0085]
图3示出了三条时间线,分别示出了事件的发生、反应发生的最小时间以及测量反应发生和反应发生的最小时间之间的延迟的抖动。
[0086]
顶部时间线示出了事件在给定时间te的发生。rtos可能不会对在最小反应时间t之前的时间te发生事件做出反应,使得在最好的情况下,反应可能发生在时间te+t,这显示在中间时间线上。也就是说,中间时间线示出了关于事件发生后的反应定时的最佳情况。下面的时间线示出了关于事件发生后的反应定时的最坏情况,rtos在最小反应时间t增加长度为dt的抖动之前对事件的发生没有反应,因此反应发生在时间te+t+dt。
[0087]
典型的嵌入式rtos中有两种处理:任务和中断服务例程(isr)。isr和任务可以被看作是相似的,区别在于isr的执行不能等待(否则系统被阻塞),而任务可以等到执行。isr由中断触发,在触发时被执行,然后终止。与isr不同,任务可以被视为系统内部的虚拟cpu,具有其自己的寄存器组和存储器堆栈区域。
[0088]
rtos提供同步工具以允许处理之间的交互,例如在任务和isr之间的交互。提供了一些特定对象,以便任务可以等待由中断触发的一些外部事件。例如,一些rtos可以提供队列、邮箱、信号灯和互斥。
[0089]
如上所述,ieee 802.1qbv访问控制机制要求以太网发送器能够在精确时间以良好的精度(例如,以严格低于200ns的精度)发送特定以太网帧,以便将发送限制在ieee 802.1qbv中定义的时间片内。实时帧通常与传统帧(即,非实时帧)共存,这些帧可以使用访问控制机制(诸如,由ieee 802.1q引入的访问控制机制)进行发送。使用非特定以太网mac
控制器(即,没有为tsn支持开发的任何特定扩展的控制器,如图2所示),需要几微秒(μs)来启动以太网发送器自动机,将数据发送到内部控制器存储器,并且将数据帧发送到以太网物理层控制器。但是,这种延迟性能与ieee 802.1qbv要求不兼容。
[0090]
所提出的方法有利地允许在非特定以太网mac控制器(即,通常在微控制器单元(mcu)或低成本微控制器单元(mpu)上实现的以太网mac控制器)上使用ieee 802.1qbv访问控制机制。
[0091]
图4是根据本公开的实施方式的被配置为使用数据分组发送特征的示例性网络节点/设备100的示意框图。
[0092]
网络节点100可以包括中央处理单元(cpu)101、网络接口105和电源((例如,电池、插入式电源等)104。cpu101可以包括控制引擎102和存储器103。
[0093]
在图4所示的架构中,所有控制引擎102、存储器103、网络接口105和电源104都通过系统总线106可操作地相互连接。
[0094]
控制引擎102包括一个或更多个处理器,其可以是任何合适的微处理器、微控制器、现场可编程门阵列(fpga)、专用集成电路(asic)、数字信号处理芯片和/或状态机、或其组合。根据各种实施方式,cpu101可以被配置为具有用于提供并行计算的多个处理器的多处理器计算机。
[0095]
控制引擎102还可以包括计算机存储介质或者可以与计算机存储介质通信,计算机存储介质诸如但不限于存储器103,其能够存储计算机程序指令或软件代码,当其由控制引擎102的处理器执行时,使处理器执行实时操作系统103a、一个或更多个应用程序任务103b和发送引擎103c。存储器103可以是任何类型的数据存储计算机存储介质,能够存储实现所提出方法的实施方式的计算机可读程序代码,可以可操作地连接到控制引擎102并且可以与发送引擎103c一起操作,以促进发送与其相关联储存的数据分组。
[0096]
网络接口105可以包括发送/接收(tx/rx)直接存储器访问(dma)控制器105a,其可操作地连接到被配置用于控制发送数据分组的发送fifo存储器堆栈的发送/接收(tx/rx)控制器105b、以及用于接收数据的接收fifo存储器堆栈、介质访问控制器(mac)105c、以及物理层接口105d。
[0097]
在本公开的实施方式中,网络节点100被配置用于执行本文描述的数据分组发送方法。
[0098]
将理解,参考图4所示和描述的网络节点100仅作为示例被提供。许多其它架构、操作环境和配置都是可能的。节点的其它实施方式可以包括更少或更多数量的组件,并且可以结合关于图4中所示的网络节点组件描述的一些或全部功能。因此,虽然cpu101、控制引擎102、rtos 103a、应用程序任务103b、发送引擎103c、存储器103、网络接口105和电源104被示出为网络节点100的部分,不限制组件101、102、103a、103b、103c、103、105、104的位置和控制。特别地,在其它实施方式中,组件101、102、103a、103b、103c、103、105、104可以是不同实体或计算系统的部分。
[0099]
图5示出了根据本公开的一个或更多个实施方式的用于发送数据分组的方法的示例性简化流程图。
[0100]
在各种实施方式中,可以将时间划分为多个连续时间循环,包括含多个连续时段的当前发送循环。在一些实施方式中,每个时间循环可以包括相同的多个连续时段。
[0101]
在当前发送循环期间,一个或多个第一数据分组、一个或多个第一数据分组的各自的第一元数据(例如,包含对包含数据帧和帧大小的缓冲区的存储器引用的存储器结构)、以及与一个或多个第一数据分组相关联的第一发送优先级(例如,被定义用于实时发送数据分组)可以通过执行所示数据发送方法的设备获得(200)。
[0102]
例如,一个或多个第一数据分组可以从由网络节点的一个或更多个处理器执行的一个或更多个应用程序任务接收,诸如图4所示的一个应用程序任务。
[0103]
在一些实施方式中,被配置为实现所提出的方法的设备(作为数据通信网络中的网络节点操作)可以在传输介质上从由设备的一个或更多个处理器执行的一个或更多个应用程序任务接收发送一个或多个第一数据分组的一个或多个请求。根据实施方式,一个或更多个请求可以包括第一发送优先级(例如,为了数据分组的实时发送而定义的)和/或接收请求的一个或多个应用程序任务可以与第一发送优先级相关联。
[0104]
然后可以将一个或多个第一数据分组存储(201)在实现所提出的方法的设备的处理器的存储器中。基于第一发送优先级,可以将第一元数据添加(插入)(202)到处理器的存储器中的第一等待队列。
[0105]
例如,可以从由设备执行的各种应用程序任务接收数据分组,相关联的元数据描述数据分组和与接收到的数据分组的发送有关的优先级信息。有利地,只有与接收到的数据分组相关联的元数据可以被插入到等待队列(例如,fifo队列)中,而接收到的数据分组可以被存储在存储器中。
[0106]
在当前发送循环的为了发送与第一优先级相关联的数据分组而保留的第一时段期间,可以将第一元数据从第一等待队列传送(203)到包括在处理器和mac控制器之间的数据通信接口中的接口发送队列。
[0107]
然后,可以基于接口发送队列中的第一元数据将一个或多个第一数据分组从存储器传送(204)到mac控制器中的发送队列。
[0108]
一旦在mac控制器的发送队列中,一个或多个第一数据分组然后可以在第一时段期间在传输介质上被发送(205)。
[0109]
有利地,特定时段可以在每个发送循环内定义并且专用于以给定优先级发送接收到的数据分组。这允许定义为了发送与相应发送优先级相关联的数据分组(例如,时间敏感的发送的实时数据分组)而保留的发送时间窗,以便与不同发送优先级相关联的数据分组(例如,非实时数据分组)会不在此发送时间窗内被发送。因此,可以通过为了发送与相应发送优先级关联的数据分组而保留的发送时间窗来准确地控制与相应发送优先级关联的数据分组的发送定时。
[0110]
非实时数据分组的处理可以在一个或更多个实施方式中执行如下:
[0111]
可以获得例如从应用程序任务接收的第二数据分组、连同第二数据分组的第二元数据(例如,包含对包含数据帧和帧大小的缓冲区的存储器引用的存储器结构)和与第二数据分组关联的第二发送优先级(对应于非实时发送)。第二数据分组也可以存储在处理器的存储器中。
[0112]
基于第二发送优先级,可以将第二元数据添加到处理器的存储器中的第二等待队列(例如,数据分组的非实时发送的等待队列)。
[0113]
在第一时段期间,在专用于发送具有第一优先级并且包括在第一时段中的数据分
组(例如,实时数据分组)的第一优先级发送时隙之后,可以将第二元数据从第二等待队列传送到处理器和mac控制器之间的接口发送队列。
[0114]
在第一时段之后的当前发送循环的第二时段期间,可以基于接口发送队列中的第二元数据通过第二分组数据的从存储器传送到mac控制器中的发送队列的传输在传输介质上发送第二分组数据。
[0115]
非实时数据分组的处理也可以在一个或更多个实施方式中执行如下:
[0116]
如上所述,可以获取例如从应用程序任务接收的第二数据分组,连同第二数据分组的第二元数据(例如,数据描述符)和与第二数据分组相关联的第二发送优先级(对应于非实时发送)。第二数据分组也可以被存储在处理器的存储器中。
[0117]
如果在第一时段内没有获取到第二数据分组,则可以直接将第二元数据传送到处理器与mac控制器之间的接口发送队列,而无需先传送到第二等待队列。
[0118]
然后,可以如上所述进行第二数据分组的发送,即,在当前发送循环的为了发送与第二优先级相关联的数据分组而保留的第二时段期间,可以通过基于接口发送队列中的第二元数据将第二数据分组从存储器发送到mac控制器中的发送队列,在传输介质上发送第二分组数据。
[0119]
在一个或更多个实施方式中,可以为了发送实时数据分组而定义上述第一发送优先级,并且可以为了发送非实时数据分组定义上述第二发送优先级。
[0120]
如图6所示,在各种实施方式中,实现所提出的方法的设备可以被配置为根据被划分为连续循环的时间资源进行操作,每个循环可能具有相同的预定义持续时间,并且每个循环首先包括实时时段,然后是传统时段,这两个时段的持续时间可以根据实施方式被预定义或针对每个循环而变化。
[0121]
在一个或更多个实施方式中,对于每个循环,实时时段可以包括为了被配置为实现所提出的方法的一个或更多个相应设备(网络节点)保留的一个或更多个时隙。这样的设备可以被配置为仅在其保留时隙期间的实时时段期间发送数据分组(例如以太网帧)(这样的数据分组在下文中称为“rt以太网帧”)。在各种实施方式中,该时隙的位置和持续时间可以被认为从一个循环到下一个循环是静态的。该设备还可以被配置为在没有任何特定时间相关约束的传统时段期间(例如,遵循如在802.1q以太网标准中定义的访问控制机制)发送数据分组(例如以太网帧),即,可能在全双工模式下严格按照优先级顺序发送以太网帧。支持此类要求有利地允许实现新定义的ieee 801.1qbv标准。
[0122]
所提出的方案有利地允许在专用于rt以太网帧的时隙中以预定义精度(诸如,ieee 802.1qbv时间感知流量调度器所要求的精度)发送以太网帧,以及控制在传统时段内以太网帧的发送,以使不存在导致延迟rt以太网帧的发送的溢出。
[0123]
图7示出了根据一个或更多个实施方式的用于在不同队列上分配数据分组(例如以太网帧)的示例性方案。
[0124]
图7示出了被配置为实现所提出的方法的设备50的简化图,其包括可操作地连接到mac控制器56(例如,以太网mac控制器)的cpu 55,mac控制器56本身可操作地连接到物理层57(例如,以太网物理层)。
[0125]
在cpu单元上运行的一个或更多个应用程序任务58a、58b可以生成将由设备50发送的数据分组(例如,以太网帧)。要发送的帧可以是所谓的实时帧(也称为“rt帧”,在图7所
示的示例中为rt以太网帧)(其发送定时应该被精确控制)或者相反是非实时帧(称为传统帧或正常帧)。
[0126]
由于rt以太网帧可能不会立即被发送(与传统以太网帧不同),例如,可能不会在由应用程序任务生成后立即被发送,因此rt帧的挂起队列(称为“rt-帧挂起队列”)51可以在一个或更多个实施方式中在cpu 55中被配置用于在由一个或更多个应用程序任务生成它们的时间和专用时隙的开始之间存储rt以太网帧,在专用时隙期间,设备50可以通过物理介质发送rt以太网帧。
[0127]
在一个或更多个实施方式中,传统帧的挂起队列(称为“传统帧挂起队列”)52也可以被配置用于存储由一个或更多个应用程序任务在当前循环的实时时段内生成的传统以太网帧(即,不要求以给定精度实时发送的以太网帧)。
[0128]
在一个或更多个实施方式中,当接收到的传统帧的总持续时间超过传统时段的持续时间时,传统以太网帧也可以存储在传统帧挂起队列52中。
[0129]
如图7所示,除了传统帧挂起队列52和rt-帧挂起队列51之外,在一些实施方式中,可以在cpu 55和以太网mac控制器56之间共享以太网mac dma发送队列53。cpu 55可以被配置为将直接来自应用程序任务或来自传统帧挂起队列52和rt帧挂起队列51之一的以太网帧添加到该队列53。
[0130]
以太网mac控制器56可以被配置为当启用dma传送时,使帧从以太网mac dma发送队列53出队,并且开始从cpu存储器(例如,ram存储器)到以太网mac控制器56的内部以太网mac发送fifo 54(称为“以太网mac tx-fifo”)的存储器数据传送(dma传送)。一旦存储器数据传送完成,如果以太网发送器被启用,则以太网帧可以被发送到以太网物理层57,以太网物理层在接收时可以在传输介质(例如,传输线)上发送它们。在一些实施方式中,设备50可以被配置为使得可以独立地启用/禁用dma传送和以太网发送。一旦数据帧被存储到内部以太网mac发送fifo 54中,操作就会很快并且在执行时间方面具有非常低的不确定性。
[0131]
图8示出了可以为每个循环定义的一些事件,如在实现所提出的方法的设备(例如图7的设备)中配置的。这样的设备可以被配置为使得在一个循环期间,每个事件的发生触发与以太网mac外围控制或内部处理和以太网帧准备相关的特定动作。
[0132]
图8是示出根据一个或更多个实施方式的示出如何沿循环(即,沿循环的实时和传统(正常)时段)定义事件以及在实时时段内的专用传输时隙的图,
[0133]
在一个或更多个实施方式中,部分或全部事件(在图8所示的示例中,事件t0、t1、t2、t4、t5)可以通过例如由在图4所示的发送引擎中实现的定时器管理模块管理的一个或更多个定时器触发。
[0134]
下面参考图7和图8描述示例性时间事件t0、t1、t2、t3、t4和t5,图7和图8示出了它们的示例性使用。
[0135]
在循环的第一部分中定义实时时段的实施方式中,时间事件“t0”可以被定义为对应于循环的开始、以及循环的实时时段的开始。
[0136]
在一些实施方式中,可以在时间事件t0发生时禁用以太网发送。结果,以太网帧可能不被以太网mac控制器(例如,图7的以太网mac控制器56)发送到以太网物理层(例如,图7的以太网物理层57)。然而,在一些实施方式中,在时间事件“t0”发生之后,以太网mac dma发送队列53和以太网mac发送fifo 54之间的传送仍然可以实现。
[0137]
在一些实施方式中,通过dma处理(称为“rx-dma”)接收数据可以在t0发生时被启用以接收rt帧。
[0138]
在一些实施方式中,被称为“t
0,margin”的时间裕度可以有利地用于补偿由定时器管理和在“t0”事件时执行的操作引起的潜在延迟。因此,发送循环可以包括紧挨在实时时段之前出现的时间保护时段t
0,margin
,在该时间保护时段期间mac控制器处的数据发送被禁用。
[0139]
可以定义时间事件“t1”来触发rt帧发送的准备。当t1发生时,与rt挂起帧相关的元数据可能会从rt帧挂起队列51传送到以太网mac dma发送队列53(传送在图中称为“数据传送ram-》fifo”)。
[0140]
在一些实施方式中,可以进一步执行传送,以检查rt帧的累积持续时间不超过在实时时段内为设备50保留的时隙的持续时间。通过数据通信网络中的一个或更多个设备,根据所提出的方案,可以为时分复用接入中的设备定义这样的时隙,以便将实时时段划分为为了发送rt帧分别保留的一个或更多个时隙。
[0141]
因此,在一些实施方式中,可以基于确定与rt帧的累积大小相对应的数据量在为了设备在实时时段内发送rt帧预留的时隙期间可以被发送,将rt帧的元数据添加到等待队列(例如,rt帧挂起队列51)。
[0142]
在一些实施方式中,帧到以太网mac发送fifo 54的dma传送也可以在t1发生时开始。
[0143]
因此,在一些实施方式中,可以将与rt帧相关的元数据从接收时存储它们的等待队列(例如,rt帧挂起队列51)传送到包括在处理器与mac控制器之间的数据通信接口中的接口发送队列(例如,以太网max dma发送队列53),并且在为设备50保留的时隙开始之前的第一预定时间之后(例如,在时间事件t1发生时),rt帧可以从连接至处理器(cpu)的存储器被传送到mac控制器中的发送序列(例如,以太网mac发送fifo 54)。
[0144]
在一些实施方式中,称为“t
1,margin”的时间裕度可以有利地用于在t1的发生和为设备50保留的时隙的开始之间,使得与第一以太网帧相关的数据被完全传送到内部mac发送fifo。
[0145]
在一些实施方式中,通过dma处理(称为“rx-dma”)接收数据可以在t1发生时被禁用,以避免由于存储器访问和所接收帧的处理引起的干扰(附加抖动),特别是在中断管理(例如,通过中断服务例程,isr)在数据发送和接收之间被共享的设备中。
[0146]
同样,在一些实施方式中,rt帧(将在t0发生时可能已经开始的下一个循环中发送的帧)的后台处理(可能包括帧接收、处理和/或准备)可以在t1发生时被禁用。
[0147]
如上所述,时间事件“t2”可以被定义为对应于为设备50保留的时隙的开始。然后可以在t2发生时启用以太网发送,并且可以将以太网mac发送fifo 54中可用的任何帧传送到以太网物理层单元57。该传送通常非常短,并且抖动非常低,因此可以有利地将其配置为作为中断服务例程(isr)的一部分执行。
[0148]
因此,在一些实施方式中,在传输介质上从mac控制器(例如,以太网mac发送fifo 54)中的发送队列传送rt帧可以由mac控制器在第二预定时间之后在为了设备50保留的时隙开始(例如在发生时间事件t2时)之前的实时时段期间被启用,第二预定时间被定义为使其发生在上述第一预定时间之后。
[0149]
在一些实施方式中,被称为“t
2,margin”的时间裕度可以有利地用于在t2的发生和为
设备50保留的时隙开始之间,以补偿由定时器管理以及以太网发射器的硬件启动引起的潜在延迟。
[0150]
时间事件“t3”可以被定义为对应于最后一个rt帧的发送结束。
[0151]
在一些实施方式中,可以启用rx-dma(通过dma处理接收数据)以在时间事件t3发生时接收帧。
[0152]
因此,在一些实施方式中,rt帧的接收可以在如上所述的时间事件t1发生时在实时时段期间被禁用,并且在时间事件t3发生时再次被启用。在为设备保留的时隙期间通过时间事件t3监测rt帧的发送结束有利地允许禁用rt帧的dma接收,而mac控制器在为设备保留的时隙期间发送rt帧是未完成的,因此在mac控制器发送rt帧期间避免了由dma接收引入的潜在延迟(抖动)。
[0153]
在一些实施方式中,将在下一循环内发送的帧(rt帧,或者根据实施方式,在rt时段期间的rt帧和在正常时段期间的正常帧)的后台处理(可能包括帧接收、处理和/或准备)也可以在t3发生时开始。
[0154]
时间事件“t4”可以被定义为对应于为设备50保留的时隙的结束。
[0155]
在一些实施方式中,与传统帧挂起队列52中挂起的传统帧相关联的元数据可以被传送到以太网mac dma发送队列53(在图中称为“数据传送ram-》fifo”),可能进一步检查以太网帧的累积持续时间不超过传统时段的持续时间。因此,在为设备保留的时隙结束后的实时时段期间(例如,在t4时间事件发生时),传统帧可以从它们处于挂起的等待队列(例如,传统帧等待队列52)传送到包括在处理器和mac控制器之间的数据通信接口中的接口发送队列(例如,以太网mac dma发送队列53)。
[0156]
在一些实施方式中,可以在发生t4时禁用以太网发送。因此,在一些实施方式中,rt帧可以以实时优先级被发送,即,在为设备保留用于发送具有rt优先级的数据的时隙期间由mac控制器发送,其中,为设备保留的时隙被包括在当前循环的实时时段中。mac控制器处的数据发送可以被禁用一个或更多个时段(即,在第一发送禁用时段和/或第二发送禁用时段期间)而不是为设备保留的时隙,其中,第一发送禁用时段发生在为设备保留的时隙之前的实时时段期间(例如,从t0开始且在t2结束的时段),并且第二发送禁用时段发生在为设备保留的时隙之后的实时时段(例如,从t4开始且t5结束的时段,如下所述)期间。
[0157]
时间事件“t5”可以被定义为对应于传统时段的开始。在一些实施方式中,可以在发生t5时启用以太网发送(与t2的发生相关的操作相同,即,可以将以太网mac发送fifo 54中可用的任何帧传送到以太网物理层单元57)。在一些实施方式中,下一个t0、t1、t2、t4和t5定时器可以在t5发生时被编程。
[0158]
在一些实施方式中,可以启用rx-dma(通过dma处理接收数据)以在t5发生时接收帧。
[0159]
在一些实施方式中,称为“t
5,margin”的时间裕度可以有利地用于在t5的发生和传统时段的开始之间,以补偿由定时器管理和以太网发送器的硬件启动引起的潜在延迟。
[0160]
下文描述了根据一个或更多个实施方式提出的队列管理方案:
[0161]
对于每个周期(实时时段和正常(传统)周期),一个或更多个状态变量(分别表示为实时时段s
rt
和传统时段s
le
)可以在一个或更多个实施方式中用于维持相应时段中的剩余空闲时间。此外,在任何时间t,可以使用状态变量p
t
来指示当前时段的类型(“rt”或“传
统”)。在循环开始时,可以将两个变量初始化为每个时段的相应持续时间。例如,可以将s
rt
初始化为实时时段的持续时间,并且可以将s
le
初始化为传统时段的持续时间。
[0162]
在一些实施方式中,在发生t1事件时,rt帧挂起队列51的帧可以出队并入队到mac dma发送队列53,而状态变量s
rt
大于位于队列的最前面的帧的持续时间。可以管理s
rt
状态变量,使得每次将rt帧添加到mac dma发送队列53时,s
rt
减少对应于帧持续时间的值。
[0163]
在一些实施方式中,在传统帧挂起队列52和mac dma发送队列53之间发生t4事件时,可以对s
le
状态变量应用相同的管理处理。也就是说,在发生t4事件时,传统帧挂起队列52的帧可以出队并入队到mac dma发送队列53,而s
le
大于位于队列头部的帧的持续时间。可以管理s
le
状态变量,使得每次将传统帧添加到mac dma发送队列53时,s
le
减少对应于帧持续时间的值。
[0164]
在一些实施方式中,必须发送rt帧的应用程序任务可以首先将其发布到rt帧挂起队列51中。
[0165]
在一些实施方式中,在状态变量p
t
被设置为“rt”(t是当前时间)的情况下,必须发送传统帧的应用程序任务可以将其发布在传统帧挂起队列52中。在p
t
被设置为“传统”的情况下,如果s
le
和传统时段结束之前的时间大于帧持续时间,则可以将传统帧发布在mac dma发送队列53中。
[0166]
所提出的队列管理方案确保了遵循所定义的时段,并且还有利地优化了传统以太网帧的发送时间。实际上,如果当前时段专用于传统帧,则由任务准备的传统以太网帧基本上会立即被发送。
[0167]
下面描述根据一个或更多个实施方式提出的定时器管理方案:
[0168]
在一个或更多个实施方式中,定时器管理模块可以被实现和被配置为由时钟(例如,精确时间协议(ptp)时钟)触发,并且在传统线程模式下或在isr(中断服务例程)模式下执行特定动作以获得更好的准确性。
[0169]
如上所述,在一些实施方式中,可以限制要在isr中执行的动作的数量,以便减少其它isr的执行延迟。这种执行模式很有用,因为它避免了在isr和rtos任务之间使用通知机制,从而减少了执行触发操作所需的延迟(和相关的抖动)。
[0170]
例如,在一些实施方式中,定时器管理模块可以被配置为使用单个硬件定时器,并且使用事件上下文的链表。它可以执行定时器管理rtos任务,该任务被配置为对下一个定时器目标值进行编程并执行事件动作。每次针对事件的发生触发硬件定时器时,可以针对链表上的下一个事件的发生对硬件定时器重新编程。使用单个定时器来管理序列中的多个事件有利地允许确保每次事件发生的有限执行抖动(例如,它避免解析多个链表来执行与定时器相关联的任务),以便以给定精度实现执行抖动。
[0171]
在一些实施方式中,每个事件上下文可以包括目标时间、事件动作(在一些实施方式中由执行相应计算机可读程序代码的地址表示)、以及可能指示触发的动作是在isr内直接执行还是在定时器管理任务中执行的标记。
[0172]
在一些实施方式中,为了加速链表事件上下文的处理,可以对列表进行时间排序,并且可以将具有较低时间戳的事件放在链表的头部。在这样的实施方式中,当硬件定时器到期时,可以执行适当的isr,并且如果设置了对应的标记,则可以执行与链表的头部处的事件上下文相关联的事件动作。在实施方式中,可以在执行isr时唤醒定时器管理任务(即
使标记不需要这样做,或者在未使用标记的实施方式中),以便在尚未执行的情况下执行相关联的事件动作,使链表的头部处的事件上下文出队,并基于新位于链表头部处的事件上下文对下一个定时器目标值进行编程。
[0173]
这样的实施方式将有利地减少用于执行与事件相关联的动作的时间延迟和抖动。
[0174]
如上所述,在一个或更多个实施方式中,可以评估由定时器触发的一些事件的执行时间,从而可以预期定时器以补偿延迟。特别地,参照参考图7和图8描述的上述实施方式,重要的是精确地补偿由t2定时器触发的事件的延迟,以达到所需的时间精度。但是,这种延迟补偿并不是那么容易计算的,并且取决于许多因素,诸如cpu频率、缓存架构、代码大小
……
[0175]
为了解决这个问题,根据一个或更多个实施方式提出了一种自动校准方法,以确定系统在t2事件中执行的操作期间启用以太网发送器所需的时间量。所提出的方案依赖于mac控制器对某些特定帧执行的硬件时间戳记。硬件时间戳记可以使用上述时钟(例如,ptp时钟)执行,并包含phy级别的帧发送的精确时间。将该值与预期发送时间进行比较允许确定全局执行时间延迟。该延迟包括isr例程的执行时间、用于定时器管理的程序代码和用于t2相关动作的程序代码。
[0176]
在一些实施方式中,在每个循环中,可以标记在实时时段中发送的第一帧,以便在较低级别执行发送时间戳记。计算平均延迟并将其用作t2裕度以补偿t2定时器。
[0177]
本公开的方法和装置可以有利地在具有通信接口(例如,以太网通信接口)的低成本设备中实现,诸如关键网络(工厂自动化、汽车)中的传感器/致动器。它们进一步实现了与tsn标准协议的兼容性,在标准以太网上提供确定性消息传递。它们可以有利地用于在具有非特定以太网mac集成外围设备的低成本mcu/mpu平台上运行。
[0178]
尽管已经在某些优选实施方式的上下文中公开了本发明,但应当理解,系统、设备和方法的某些优点、特征和多个方面可以在多种其它实施方式中实现。此外,预期本文所述的各个方面和特征可以单独实施、组合在一起或相互替代,并且可以进行特征和多个方面的各种组合和子组合并且仍然落入本发明的范围内。此外,上述系统和设备不需要包括优选实施方式中描述的所有模块和功能。
[0179]
本文描述的信息和信号可以使用多种不同技术中的任何一种来表示。例如,数据、指令、命令、信息、信号、比特、符号和芯片可以用电压、电流、电磁波、磁场或粒子、光场或粒子或其任意组合来表示。
[0180]
取决于实施方式,本文描述的任何方法的某些动作、事件或功能可以以不同的顺序执行,可以一起添加、合并或省略(例如,并非所有描述的动作或事件对于方法的实践都是必须的)。此外,在某些实施方式中,动作或事件可以同时执行而不是顺序执行。