尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

TI微控制器硬件CRC控制器:原理、模式选择与ESM集成实战

TI微控制器硬件CRC控制器:原理、模式选择与ESM集成实战
📅 发布时间:2026/7/26 2:00:15

1. CRC控制器:嵌入式系统的数据守护神

在嵌入式系统开发,尤其是汽车电子、工业控制这类对可靠性要求极高的领域里,数据完整性校验从来都不是一个可选项,而是关乎系统安全的生命线。想象一下,一辆高速行驶的汽车,其控制单元(ECU)内存中的程序代码或关键传感器数据因为宇宙射线、电磁干扰或硬件老化而发生了一个比特的翻转,如果没有有效的检测机制,后果可能是灾难性的。循环冗余校验(CRC)正是应对这种风险的核心技术之一。而硬件CRC控制器,则是将这项技术从软件计算的“体力活”中解放出来,变成一项高效、自动化的“后台服务”。

我接触过不少项目,早期为了节省成本或受限于芯片选型,CRC校验全靠软件实现。每次传输或存储一批数据,CPU就得吭哧吭哧地执行几十甚至上百条指令来计算校验和,不仅消耗宝贵的CPU周期,在实时性要求高的场景下还可能成为性能瓶颈。后来,当项目开始采用集成硬件CRC控制器的微控制器(比如TI的C2000、Hercules等系列)后,整个系统的设计思路和可靠性都上了一个台阶。硬件CRC控制器就像一个不知疲倦的“数据审计员”,能在后台独立、高速地完成数据校验,CPU只需在出错时被通知一下即可。今天,我就结合TI微控制器中的CRC模块,深入聊聊这个“守护神”的工作原理、几种不同的工作模式,以及在实际项目中如何配置和使用它,特别是它与DMA、中断,以及你提供的资料中提到的错误信令模块(ESM)是如何协同工作的。无论你是正在评估芯片选型的系统架构师,还是正在调试CRC功能的嵌入式软件工程师,相信这些从实际项目中踩坑得来的经验,都能给你带来一些启发。

2. CRC核心原理与硬件加速的必要性

在深入寄存器之前,我们必须先理解CRC在硬件中是如何被加速的,以及为什么需要专门的控制器。这决定了我们后续所有配置和模式选择的底层逻辑。

2.1 从软件算法到硬件并行化

传统的软件CRC计算是一个串行过程。以一个简单的CRC-8为例,它基于一个生成多项式(比如x^8 + x^2 + x + 1),数据字节的每一位依次移入一个线性反馈移位寄存器(LFSR),根据多项式的系数决定是否与寄存器中的某些位进行异或操作。处理一个字节需要8个时钟周期,处理一个32位字就需要32个周期。对于需要校验几KB甚至几MB内存的嵌入式应用,这种开销是不可接受的。

硬件CRC控制器的核心突破在于并行计算。它不再是逐位处理,而是能在一个或几个时钟周期内,完成对8位、16位、32位甚至64位宽数据的CRC计算。TI的CRC控制器模块,其核心是一个基于64位本原多项式f(x) = x^64 + x^4 + x^3 + x + 1构建的64位并行签名分析(PSA)寄存器。这个PSA寄存器本质上是一个高度优化的并行LFSR电路。

它是如何工作的?我们可以把它理解为一个“黑盒”函数。当你向PSA寄存器写入一个64位数据时,硬件电路会瞬间计算出这个新数据与PSA寄存器当前值“融合”后的新64位签名值。这个计算过程在硬件逻辑中一步完成,等价于软件中将这64位数据逐位串行移入一个64位LFSR所需的所有操作。文档中给出的那段HDL代码正是描述了这种并行计算的逻辑:通过一个循环展开,预先计算出输入数据每一位对所有64个LFSR寄存器位下一状态的影响,并合并成一组并行更新的方程。

注意:理解PSA寄存器的“写入即计算”特性至关重要。对程序员来说,你只需要像操作普通内存地址一样,向PSA寄存器的映射地址执行写操作(通常通过DMA或CPU),硬件就会自动完成CRC计算并更新内部签名值。这是一个“副作用”操作,你写入的是待校验的原始数据,但写入动作触发了内部的压缩计算。

2.2 控制器 vs. 计算单元:角色的升华

