当前位置: 首页 > news >正文

RapidIO介绍

传统串行总线(如 UART, SPI, I2C 等)

特点:
  • 接口简单:传统的串行总线设计相对简单,通常使用少量的引脚,因此硬件设计较为简洁。
  • 协议简单:这些协议设计简单,容易实现,因此常用于低速和中低带宽的通信场景。
  • 传输速度慢:由于是串行通信,每次只能传输一个比特,因此速度较慢,通常用于低速通信(如数百 Kbps 到几 Mbps)。
主要类型:
  • UART(Universal AsynchIOnous Receiver-Transmitter)
    • 适用于点对点通信,常用于串口通信。
    • 速度通常较慢,适用于低速设备(如传感器、串口调试等)。
  • SPI(Serial Peripheral Interface)
    • 支持全双工通信,比 UART 更适合高速数据传输。
    • 常用于微控制器与外围设备之间(如传感器、存储设备)通信。
    • 速度通常在几 Mbps 到几十 Mbps 之间。
  • I2C(Inter-Integrated Circuit)
    • 支持多主多从通信,常用于嵌入式系统中设备间的通信。
    • 适用于低速、短距离通信,传输速度通常为 100 Kbps 到 1 Mbps。
优缺点:
  • 优点
    • 简单、易于实现。
    • 硬件接口较少,便于集成。
    • 协议简单,使用灵活。
  • 缺点
    • 传输速度慢,不适合需要高带宽的应用。
    • 距离有限,通常适用于短距离通信。
    • 带宽限制,不能处理大规模数据流。

传统并行总线(如 EMIF 总线、UPP 总线、PCI 总线等)

特点:
  • 比串行总线速度快:并行总线一次可以传输多个比特,速度较快,通常适用于中高速数据传输场景。
  • 接口引脚多,硬件设计复杂:与串行总线相比,并行总线需要更多的引脚来支持多位数据并行传输,因此硬件设计更为复杂。
  • 传输距离短:由于并行总线的信号干扰较大,信号的稳定性随着距离的增加而降低,因此适合短距离的高速数据传输。
主要类型:
  • EMIF(External Memory Interface)总线
    • 主要用于微处理器与外部存储器(如 SRAM、Flash 等)之间的数据传输。
    • 提供高带宽访问外部内存,但带宽通常较低于现代串行总线。
  • UPP(Universal Parallel Port)总线
    • 用于摄像头等图像处理设备的数据传输。
    • 支持较高的数据带宽,但由于并行传输的限制,传输距离通常较短。
  • PCI(Peripheral Component Interconnect)总线
    • 主要用于计算机内部的高带宽设备通信,如网卡、显卡等。
    • 支持高带宽和较长的传输距离,但通常需要更多的硬件设计工作和资源。
优缺点:
  • 优点
    • 提供更高的带宽,相较于传统串行总线速度更快。
    • 支持较高的数据吞吐量,适用于需要大量数据传输的应用。
  • 缺点
    • 需要更多的引脚和更复杂的硬件设计,增加了设计难度。
    • 传输距离有限,随着距离增加,信号的稳定性和完整性会受到影响。
    • 信号干扰较大,需要高质量的信号线和屏蔽措施。

高速串行总线(如 USB 总线、PCIe 总线、SRIO 总线等)

特点:
  • 高速数据传输:高速串行总线通常工作在几 Gbps 级别,适用于高带宽、高速数据流的应用。
  • 低压差分信号(LVDS):许多高速串行总线(如 PCIe、USB 等)使用低压差分信号(LVDS),这可以提高信号传输的抗干扰能力和稳定性。
  • 接口简单,硬件设计相对简单:虽然协议较复杂,但物理接口相对简单,只需要较少的引脚和连接。
  • 较长传输距离:相较于并行总线,高速串行总线在传输距离方面具有优势,适用于长距离通信。
主要类型:
  • USB(Universal Serial Bus)总线
    • 支持热插拔和即插即用,广泛应用于外设设备(如存储设备、鼠标、键盘等)的连接。
    • 常见的 USB 3.x 支持高达 5-10 Gbps 的数据传输速率。
  • PCIe(Peripheral Component Interconnect Express)总线
    • 常用于高性能计算机和服务器的内部总线,用于连接显卡、存储设备等高速设备。
    • 提供非常高的带宽(例如 PCIe Gen 3 支持最高 8 Gbps 每通道,PCIe Gen 4 支持高达 16 Gbps 每通道)。
  • SRIO(Serial RapidIO)总线
    • 主要用于高性能嵌入式系统中,如网络设备、通信设备等。
    • 支持高带宽,低延迟的通信,适合大规模并行处理和数据密集型应用。
