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

AM263P CPSW流控与TSN协同:保障工业以太网确定性延迟的硬件机制

1. 项目概述与核心价值

在工业自动化、车载网络、专业音视频传输这些对时间极度敏感的领域,网络通信的“确定性”和“可靠性”不再是锦上添花,而是生死攸关的底线。传统“尽力而为”(Best Effort)的以太网,数据包延迟和丢包都是随机的,这显然无法满足机械臂的同步控制或8K视频流的无卡顿传输需求。时间敏感网络(TSN)标准族,特别是其中的802.1Qav(现已融入802.1Q-2022标准),就是为了解决这个问题而生,它定义了基于信用的整形器(Credit-Based Shaper, CBS)等机制,为高优先级的时间敏感流(如音视频流AVB/TSN Stream)提供有保障的带宽和 bounded latency(有界延迟)。

然而,再精妙的队列调度和整形算法,最终都需要一个稳定、可靠的物理层和数据链路层作为基石。这就好比再智能的交通信号灯系统,如果十字路口的基础道路坑坑洼洼、随时塌陷,整个系统也就无从谈起。以太网的流控(Flow Control)机制,特别是IEEE 802.3x定义的暂停帧(Pause Frame)机制,就是这个“基础道路”的维护工。它的核心作用是在网络设备(如交换芯片、终端网卡)的接收缓冲区即将溢出时,向发送方发送一个“暂停”指令,为高优先级数据的处理和转发争取宝贵的时间窗口,防止因缓冲区满而导致的、不可预测的丢包。

德州仪器(TI)的AM263P系列处理器,集成了其强大的CPSW(Common Platform Switch)以太网交换子系统,并针对TSN应用进行了深度优化。理解CPSW内部的流控机制,尤其是它如何与802.1Qav所依赖的优先级队列、整形器协同工作,是设计高可靠性实时网络系统的关键。本文将深入AM263P CPSW的硬件逻辑,从寄存器配置到信号交互,为你拆解其以太网MAC层的流控与EEE节能机制,让你不仅知道如何配置,更明白每一个配置项背后的硬件行为与设计考量。

2. CPSW流控机制深度解析:从硬件队列到暂停帧

AM263P的CPSW模块是一个高度集成的多端口以太网交换机,其流控机制并非软件模拟,而是由硬件状态机精确控制。理解其工作原理,需要从数据流的路径和硬件资源分配入手。

2.1 硬件架构与数据流俯瞰

在深入流控细节前,我们先建立一个宏观视图。参考技术手册中的图示(Figure 13-96. AV Stream Queuing/Policing),我们可以梳理出CPSW内部处理一个时间敏感流(如Stream X, Y, Z)的关键路径:

  1. 入口(Ingress):数据包从物理层(PHY)通过RGMII/RMII接口进入MAC层。
  2. 分类与打标:MAC层对帧进行基本错误检查(CRC、长度等),并根据VLAN标签的PCP(Priority Code Point)字段或其它配置规则,为数据包分配一个内部优先级(0-7,7为最高)。这个优先级决定了数据包后续进入哪个硬件队列。
  3. 队列与整形:这是实现802.1Qav等TSN特性的核心。CPSW为每个发送端口(Egress Port)维护了8个逻辑发送队列(Priority 0-7)。高优先级队列(如分配给Class A音视频流的队列)可以配置基于信用的整形器(Credit-Based Shaper),确保其不会独占带宽,从而为低优先级流量(如Best Effort)留下通道,同时保证自身的最大延迟。整形器(Shaper)和调度器(Scheduler)协同工作,决定下一个从哪个队列取出数据包发送到线路上。
  4. 出口:调度后的数据包经过MAC层,添加帧间隔(IPG),最终通过PHY发送出去。

流控机制作用于这条路径的多个环节,主要分为接收流控(Rx Flow Control)发送流控(Tx Flow Control)

2.2 接收流控(Rx Flow Control):如何优雅地说“请稍等”

接收流控的目的是防止本设备(作为接收方)的接收缓冲区(Rx FIFO)被快速涌入的数据包塞满而导致溢出丢包。CPSW的接收流控有两种模式,分别对应全双工和半双工模式。

2.2.1 全双工模式下的IEEE 802.3x暂停帧流控