一个纯粹的硬件CRC计算单元(比如某些处理器内核中的CRC指令集)只是加速了单次计算。而CRC控制器是一个更高级的、具备状态机和智能的模块。它的核心职责可以概括为三点:

  1. 组织计算流程:管理待校验内存的“块”(Sector)和“模式”(Pattern)概念,自动控制何时完成一个数据块的校验。
  2. 自动化比对与响应:在后台自动将计算出的签名与预设的正确值(存储在CRC值寄存器中)进行比较。
  3. 事件通知与协同:通过中断、DMA请求等方式,与CPU、DMA控制器、错误处理模块(如ESM)进行通信,实现全自动或半自动的校验流程。

正是这三点,使得CRC控制器能够实现“后台内存巡检”这种高级功能。它不再是一个被调用的函数,而是一个可以独立运行的“协处理器”。

3. 工作模式深度解析:如何根据系统需求做选择

TI的CRC控制器提供了三种工作模式:AUTO(自动)、Semi-CPU(半CPU)和Full-CPU(全CPU)。选择哪种模式,是系统设计初期就需要权衡的关键决策,它直接影响到CPU负载、系统响应性和软件复杂度。

3.1 AUTO模式:全自动后台守护

这是最强大、也是最常用的模式,尤其适合安全完整性等级(SIL/ASIL)要求高的应用。在此模式下,CRC控制器与DMA控制器紧密耦合,形成一个完全脱离CPU干预的校验流水线。

工作流程与角色分工:

  1. 初始化:CPU负责“搭台”。这包括:

    • 配置DMA通道1:源地址指向待校验内存的起始处,目标地址指向CRC控制器的PSA签名寄存器。设置传输数据宽度(8/16/32/64位)和总传输计数(元素数×帧数)。
    • 配置DMA通道2:源地址指向存储预设CRC值的表格(通常在Flash或安全内存中),目标地址指向CRC控制器的CRC值寄存器。
    • 配置CRC控制器:设置模式为AUTO,配置模式计数器(CRC_PCOUNT_REGx,决定每个Sector包含多少个数据Pattern)和扇区计数器(CRC_SCOUNT_REGx,决定总共有多少个Sector)。
    • 配置触发源:通常使用一个硬件定时器(Timer)的输出作为DMA通道1的触发事件,以固定的周期性地启动内存读取和CRC计算。
  2. 运行期(无人值守):

    • 启动:定时器第一次触发,DMA通道1开始将第一个Sector的数据搬运至PSA寄存器。同时,CRC控制器会自动发出一个DMA请求,DMA通道2将第一个Sector对应的预设CRC值搬运到CRC值寄存器。
    • 计算与比对:当模式计数器减到0(即一个Sector的数据全部压缩完成),PSA寄存器中的最终签名会被自动拷贝到PSA扇区签名寄存器,然后PSA寄存器清零准备下一个Sector。紧接着,硬件自动比较PSA扇区签名寄存器与CRC值寄存器的值。
    • 结果处理与循环:
      • 如果匹配:CRC控制器发出DMA请求,DMA通道2自动装载下一个Sector的预设CRC值。同时,DMA通道1在定时器下一次触发时,继续搬运下一个Sector的数据。扇区计数器加1。
      • 如果不匹配:CRC控制器置位错误标志,并可根据配置产生CRC失败中断(CRC Fail Interrupt)。CPU在中断服务程序(ISR)中,可以读取当前扇区寄存器(Current Sector Register)来定位是哪个内存块出了问题,并触发更高级的错误处理(如通过ESM上报系统级错误)。

实操心得:在AUTO模式下,最关键的是确保DMA传输计数与CRC控制器的Pattern/Sector计数严格匹配。文档中给出的公式CRC Pattern Count × CRC Sector Count = DMA Element Count × DMA Frame Count必须遵守。我曾在一个项目中因为DMA帧数配置错误,导致CRC控制器在Sector边界判断错位,引发了间歇性的“CRC下溢中断”(Underrun),排查了很久。建议:在初始化代码中,加入对这个等式的断言检查,防患于未然。

3.2 Semi-CPU模式:折中的控制与效率

在某些场景下,系统可能没有足够的DMA通道,或者预设的CRC值表格需要动态生成/更新,又或者你希望对校验过程有更强的控制力,但又不希望CPU承担全部的数据搬运工作。这时Semi-CPU模式是理想选择。