优缺点:
  • 优点
    • 提供非常高的传输速率,适合高速数据流和高带宽需求的应用。
    • 低压差分信号(LVDS)技术提高了信号的稳定性和抗干扰能力。
    • 支持较长的传输距离,适用于复杂系统中各模块间的数据传输。
  • 缺点
    • 协议较复杂,硬件设计要求较高,通常需要更多的协议栈和复杂的控制逻辑。
    • 虽然硬件接口较简单,但实现复杂,系统设计和调试可能需要更多时间。

10G级互连技术比较

SRIO软件开销最小,打包效率最高,主要用于嵌入式系统处理器间的互连。千兆网和PCIE都是可以直接和电脑互连的。

RapidIO简介

实际上,RapidIO和SRIO是同一个技术的不同称呼:

  • RapidIO:这是最初的技术名称,指的是一种高性能、低延迟的互连技术。
  • SRIO:这是Serial RapidIO的缩写,强调了RapidIO技术的串行传输特性。
  • DSP6678支持的速率最快为5GHz,以及xlinx7系列的fpga,ip核支持6.25Gbps

RapidIO协议结构

需要注意的是,Rapid IO的传输层。与互联结构无关。Rapid IO可以实现多种拓扑结构。其中最常使用的是基于交换机的拓扑结构。

串行rapid r的物理层定义了器件间双向差分信号的全双工串行链路。记在一个端口的每个方向上都使用单向查分信号。一个串行查分,对作为一个通道。即1差。两个创新差分队作为两个通道,即二叉。4个串行差分队作为4个通道,即四叉,这就是我们通常所说的链路为一查模式、二叉模式或者四叉模式。

RapidIO传输流程

Rapid协议数据由包和控制符号组成。包是系统中各器件间通信的基本单元。控制符号有2个作用。一是用来管理rapid物理层互联的事物流,二是用来确认流量控制和维护等功能。

交换结构是指提供系统互联的单个或多个交换器件的集合,通常是一个交换机。一般在大型系统中使用该结构。而在小型系统中,一般采用直接的点对点的连接方式

Rapid IO数据包格式。Rapid IO数据包有包头可选择在后数据。和16位的CRC校验组成。包头的长度因为包类型的不同,可能是十几到二十几个字节。每包的载荷数据长度不超过256个字节。这有利于减少传输时延,简化硬件实现。这里我们来重点关注一下设备ID rapid IO统一采用设备ID作为区分交换系统中各器件的唯一标识。路由和交换过程是通过每个端点器件的设备ID来实现的。当端点器件产生一个请求包时,会在包头上加上自己的设备ID和对方的设备ID。分别作为原ID和目的ID交换机,根据目的ID查找转发端口。每个交换机对自身的每个端口都维护一个交换路由表。需要在系统初始化时进行配置

交换芯片根据所接收包的ID查找此路由表,进而决定将数据包由哪个端口输出。我们来看一下蓝色的传输层包的卫浴格式。其中T器决定不同大小的设备域。00表示8位的设备ID 10表示16位的设备ID。使用8位的设备ID,最多允许256个设备使用16位的设备ID。系统中最多允许65536个设备。需要注意的是,格式类型f type.表示的是逻辑层的包格式类型代表不同的事物类型是属于逻辑层的。在交换系统中,端点器件都有ID号,而交换机没有ID号。

在大部分情况下。操作的目标并不是交换器件,因此不会产生问题。但当rapid操作的目标变成交换机时。会导致数据无法到达交换机。例如,系统正在配置或者要读取交换机的寄存器信息时,由于交换机没有ID标识,不能进行典型的读写操作,这种情况下就需要一种特殊的包维护包。用于交换机的维护和管理。维护包中多了一个跳数字段,该字段定义了网络中交换机的数量。

RapidIO支持的IO操作规范