这是最常用、最标准的流控方式。当CPSW某个端口的接收FIFO使用量达到预设的阈值时,硬件会自动触发以下动作:

  1. 触发条件CPSW_PN_RX_FLOW_THRESH_REG寄存器中设置的COUNT值。当Rx FIFO中的数据量(以字为单位)大于或等于此阈值时,流控被触发。

  2. 硬件动作:端口MAC层立即(如果当前空闲)或在完成当前帧发送后,构造并发送一个暂停帧(Pause Frame)到对端设备。

  3. 暂停帧内容

    • 目的MAC地址:固定的组播地址01-80-C2-00-00-01(IEEE保留用于链路层控制)。
    • 源MAC地址:取自SL_SA寄存器配置的本端口MAC地址。
    • 长度/类型字段0x8808(表示MAC控制帧)。
    • 操作码(Opcode)0x0001(表示暂停操作)。
    • 暂停时间(Pause Time)0xFFFF(最大值,约65535个暂停量子)。一个暂停量子是512位时间,对于千兆以太网就是512ns。发送最大值意味着“请暂停尽可能长的时间,直到我通知你恢复”。
    • 填充与CRC:填充至64字节最小帧长,并计算CRC。
  4. 对端响应:符合标准的对端设备收到此暂停帧后,会停止向本端口发送所有优先级的数据帧(注意:是全部流量,这是802.3x的局限性,后面会讨论与802.1Qav的协同)。

  5. 本端维护:发送暂停帧后,CPSW内部会启动一个暂停计时器,从0xFF00开始递减。如果计时器归零前流控触发条件仍未解除(即Rx FIFO仍很满),它会重发一个暂停帧,持续施加压力。

  6. 取消流控:当Rx FIFO数据量下降到安全水平,流控触发条件解除,CPSW会自动发送一个暂停时间为0的暂停帧,通知对端可以恢复发送。

关键配置与避坑指南

  • 使能位:必须设置CPSW_PN_MAC_CONTROL_REG寄存器的RX_FLOW_EN位。
  • FIFO资源重分配:这是最容易忽略且导致流控失效的坑!手册明确要求,为使能全双工接收流控,必须调整端口的FIFO块分配。默认配置下,接收FIFO只有3个块(block),不足以处理流控触发后仍在“管道中”的数据(称为流控排空,flow control runout)。必须将CPSW_PN_MAX_BLKS_REG中的RX_MAX_BLKS增加到7(十进制),同时相应减少TX_MAX_BLKS到13,从发送侧“借用”内存给接收侧。不进行此配置,流控可能无法有效防止丢包。
  • 阈值设置CPSW_PN_RX_FLOW_THRESH_REG的阈值需要根据实际流量和FIFO大小谨慎设置。设置过晚,可能来不及发出暂停帧就溢出了;设置过早,则会过于频繁地中断流量,降低链路利用率。通常建议设置为FIFO总深度的50%-70%。
2.2.2 半双工模式下的冲突背压流控

在半双工模式下(仅10/100Mbps),CSMA/CD机制仍在工作,因此无法使用基于暂停帧的流控。CPSW采用了一种“模拟冲突”的方式:

  1. 触发条件:同样由Rx FIFO阈值触发。
  2. 硬件动作:当需要流控时,端口会在检测到对方开始发送帧(大约在收到源地址时)后,主动在链路上发送一个阻塞信号(Jam Sequence),内容为连续的0xC3字节。
  3. 效果:对端设备会检测到冲突,随即启动二进制指数退避算法,延迟重发。通过持续制造冲突,本端有效地降低了对方发送数据包的速率,达到了流控的目的。
  4. 特点:这种方式简单粗暴,不依赖于对端设备的流控功能,但会增加网络冲突和延迟,不适用于需要确定性延迟的场景。因此,在TSN或音视频传输应用中,强烈建议使用全双工模式并启用802.3x流控

2.3 发送流控(Tx Flow Control):如何响应对方的“暂停”请求