工作流程:

  1. 初始化:CPU配置DMA通道(仅需一个),用于将内存数据搬运到PSA寄存器。CRC控制器配置为Semi-CPU模式,并设置模式计数和扇区计数。注意:此模式下,CRC值寄存器不会被DMA更新,它里面的值是无效的。
  2. 运行期:
    • DMA在硬件定时器触发下,持续搬运数据。
    • 当一个Sector的数据压缩完成时,CRC控制器产生一个压缩完成中断(Compression Complete Interrupt)。
    • CPU响应中断,在ISR中需要做两件事:
      • 从PSA扇区签名寄存器(注意不是PSA寄存器!)读取计算出的签名。
      • 从自己维护的预设CRC值表(可能在Flash中)中,取出对应Sector的预期值,进行软件比较。
      • 如果匹配,则清除中断标志,等待下一个Sector完成;如果不匹配,则执行错误处理流程。
    • CRC控制器在中断产生后,会自动清零PSA寄存器并准备下一个Sector的计算。

与AUTO模式的核心区别:

  • 比对责任方:从硬件自动比对,变为CPU软件比对。
  • CRC值来源:从DMA自动加载的CRC值寄存器,变为CPU从自定义位置读取。
  • 中断性质:从“结果中断”(失败/成功)变为“过程中断”(阶段完成)。

注意事项:Semi-CPU模式存在“超限”(Overrun)风险。如果CPU太忙,未能及时响应压缩完成中断并读取PSA扇区签名寄存器,而DMA已经写入了新的数据,导致PSA寄存器开始计算下一个Sector的签名并准备覆盖PSA扇区签名寄存器,就会发生超限。CRC控制器可以配置产生超限中断来警告这种情况。设计建议:评估系统最坏情况下的中断响应时间,确保它远小于一个Sector的数据压缩时间。必要时,可以增大Sector尺寸(即增加Pattern Count)来延长这个时间窗口。

3.3 Full-CPU模式:极简场景下的完全控制

这是资源占用最少、但CPU负担最重的模式。在此模式下,CRC控制器的所有自动化功能(DMA请求、模式/扇区/超时计数器)均被禁用。它退化为一个简单的、内存映射的CRC计算硬件加速器。

典型使用场景:

  • 芯片没有可用的DMA控制器。
  • 需要校验的数据量很小,且校验操作不频繁(例如,只在系统启动时校验一次引导程序)。
  • 需要极其灵活、非周期性的校验策略。

工作流程:

  1. CPU将CRC控制器模式设置为Full-CPU或Data Capture(用于写入种子值)。
  2. CPU通过一个循环,主动从内存读取数据,并直接写入PSA寄存器的地址。每次写入,硬件完成一次CRC计算。
  3. 当所有数据写入完成后,CPU从PSA寄存器(此时它就是最终签名)或PSA扇区签名寄存器读取计算结果。
  4. CPU从已知位置获取预期CRC值,进行软件比较。

优缺点分析:

  • 优点:无需配置复杂的DMA和计数器,软件流程直观,对系统其他资源零占用(除了CPU本身)。
  • 缺点:CPU被完全捆绑在数据搬运和计算流程上,实时性受影响,能效比低。

4. 关键寄存器组详解与配置实战

理解了模式,我们再来深入看看实现这些功能的核心寄存器。你提供的资料中包含了ESM和CRC的寄存器描述,这里我们聚焦CRC控制器部分,并解释其与ESM的关联。

4.1 核心控制与状态寄存器

每个CRC通道都有一套独立的寄存器组。以下是最关键的几个:

1. 模式寄存器(CRC_MODE_REGx)这是配置的起点。其关键字段包括:

  • 操作模式选择位:用于在AUTO、Semi-CPU、Full-CPU或Data Capture模式间切换。
  • 数据宽度选择位:决定每次写入PSA寄存器时,硬件按8/16/32/64位中的哪种位宽进行压缩计算。这必须与DMA传输的数据宽度一致。
  • 中断使能位:独立使能CRC失败中断、超限中断、下溢中断、压缩完成中断等。