外IO支持的逻辑层业务主要有直接IO事务和消息传递事务。进行直接IO事务操作的前提是主设备知道被访问端的存储器,映射主设备可以直接读写存设备的存储器,在RapidIO (RIO) 协议中,直接读/写操作(Read/Write Operations, IO)是一种重要的数据传输方式。这类操作的特点是在被访问端的功能几乎完全由硬件实现,这意味着被访问的设备不需要承担任何软件层面的处理负担。RapidIO 支持六种基本的直接读/写操作,以下是这些操作的简要说明,重点放在读操作上:

  1. 非响应读操作 (Non-Response Required Read, NR Read)
    • 这种类型的读操作不要求被访问设备产生响应。发起方发送一个读请求后,不会等待被访问方的确认,而是立即继续执行其他任务。这种操作适用于对结果不敏感或可以容忍不确定性的场景。
  1. 带响应读操作 (Response Required Read, RR Read)
    • 相较于非响应读操作,带响应的读操作要求被访问设备在接收到读请求后返回数据。发起方会等待被访问方的响应,直到接收到所需数据或超时。
  1. 非响应写操作 (Non-Response Required Write, NR Write)
    • 写操作中的一种,不要求接收端给出响应。发起方发送数据后即认为操作完成,适合于数据传输要求不高或接收端处理能力有限的情况。
  1. 带响应写操作 (Response Required Write, RR Write)
    • 此类写操作要求接收端在成功接收到数据后发送确认消息给发起方。这种机制可以提高数据传输的可靠性,确保数据正确到达目的地。
  1. 流写操作 (Stream Write)
    • 流写操作的数据长度必须是8字节的整数倍,且不要求接收端响应。它适用于大量连续数据的传输,能够提高传输效率。
  1. 原子操作 (Atomic Operations)
    • 原子操作是一类特殊的读/写操作,旨在保证操作的完整性,即使在网络环境中也能避免数据竞争条件。这类操作通常用于同步或状态管理。
  1. 维护操作 (Maintenance Operations)
    • 维护操作主要用于系统的诊断、调试和配置等目的。它们可以帮助维护人员检查和修复网络中的问题。

非响应读操作 (NR Read) 为例,这种操作允许发起方快速请求数据而无需等待响应,从而减少了通信延迟,提高了系统的整体性能。然而,这也意味着发起方无法确认数据是否已被正确读取,因此适用于那些对读取结果不是非常严格的应用场景。

Nread包

response包

目标端点会根据收到的恩瑞的请求包中地址信息对本地存储器进行选址。然后将这些存储数据嵌入到response包中,发送给请求端,请求端对response包进行解包,从而得到请求的数据。由第13类包完成。

响应中没有用来指示所含数据长度和大小的位浴,接收者需要根据包尾符来判断。包尾符是控制符号的一种,我们在前面讲解rapid传输流程时说过控制符号。第13类包可以完成大部分请求的响应。

RapidIO支持的消息传递逻辑规范

Rapid的IO除了支持IO操作啊,支持消息传递。与IO操作不同的是,在消息传递时,消息是由目标端控制。请求端不需要对目标端的地址空间可见,这也就提高了系统的安全性。数据在被访问设备中的位置由消息中所携带的邮箱号等信息计算得出。从设备根据计算出的地址把数据保存到对应的缓冲区中。

Rapid啊,定义了第10类包和第11类包,用于传递消息事物。第10类包是doorbell包,包头精简,所能携带的数据载荷也只有16位。doorbell通常用于处理器之间的中断通知。第11类包用于消息操作,最多可以携带4096字节的数据载荷。

一个刀贝尔操作,由刀贝尔和response事务完成,如图31所示。Message操作也是由message和response事务完成,如图32所示。

RapidIO数据对齐和分包

Rapid IO数据包的对齐和分包为了简化系统中对数据的琼脂,Rapid IO假设所有的事物都对齐到双字边界。也就是8个字节64位。如果正被发送的数据不以双字边界开始或结束,就用一个特殊的掩码来表明哪些字节包含有效数据。Rapid支持的最小数据的大小是一个字节,也就是8位。

对于写操作,为了把数据传送到目的端,处理部件会正确的把数据对齐的双子边界。如果没有自然的对齐数据。那么该对其操作就可能要求将一个数据流分成多个事务来进行传输。

图39展示了一个48字节的数据流处理部件,希望通过互联结构将该数据写往另一部件。图中阴影标出的是将被写入的数据。因为流的开始和结束都没有与双子边界对齐,所以发送部件将事物分成至少3个独立的事物,如图所示。第一个事物发送前三个字节,并指示5、六、七字节有效。第二个事物发送中间的这5个双字及40个字节。Rapid IO的一个事物最多可以携带256个字节的数据,所以这40个字节可以通过一个事物就可以发送完成。第三个事物将发送剩下的5个字节。

RapidIO数据包的具体格式

Rapid的阿乌事物是分装在包中的。包是系统中端点期间进行通讯的基本单元。Rapid包中包含了逻辑层、传输层和物理层的信息。我们可以看到,Rapid IO所有包都是以物理字段开始的。包的类型有逻辑层字段格式类型f type.和事物类型字段t type.唯一确定。