发送流控是指本端口作为发送方,如何处理对端发来的暂停帧。其逻辑相对直接:

  1. 生效条件:必须同时满足:a) 端口处于全双工模式(FULLDUPLEX位为1);b) 发送流控使能(TX_FLOW_EN位为1)。
  2. 帧过滤与动作:默认情况下,MAC控制帧(包括暂停帧)会被交换机过滤,不转发给主机CPU。但无论是否转发,只要帧有效且使能,硬件流控动作都会执行。是否转发由RX_CMF_EN位控制。
  3. 有效性检查:CPSW只对符合以下条件的暂停帧采取动作:长度在64字节到RX_MAXLEN之间、无CRC或对齐错误、操作码为0x0001
  4. 暂停计时:从有效的暂停帧中提取暂停时间值,加载到端口的TX_PAUSETIMER。在计时器归零前,该端口不会开始发送任何新的数据帧。注意:已经处于发送过程中的帧会完整发送完毕。
  5. 计时器更新规则:这是一个重要的细节。如果在现有暂停计时未结束时收到新的有效暂停帧:
    • 如果新帧的目的地址不是本端口的MAC地址或保留组播地址,则当前计时器立即过期
    • 如果新帧的暂停时间为0,则当前计时器立即过期(用于取消暂停)。
    • 否则,当前计时器会被新帧的暂停时间值覆盖(旧值丢弃)。
  6. 流控的局限性:802.3x暂停帧是端口级全局性的。一旦生效,将暂停该端口上所有优先级的数据发送。这对于需要区分流量优先级的TSN网络来说是个问题,因为高优先级的音视频流也可能被低优先率的背景流量所触发的暂停帧所阻塞。

3. 802.1Qav与流控的协同:优先级队列与整形器的关键作用

这正是输入材料中图表(Figure 13-96)和802.1Qav标准要解决的核心矛盾。单纯的802.3x流控是“一刀切”,而TSN需要的是“区别对待”。

3.1 基于优先级的队列隔离

CPSW的8个硬件发送队列(Priority 0-7)为流量隔离提供了基础。我们可以将时间敏感的AV流(如Class A, Class B)映射到高优先级队列(例如队列7、6),而将尽力而为(Best Effort)流量映射到低优先级队列(例如队列0)。

配置示例(对应手册Table 13-142): 假设我们从主机通过DMA发送数据包,并为其打上VLAN优先级标签(PCP)。CPSW的ALE(Address Lookup Engine)或端口映射逻辑可以根据这个PCP值,将数据包导入不同的硬件发送队列。

TX DMA 通道数据包优先级 (PCP)交换机队列优先级流量类型映射建议
773预留或最高优先级控制流
652Class A (TSN最高优先级)
531Class B (TSN次高优先级)
410Best Effort (背景流量)

注:此表仅为示例,队列优先级数字(0-3)是CPSW内部调度权重,与PCP值(0-7)是映射关系。关键是高PCP的TSN流进入了被特殊对待的队列。

3.2 信用整形器(CBS)与流控的配合

802.1Qav的核心是信用整形器。它为每个优先级队列(特别是承载AV流的队列)维护一个“信用”值:

  • 当队列空闲时,信用缓慢增加(sendSlope)。
  • 当队列发送数据时,信用快速减少(idleSlope)。
  • 只有当信用值非负时,该队列的数据包才被允许发送。

这就带来了与流控协同的精妙之处

  1. 避免队头阻塞:即使低优先级的Best Effort队列因为对端发送暂停帧而被阻塞,高优先级的AVB队列由于其独立的整形器和信用机制,只要信用值足够,仍然可以发送。因为流控暂停的是端口发送行为,而整形器在流控之上决定“端口当前可以发送哪个队列的帧”。如果高优先级队列有帧且信用允许,调度器就会选择它,而不会因为低优先级队列被阻塞而等待。
  2. 保护带宽:CBS通过idleSlope参数限制了AV流可占用的最大带宽。这意味着即使没有流控,AV流也不会饿死BE流量。当网络拥塞时,BE流量可能触发流控,但CBS确保了AV流在自身带宽限制内仍能前进。
  3. 配置要点:在AM263P上,CBS等整形功能通常通过CPSW的EST(Enhanced Scheduled Traffic)模块来配置。你需要为不同的优先级队列设置带宽比例、发送周期等。这部分的配置与流控寄存器配置是独立的,但共同作用于最终的发送行为。

3.3 实际协同工作流程