2. 模式计数预加载寄存器(CRC_PCOUNT_REGx)与模式计数器这是一个20位的寄存器,用于定义每个“扇区”(Sector)包含多少个“数据模式”(Data Pattern)。一个Pattern即一次写入PSA寄存器的数据单元,其大小由数据宽度选择位决定。例如,如果数据宽度为32位(4字节),PCOUNT设置为1000,则一个扇区的大小为1000 * 4 = 4000字节。当计数器从预加载值递减到0时,触发Sector结束事件(在AUTO模式下触发自动比对和DMA请求,在Semi-CPU模式下触发中断)。

3. 扇区计数预加载寄存器(CRC_SCOUNT_REGx)与扇区计数器这是一个16位寄存器,定义总共要校验多少个扇区。扇区计数器是一个自由运行的递增计数器,每次完成一个扇区就加1。当CRC失败时,该计数器的值会被锁存到当前扇区寄存器中,供CPU读取以定位错误扇区。

4. PSA签名寄存器与PSA扇区签名寄存器

  • PSA签名寄存器:可读可写。写入时触发压缩计算,读取时返回当前计算中的中间签名。重要:在Semi-CPU模式下,CPU不应直接从该寄存器读取最终签名,因为DMA可能在你读取的瞬间又写入了新数据。应读取PSA扇区签名寄存器。
  • PSA扇区签名寄存器:只读。在一个扇区计算完成时,硬件自动将PSA签名寄存器的最终值拷贝至此,然后清零PSA寄存器。这是用于比对的稳定值。

5. CRC值寄存器在AUTO模式下,由DMA通道2负责用预设的CRC值表更新此寄存器。在Semi-CPU和Full-CPU模式下,此寄存器无效,CPU应忽略其内容。

4.2 与错误信令模块(ESM)的集成

你提供的资料开头大篇幅描述了ESM模块的寄存器,这并非偶然。在TI的安全架构中,CRC控制器通常与ESM紧密集成。CRC控制器自身产生的各种错误中断(失败、超时、超限、下溢),其输出信号往往会连接到ESM的某个错误输入通道。

集成工作流程:

  1. 错误检测:CRC控制器在AUTO模式下检测到签名不匹配,产生CRC失败中断信号。
  2. 错误信令:该中断信号作为错误源,输入到ESM模块的特定通道(例如ESM_Group1_Channel_x)。
  3. 错误处理与动作:
    • ESM会根据该通道的配置(参考你资料中的ESMIESR4/7中断使能寄存器、ESMILSR4/7中断级别寄存器),决定是否向CPU产生一个高优先级或低优先级的系统中断。
    • 更重要的是,ESM可以配置错误引脚动作(参考ESMIEPSR7/ESMIEPCR7寄存器)。例如,可以将一个严重的CRC内存错误配置为直接拉低MCU的ERRORn引脚。这个引脚可以连接到外部看门狗、电源监控芯片或其他系统级安全逻辑,从而在软件崩溃前触发硬件级的复位或安全状态转换。
  4. 状态查询:CPU在ESM的中断服务程序中,可以通过读取ESM状态寄存器(如ESMSR4/7)来确认是哪个错误源触发了中断,然后再进一步查询CRC控制器的当前扇区寄存器等,进行精细化错误处理。

配置示例:假设CRC1通道的失败错误连接到ESM Group1 Channel 5。

  1. 配置CRC控制器使能CRC失败中断。
  2. 配置ESM:通过写ESMIESR7寄存器(假设Group1对应ESMIESR7)的第5位为1,使能该通道的中断。
  3. 配置ESM:通过写ESMILSR7寄存器的第5位为1,将该通道错误设置为高优先级中断线。
  4. 配置ESM:通过写ESMIEPSR7寄存器的第5位为1,使能该通道错误触发ERRORn引脚动作。
  5. 在ESM的高优先级中断服务程序中,读取ESMSR7寄存器,检查第5位是否为1,确认是CRC1错误。然后,跳转到CRC1的错误处理函数。

这种架构实现了错误处理的层次化:专用模块(CRC)负责检测,通用安全模块(ESM)负责集中管理、分级和做出终极硬件响应,极大地增强了系统的功能安全(FuSa)特性。

5. 实战配置:以AUTO模式内存巡检为例