在 RapidIO 协议中,F Type(Format Type)和 T Type(Transaction Type)是两个重要的字段,用于确定包的格式和事务类型。以下是一些常见的 F TypeT Type 的值及其含义:

F Type(格式类型)

F Type 字段定义了包的格式。常见的 F Type 值包括:

  • 0x00:保留
  • 0x01:标准包(Standard Packet)
  • 0x02:扩展包(Extended Packet)
  • 0x03:维护包(Maintenance Packet)
  • 0x040x0F:保留或用于未来扩展

T Type(事务类型)

T Type 字段定义了具体的事务类型。不同的 F Type 可能支持不同的 T Type 值。以下是一些常见的 T Type 值及其含义:

标准包(F Type = 0x01)
  • 0x00:保留
  • 0x01:读请求(Read Request)
  • 0x02:读响应(Read Response)
  • 0x03:写请求(Write Request)
  • 0x04:写响应(Write Response)
  • 0x05:流写请求(Stream Write Request)
  • 0x06:流写响应(Stream Write Response)
  • 0x07:带响应的写请求(Write Request with Response)
  • 0x08:带响应的写响应(Write Response with Data)
  • 0x09:原子操作请求(Atomic Operation Request)
  • 0x0A:原子操作响应(Atomic Operation Response)
  • 0x0B0x0F:保留或用于未来扩展
扩展包(F Type = 0x02)
  • 0x00:保留
  • 0x01:扩展读请求(Extended Read Request)
  • 0x02:扩展读响应(Extended Read Response)
  • 0x03:扩展写请求(Extended Write Request)
  • 0x04:扩展写响应(Extended Write Response)
  • 0x050x0F:保留或用于未来扩展
维护包(F Type = 0x03)
  • 0x00:保留
  • 0x01:维护请求(Maintenance Request)
  • 0x02:维护响应(Maintenance Response)
  • 0x030x0F:保留或用于未来扩展

示例

假设有一个 RapidIO 包,其 F Type0x01T Type0x03,那么这个包的类型是“标准包中的写请求”。

总结

F TypeT Type 的组合决定了 RapidIO 包的具体类型和用途。不同的 F Type 值对应不同的包格式,而 T Type 值则进一步细化了具体的事务类型。这些字段的合理使用有助于确保数据在 RapidIO 网络中的正确传输和处理。

相关文章:

RapidIO介绍

传统串行总线(如 UART, SPI, I2C 等) 特点: 接口简单:传统的串行总线设计相对简单,通常使用少量的引脚,因此硬件设计较为简洁。协议简单:这些协议设计简单,容易实现,因…...

用魔方做存储器

用魔方模拟存储器是一种形象化的方式,特别适合教学演示或帮助理解存储器结构。以下是如何将魔方作为存储器的设计思路和可能的实现: 基本思路 魔方的结构: 魔方有 (6) 个面,每面 (3 \times 3 9) 个方块,总共 (6 \time…...

动力商城-03 Idea集成apifox Mybatis-Plus字段策略

1.Idea下载apifox插件 2.新建令牌放入Idea 3.右键上传到对应接口 4.设置前置url 插件能够自动识别swagger注解 Mybatis-Plus字段策略 1、FieldStrategy作用 Mybatis-Plus字段策略FieldStrategy的作用主要是在进行新增、更新时,根据配置的策略判断是否对实体对…...

python如何使用Rabbitmq

目录 一、Rabbitmq介绍 二、Rabbitmq的使用场景 1、异步处理 2、服务解耦 3、流量削峰 4、日志收集 5、发布订阅 6、任务调度 三、python如何使用Rabbitmq 1、安装依赖 2、基础使用 3、消息确认 4、消息持久化 5、公平调度 6、发布订阅 7、关键字发布 一、Rabbi…...

分布式,微服务,SpringCloudAlibaba,nacos,gateway,openFeign

想学习微服务SpringCloudAlibaba的小伙伴,可以观看视频 地址: https://www.bilibili.com/video/BV1cFDEYWEkY/?vd_source14d27ec13a4737c281b7c79463687112分布式架构和微服务是两个密切相关但又有所区别的概念。它们在现代软件工程中经常被提及&#…...

MySQL初学之旅(3)约束

目录 1.前言 2.正文 2.1约束类型 2.2NULL约束 2.3UNIQUE约束 2.4DEFAULT约束 2.5PRIMARY KEY主键约束 2.6FOREIGN KEY外键约束 2.7CHECK约束 3.小结 1.前言 哈喽大家好啊,今儿来继续给大家分享最近学习的MySQL和约束相关的知识点,希望大家一起…...

使用YOLOv9进行图像与视频检测

大家好,YOLOv9 与其前身v8一样,专注于识别和精确定位图像和视频中的对象。本文将介绍如何使用YOLOv9进行图像与视频检测,自动驾驶汽车、安全系统和高级图像搜索等应用在很大程度上依赖于此功能,YOLOv9 引入了比 YOLOv8 更令人印象…...

C# 中的 LINQ:轻松处理集合和数据

C#中的LINQ(Language Integrated Query),这是一个非常强大且实用的功能,可以简化集合操作和数据查询。以下是一篇关于C#中LINQ使用的文章。 引言 LINQ(Language Integrated Query)是C#语言的一个重要特性…...

【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)