结合图表,一个音视频流(Stream X, 属于Class A)的端到端处理流程如下:

  1. Talker端发送:应用程序产生Stream X数据,打上高优先级标签(如PCP=5),通过DMA送入CPSW。ALE将其分类到对应的硬件发送队列(如队列2)。
  2. 队列调度与整形:该端口的发送调度器检查各队列状态。尽管可能有BE流量(队列0)等待发送,但Stream X队列的信用整形器计算其信用值为正,因此调度器选择发送Stream X的帧。
  3. Listener端接收与潜在流控
    • 数据包到达Listener端的CPSW端口,进入Rx FIFO。
    • 如果该端口正在处理大量低优先级流量导致Rx FIFO接近满载,达到流控阈值。
    • Listener端口会向Talker端口发送一个802.3x暂停帧
  4. Talker端响应流控
    • Talker端口收到暂停帧,其发送流控逻辑启动,暂停计时器开始工作。
    • 然而,这个暂停是针对端口的,不是针对某个队列的。端口发送行为暂停。
    • 但端口内部的队列状态和信用值仍在独立计算。Stream X队列的信用值可能在暂停期间得到恢复(因为没发送,信用增加)。
  5. 流控恢复后的行为
    • 暂停计时结束,端口恢复发送。
    • 此时调度器再次检查各队列。由于Stream X队列在暂停期间积累了信用,且优先级高,它极有可能被优先调度,从而保证了其累积的延迟不会无界增长,满足了TSN的确定性要求。

核心思想:802.1Qav的优先级队列和整形器,在802.3x提供的“端口级喘息之机”的基础上,确保了高优先级流量能够“插队”使用恢复后的发送窗口,从而实现了在拥塞情况下的有界延迟。

4. 高级特性与实战配置要点

4.1 自适应性能优化(APO)与帧间隔(IPG)调整

除了显式的流控,CPSW MAC层还有一些隐式的流量调节机制,用于优化性能。

  • 自适应性能优化(APO):通过设置TX_PACE位启用。其逻辑是:当检测到冲突或延迟时,自动增加发送尝试之间的延迟(通过一个“节拍计数器”),减少连续冲突的概率。这在半双工或早期以太网中很有用,但在全双工、交换式网络中作用有限,有时甚至可能增加延迟。在TSN应用中,为了追求确定性,通常建议关闭此功能,以避免引入不可控的延迟变量。

  • 可编程帧间隔(IPG):默认IPG为12个字节时间(96位时间)。可以通过寄存器增加IPG。但请注意:手册明确指出,增加IPG与发送节拍(Transmit Pacing)功能不兼容,且短间隔特性(Short Gap)会覆盖增加的IPG值。短间隔特性是指当发送FIFO使用量超过CPSW_GAP_THRESH_REG设定的阈值时,IPG会自动缩短8位时间,以加速排空FIFO。在配置时需要权衡:更短的IPG可以提高吞吐量,但可能不符合某些严格的标准;更长的IPG可以给交换机更多处理时间,但降低效率。

4.2 节能以太网(EEE)与流控的互动

EEE(802.3az)允许链路在空闲时进入低功耗状态(LPI)。这与流控存在潜在的交互:

  1. 进入LPI:当端口空闲时间超过CPSW_PN_IDLE2LPI_REG配置的值,且EEE使能,端口会进入LPI状态,通过MTXER信号通知PHY。
  2. 流控期间的EEE:如果端口因为接收流控(Rx FIFO满)而发送暂停帧,此时端口并未“空闲”(它正在处理接收缓冲),因此不会进入LPI。EEE的 idle 计时器是在端口真正无收发活动时才开始计数的。
  3. 从LPI唤醒:当有数据要发送或收到PHY的唤醒信号时,端口需要CPSW_PN_LPI2WAKE_REG配置的时间从LPI状态恢复到活动状态。这个唤醒时间会增加第一帧数据的发送延迟。在TSN这种对延迟敏感的应用中,需要仔细评估EEE的节能收益与带来的额外唤醒延迟是否可接受。通常,对于承载关键TSN流的端口,建议禁用EEE,以确保随时可响应。

4.3 内存保护与错误处理:ECC与保护CRC

高可靠性系统必须考虑比特错误。CPSW对此提供了多层保护:

  1. 包头ECC:对FIFO中数据包的包头部分(Header Bits)进行ECC(纠错码)保护,可以纠正单比特错误,检测双比特错误。这对于保护队列指针、状态字等关键元数据至关重要。
  2. 数据保护CRC:对整个数据包(在CPSW内存中存储期间)生成一个独立的“保护CRC”。在数据包出口(发送到主机或网络)时校验此CRC。如果发现错误(表明内存数据在存储期间发生了比特翻转),对于发送到网络的包,会反转CRC中的至少一个字节来强制制造一个错误的以太网CRC,让接收方丢弃该坏包;对于发送到主机的包,则通过描述符标记错误,让驱动丢弃它。
  3. 配置与测试:通过ECC_CRC_MODE等寄存器位,可以选择是测试ECC错误还是保护CRC错误。在安全关键应用中,务必使能这些特性,并利用ECC_ERR_CTRL2等寄存器进行注入测试,验证系统的容错能力。