让我们以一个具体的场景来串联所有知识点:在TI的TMS570系列MCU上,使用CRC1通道,以AUTO模式周期性地校验一段64KB的Flash内存(假设存储了关键应用程序代码),校验周期为100ms。

步骤1:内存与CRC值表规划

  • 将64KB Flash划分为16个扇区,每个扇区4KB(4096字节)。
  • 在Flash的另一个安全区域(或通过编译时工具生成),预先计算好这16个4KB扇区对应的64位CRC值,组成一个数组const uint64_t crc_expected_table[16]。

步骤2:DMA配置(两个通道)

  • DMA通道A(数据搬运):
    • 源地址:待校验Flash区域的起始地址(0x00080000)。
    • 目标地址:CRC1 PSA签名寄存器的地址(例如0xFFF7F040)。
    • 传输宽度:32位(假设效率最优)。
    • 元素计数:1024(因为每个扇区4KB / 4字节 = 1024个“模式”)。
    • 帧计数:16(总扇区数)。
    • 触发源:配置为某个定时器(如RTI)的周期触发事件。
  • DMA通道B(CRC值搬运):
    • 源地址:crc_expected_table数组的地址。
    • 目标地址:CRC1 CRC值寄存器的地址(例如0xFFF7F048)。
    • 传输宽度:64位(CRC值是64位的)。
    • 元素计数:1(每次只搬一个值)。
    • 帧计数:16。
    • 触发源:配置为CRC1的DMA请求事件。

步骤3:CRC控制器配置

// 假设寄存器基地址为 CRC1_BASE // 1. 配置模式寄存器:AUTO模式,32位数据宽度,使能CRC失败中断和超时中断 HWREG(CRC1_BASE + CRC_MODE_REG) = CRC_MODE_AUTO | CRC_DATA_WIDTH_32BIT | CRC_INT_EN_FAIL | CRC_INT_EN_TIMEOUT; // 2. 配置模式计数寄存器:每个扇区1024个Pattern HWREG(CRC1_BASE + CRC_PCOUNT_PRELOAD_REG) = 1024U; // 3. 配置扇区计数寄存器:总共16个扇区 HWREG(CRC1_BASE + CRC_SCOUNT_PRELOAD_REG) = 16U; // 4. (可选)配置超时预加载寄存器,防止DMA停滞导致系统挂起 HWREG(CRC1_BASE + CRC_TIMEOUT_PRELOAD_REG) = 0xFFFFFF; // 设置一个较大的超时值 // 5. 写入PSA种子值(如果需要非零初始值) HWREG(CRC1_BASE + CRC_PSA_SEED_REG) = 0xFFFFFFFFFFFFFFFFUL; // 6. 启动CRC控制器:设置控制寄存器的GO位 HWREG(CRC1_BASE + CRC_CTRL_REG) |= CRC_CTRL_GO;

步骤4:ESM配置(连接CRC1失败错误)

// 假设CRC1_FAIL连接至ESM Group1 Channel 10 // 1. 使能该通道中断 HWREG(ESM_BASE + ESMIESR7) |= (1U << 10); // 2. 设置为高优先级中断 HWREG(ESM_BASE + ESMILSR7) |= (1U << 10); // 3. 使能ERROR引脚动作(根据安全需求决定) HWREG(ESM_BASE + ESMIEPSR7) |= (1U << 10);

步骤5:中断服务程序(ISR)处理

  • CRC失败中断ISR:读取CRC控制器的当前扇区寄存器,确定哪个Flash扇区出错。记录错误日志,可能触发系统安全状态降级(如关闭部分功能,点亮故障灯)。
  • ESM Group1 高优先级中断ISR:读取ESMSR7寄存器,检查位10。如果置位,则调用上述CRC失败处理函数,并清除ESM状态标志。

6. 常见问题排查与调试技巧

在实际项目中,配置CRC控制器时难免会遇到问题。以下是一些常见坑点及其排查思路:

问题1:CRC持续报告失败,但数据似乎没错。

  • 检查1:种子值:确认PSA寄存器的初始种子值(Seed)与生成预设CRC值表时使用的种子值是否完全一致。通常为全0或全1,但必须匹配。
  • 检查2:数据宽度和对齐:确认CRC控制器的数据宽度配置与DMA传输宽度、以及你计算参考CRC值时的数据单元宽度是否一致。例如,如果内存数据是字节流,但你按32位宽度写入PSA,那么字节序(Big-Endian vs Little-Endian)就会产生影响。TI的CRC模块通常要求数据以内存中的自然顺序(小端格式)写入。
  • 检查3:数据范围:确认DMA传输的源地址范围,是否包含了所有需要校验的数据,且没有多传输或少传输任何字节。一个字节的偏差就会导致完全不同的CRC结果。
  • 检查4:CRC值表:使用一个简单的测试程序,用软件CRC算法(或单步DMA传输)计算第一个扇区的CRC,与你的预设表第一个值对比,验证CRC值表本身是否正确。

问题2:CRC下溢中断(Underrun)频繁发生。

  • 原因:在AUTO模式下,当一个扇区计算完成时,CRC控制器发现CRC值寄存器中的值不是“最新的”(即对应的内部标志未置位),无法进行比较。
  • 排查:这几乎总是DMA通道B(CRC值搬运)的配置问题。检查:
    1. DMA通道B的触发源是否正确设置为CRC控制器的DMA请求事件。
    2. DMA通道B的传输计数(元素和帧)是否与扇区数匹配。它应该被配置为“每次请求传输1个元素(64位CRC值),共传输N帧(N=扇区数)”。
    3. 在CRC控制器启动(GO位置位)后,DMA通道B是否已经就绪。有时需要确保CRC值DMA通道在CRC控制器启动前就已使能。

问题3:系统性能下降或实时任务受影响。

  • 分析:在AUTO或Semi-CPU模式下,DMA和CRC控制器在后台持续工作,会占用总线带宽。
  • 优化:
    • 调整扇区大小:增大扇区(增加Pattern Count)可以减少DMA请求和中断的频率,但会延长错误检测的延迟。需要在检测实时性和总线占用率之间权衡。
    • 优化DMA仲裁优先级:在支持多优先级DMA的MCU中,可以适当降低CRC相关DMA通道的优先级,确保更高实时性的外设(如ADC、通信接口)能优先使用总线。
    • 选择校验时机:如果不是必须连续巡检,可以在系统空闲或低负载时段(例如,通过RTOS的空闲任务)通过软件触发的方式启动一次块校验。

问题4:如何验证整个CRC巡检链路是否工作正常?

  • 注入错误测试:这是功能安全验证的常用手段。在运行时,故意修改被校验内存区域中的一个字(例如,通过一个测试命令),然后观察CRC控制器是否能正确产生失败中断,并且当前扇区寄存器是否能准确定位到被修改的扇区。这是验证从数据读取、CRC计算、到错误上报整个链条是否健全的唯一可靠方法。

最后,我个人在多个安全相关项目中使用TI CRC控制器的体会是,它的自动化程度非常高,一旦正确配置,极其可靠。最大的挑战在于初始化的复杂性——需要协调DMA、定时器、CRC控制器、ESM等多个模块。我的建议是,在项目初期就编写一个完整的、可复用的驱动层,封装好AUTO模式的配置流程,并进行充分的注入错误测试。这样,在后续的开发中,你只需要关心“校验哪段内存”和“出错后怎么办”这两个业务问题,而无需反复调试底层的硬件协同逻辑。记住,在安全至上的系统中,数据完整性校验不是功能,而是基石。

相关新闻

  • (2026最新)哈尔滨漏水检测维修一站式上门服务-本地专业防水补漏公司TOP5推荐:暗管漏水检测精准定位 - 安佳防水
  • 从技术专家到AI创业者:AGI研发与商业化实践
  • 深度解析VisualCppRedist AIO:Windows运行库的终极整合方案

最新新闻

  • 三步让《暗黑破坏神2》焕发现代光彩:D2DX渲染优化终极方案
  • RLHF与PPO技术解析:AI模型人类价值对齐实践
  • LLM训练中的浮点数选择与混合精度优化
  • 跨平台应用革命:APK安装器如何在Windows上重新定义安卓应用体验
  • AI智能生成PPT矢量配图工具01Agent核心技术解析
  • 2026-07-26:将数组转换为交替质数数组的最少操作次数。用go语言,给定一个整数数组 `nums`,你需要通过最少的操作次数,把它变成满足特定规律的数组。 规律是: - 数组中所有索引为偶数的位

日新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号