#华南理工大学主办!#IEEE出版!EI稳定检索!#组委阵容强大!IEEE Fellow、国家杰青等学术大咖领衔出席!#会议设置“优秀论文”“优秀青年学者报告”“优秀海报”等评优奖项 2024智能机器人与自动控制国际学术会议 &#…...

RHCE的学习(20)

变量5种赋值方式 shell中变量赋值5种方式,其中采用name10的方法称A 直接赋值 nameB read命令 read v1C 使用命令行参数 ($1 $2 $3 ..) name$1D 使用命令的输入 username$(whoami)E 从文件读取 #cut -d : -f1 /etc/passwd > /user.listfor…...

控制器ThinkPHP6

五、控制器中对数组值的返回 在做接口服务时,很多时候回使用数组作为返回值,那么数组如何返回成 json呢? 在 tp6 中返回json 很简单,直接使用 json 进行返回即可,例如: public function index(){$resarra…...

1. Django中的URL调度器 (项目创建与简单测试)

1. 创建 Django 项目 运行以下命令创建一个名为 blog_project 的 Django 项目: django-admin startproject blog_project2. 创建博客应用 Django 中,项目可以包含多个应用。创建一个名为 blog 的应用: cd blog_project python manage.py …...

学习python的第十天之数据类型——dict字典

学习python的第十天之数据类型——dict字典 Python 中的字典(Dictionary)是一个非常强大的内置数据类型,它用来存储键值对(key-value pairs)信息。字典是无序的,这意味着它们不会记录你添加键值对的顺序&am…...

华为Mate 70临近上市:代理IP与抢购攻略

随着科技的飞速发展,智能手机已经成为我们日常生活中不可或缺的一部分。而在众多智能手机品牌中,华为一直以其卓越的技术和创新力引领着行业的发展。近日,华为Mate 70系列手机的发布会正式定档在11月26日,这一消息引发了众多科技爱…...

进程信号

目录 信号入门 1. 生活角度的信号 2. 技术应用角度的信号 3. 注意 4. 信号概念 5. 用kill -l命令可以察看系统定义的信号列表 6. 信号处理常见方式概览 产生信号 1. 通过终端按键产生信号 Core Dump 2. 调用系统函数向进程发信号 3. 由软件条件产生信号 4. 硬件异…...

RT-DETR融合GhostModel V3及相关改进思路

RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《GhostNetV3: Exploring the Training Strategies for Compact Models》 一、 模块介绍 论文链接:https://arxiv.org/pdf/2404.11202v1 代码链接:https:…...

JVM有哪些垃圾回收器

Serial垃圾回收器:单线程收集器,适用于客户端模式下的小型应用。 使用复制算法回收新生代,使用标记-整理算法回收老年代。 在进行垃圾回收时,会停止所有用户线程(Stop-The-World, STW)。Serial Old垃圾回收…...

EWM 打印

目录 1 简介 2 后台配置 3 主数据 4 业务操作 1 简介 打印即输出管理(output management)利用“条件表”那一套理论实现。而当打印跟 EWM 集成到一起时,也需要利用 PPF(Post Processing Framework)那一套理论。而…...

前端文件优化

一、图片优化 计算图片大小 对于一张100*100像素的图片来说,图像上有 10000 个像素点,如果每个像素的值是 RGBA 存储的话,那么也就是说每个像素有 4 个通道,每个通道 1 个字节(8 位 1个字 节)&#xff0…...

电脑怎么自动切换IP地址

在现代网络环境中,电脑自动切换IP地址的需求日益增多。无论是出于网络安全、隐私保护,还是为了绕过地域限制,自动切换IP地址都成为了许多用户关注的焦点。本文将详细介绍几种实现电脑自动切换IP地址的方法,以满足不同用户的需求。…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...

WebRTC调研

WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...