5. 实战配置流程与常见问题排查

5.1 为TSN音视频流配置CPSW流控的步骤

假设我们要为Port 1配置一个支持Class A(PCP=5)和Class B(PCP=3)音视频流,并启用流控的环境。

  1. 基础MAC与PHY配置

    • 配置CPSW_PN_MAC_CONTROL_REG,设置为全双工(FULLDUPLEX=1)、合适的速度(GIG位)。
    • 配置RGMII/RMII接口模式。
  2. 优先级队列映射(参考手册Table 13-142, 13-143):

    • 配置ALE或端口VLAN表,将VLAN PCP 5映射到某个高优先级内部队列(如队列2),PCP 3映射到另一个队列(如队列1)。
    • 配置TX DMA通道与队列的映射关系。
  3. 使能与配置接收流控(Rx Flow Control)

    • 关键一步:修改CPSW_PN_MAX_BLKS_REG,将RX_MAX_BLKS设为7,TX_MAX_BLKS设为13。
    • 设置CPSW_PN_RX_FLOW_THRESH_REG中的COUNT阈值。例如,如果Rx FIFO总深度为1024字,可设置为700字左右。
    • CPSW_PN_MAC_CONTROL_REG中设置RX_FLOW_EN=1
  4. 使能发送流控(Tx Flow Control)

    • CPSW_PN_MAC_CONTROL_REG中设置TX_FLOW_EN=1
    • 确保RX_MAXLEN至少为64(以接收标准的暂停帧)。
  5. 配置802.1Qav整形(通过EST模块)

    • 这不是流控的一部分,但必须协同配置。为队列2(Class A)和队列1(Class B)配置信用整形器参数(idleSlope,sendSlope),并启用EST功能。
  6. (可选)禁用可能影响确定性的功能

    • 考虑将TX_PACE(APO)位清零。
    • 对于TSN端口,考虑将EEE_EN位清零。

5.2 常见问题与排查技巧

  1. 问题:使能了流控,但高优先级流量仍然在拥塞时出现延迟激增或丢包。

    • 排查
      • 检查FIFO重分配:这是最常见的原因。确认CPSW_PN_MAX_BLKS_REG已按手册要求从默认值修改(RX从3改为7,TX从17改为13)。
      • 检查流控阈值:阈值COUNT设置是否过高?可以通过读取CPSW_PN_RX_FREE_BUFFER_REG等状态寄存器,监控Rx FIFO的实际使用情况,在流量压力下看是否接近或超过阈值。
      • 检查对端设备:对端网卡或交换机是否支持并正确响应802.3x暂停帧?可以用抓包工具(如Wireshark)在链路上抓取,看本端发出暂停帧(目的地址01:80:c2:00:00:01,类型0x8808)后,对端流量是否真的暂停了。
      • 检查优先级映射:确认你的高优先级音视频流数据包是否被打上了正确的VLAN PCP标签,并且ALE/端口配置正确地将该PCP映射到了高优先级的硬件发送队列。如果映射错误,流量进入了低优先级队列,仍然会受到端口级暂停的影响。
  2. 问题:网络中出现大量暂停帧,导致吞吐量严重下降。

    • 排查
      • 检查流控阈值:阈值COUNT是否设置得过低?导致FIFO稍有堆积就触发流控,过于频繁。
      • 检查接收侧处理能力:是不是主机CPU处理不过来,导致Rx FIFO排空太慢?优化驱动中断处理或使用更高效的DMA描述符环。
      • 检查链路是否不对称:例如,设备以1000Mbps接收,但只能以100Mbps转发或处理,必然导致接收侧缓冲区快速填满。需要检查端口速率和背板带宽。
  3. 问题:使能EEE后,音视频流的第一帧延迟变大。

    • 排查
      • 测量唤醒时间CPSW_PN_LPI2WAKE_REG配置的值是多少?这个时间直接加在了从休眠到发送第一帧的延迟里。对于微秒级延迟要求的TSN流,这个时间可能不可接受。
      • 权衡与决策:对于承载关键TSN流的端口,最直接的办法就是禁用EEE(EEE_EN=0)。如果必须启用,可以考虑将IDLE2LPI时间设得非常大,使其仅在长时间空闲(如系统待机)时进入LPI,而在业务期间保持活跃。
  4. 问题:如何验证流控和队列优先级确实在工作?

    • 实操方法
      • 构造测试流量:使用流量生成工具,同时产生高优先级(如带VLAN PCP 5)的恒定码流和低优先级(PCP 1)的突发流量。
      • 监控统计寄存器:CPSW有丰富的统计寄存器,如CPSW_STAT_RX_BOTTOM_OF_FIFO_DROP(Rx FIFO溢出丢包计数)、CPSW_PN_TX_PRI_CNT(各优先级队列发送包计数)。
      • 观察现象:在低优先级突发流量冲击下,查看高优先级流的延迟是否保持稳定(抖动小),同时检查Rx FIFO丢包计数是否没有增长(说明流控起了作用,防止了溢出)。如果高优先级流延迟飙升且低优先级流计数停止增长,说明端口级流控生效但优先级调度可能未正确配置。

理解并正确配置AM263P CPSW的流控机制,是构建稳定、可靠工业以太网和音视频网络的基石。它不再是后台默默无闻的功能,而是与TSN队列调度紧密配合、共同保障关键业务服务质量的核心角色。通过寄存器级的精细调优和对硬件行为的深入洞察,才能让这套复杂的系统在严苛的实时环境中稳定运行。

http://www.jsqmd.com/news/1286634/

相关文章:

  • 终极Sunshine游戏串流指南:5步搭建你的家庭游戏共享平台
  • BLE通信核心:GATT与ATT协议在TI协议栈中的实践指南
  • C#通过注册表操作Windows桌面背景:原理、代码与实战
  • Havenlon | 杂谈:当企业不断增加 AI 能力,安全投入跟上了吗?
  • 【GARYNOVA首饰共创】打样迅捷 - 18002239949
  • 基于影刀RPA的AI绘画Prompt自动化提取与整理实战
  • 分布式模型预测控制在多智能体协同中的Matlab实现
  • 基于 LangBot + NapCatQQ的QQ AI Bot实战记录
  • Python网络爬虫实战:Requests与BeautifulSoup批量采集快手公开数据
  • 2026靠谱的微信投票小程序怎么选?支持视频图文投票、智能防刷、免费无广告 - 投票制作助手
  • Git 提交作者老是混用账号?一招给单个项目单独配 user.name/email(保姆级实测避坑)
  • Windows热键检测完全指南:hotkey-detective深度技术解析与实战手册
  • 基于行空板K10与BH1750传感器构建智能光照培养监测系统
  • 基于UI自动化与Playwright的微信好友状态检测技术实战
  • 考虑电动汽车 V2G 的配电网多源协同无功优化研究(Matlab代码实现)
  • 物联网设备开发:LTE与GNSS模块集成方案
  • vLLM 与 SGLang 推理框架性能横评:技术选型深度解析
  • 雨山业主必看!2026.7月马鞍山本地化防水修缮,告别反复渗漏 - 吉林同城获客
  • 抖音无水印下载终极指南:5分钟掌握免费高清视频批量下载技巧
  • Supervisor exit status 143
  • T5模型:统一框架下的NLP任务处理与优化实践
  • 淘宝闪购外卖券领取入口和路径,2026年7月淘宝闪购外卖券使用规则,每日大额红包领取方法,外卖优惠券叠加券神券口令分享 - 优企甄选
  • 【无功优化】配电网+电动汽车V2G+无功优化研究(Matlab代码实现)
  • 腾讯云Mall 2.0|AI原生商城智能经营平台:技术架构与实践价值
  • 千载盈亏谁数, 不过灶边朝暮。 米粒滚星河, 沸作一窗烟雨。 且住,且住, 碗底莲痕初露。 恒沙多少泡沤, 浮沉恰如朝露。 扶出共邻翁, 笑指老槐如故。 添否,添否, 明月清风热粥。
  • NBM5100A与PIC32MX795F512L在低功耗物联网设备中的协同设计
  • 安卓文件管理的利器,为什么比系统自带更好用?
  • PyTorch安装全攻略:从硬件兼容到环境配置,彻底解决CUDA版本冲突
  • 静磁场仿真并行计算与GPU加速实践
  • 深入解析以太网交换芯片ALE:端口镜像、链路聚合与VLAN的硬件实现