STM32G071RB 与 MR25H40CDF MRAM 工业存储方案实战
1. 项目缘起与方案选型思考1.1 为什么要在工业场景里折腾 MRAM 这颗料做嵌入式硬件超过五年的朋友大概都有个共识选存储介质这件事往往比选主控还让人头疼。EEPROM 擦写寿命撑不住高频写入NOR Flash 写入前得先擦块、掉电还容易丢数据FRAM 容量小价格高SRAM 又得配电池。工业现场那些数据采集节点、PLC 扩展模块、智能仪表经常面临一个尴尬局面——采集频率高、写入频繁、掉电随机还要求十年以上的数据保持能力。MR25H40CDF 这颗 4Mbit 的 MRAM磁性随机存储器就是冲着这个痛点来的。它的核心优势用一句话概括像 SRAM 一样随时写、像 Flash 一样掉电不丢、擦写寿命几乎无限官方标称 10^14 次以上。我第一次在工业网关项目里用它替换掉某款 SPI NOR Flash 之后最直观的感受是——再也不用在固件里写那一堆磨损均衡算法了省下来的代码空间和调试时间相当可观。STM32G071RB 作为主控则是另一个维度的考量。这颗 Cortex-M0 的芯片主频 64MHz128KB Flash、36KB RAM带 2 个 SPI 接口工作温度覆盖 -40 到 85℃工业级可到 105℃价格在同类里算亲民。它和 MR25H40CDF 搭配正好构成一套“低成本主控 高可靠存储”的组合适合批量部署的工业节点。1.2 硬件连接的整体思路MR25H40CDF 走的是标准 SPI 接口支持 Mode 0 和 Mode 3最高时钟能到 40MHz。STM32G071RB 这边我用的是 SPI1映射到 PA5SCK、PA6MISO、PA7MOSI片选 CS 单独用 PA4 做软件控制。这里有个细节值得说虽然 STM32 的 SPI 支持硬件 NSS 管理但在多从机或者需要精确控制片选时序的场景下我强烈建议用普通 GPIO 做软件片选。原因很简单——硬件 NSS 在某些模式下会随 SPI 使能自动拉低时序不好控而 MRAM 对片选建立时间和保持时间有明确要求CS 拉低到第一个时钟沿至少 5ns最后一个时钟沿到 CS 拉高至少 5ns软件控制更稳妥。供电方面MR25H40CDF 是 3.3V 单电源和 STM32G071RB 的 IO 电平天然匹配不需要电平转换。去耦电容我习惯在芯片 VDD 引脚旁边放 0.1μF 加 1μF 组合位置尽量贴近引脚这在 SPI 高速通信时对抑制电源噪声很关键。1.3 软件架构的分层设计固件层面我没有直接把 MRAM 操作散落在业务代码里而是做了三层最底层是 SPI 收发驱动中间是 MR25H40CDF 的读写命令封装最上层是面向业务的数据结构管理。这样分层的好处是将来如果换用其他 SPI 存储芯片只需要改中间层业务代码基本不动。中间层我封装了MRAM_Read、MRAM_Write、MRAM_ReadStatus、MRAM_WriteStatus这几个核心函数每个函数内部处理片选、命令字节、地址字节、数据收发和片选释放的完整时序。2. MR25H40CDF 核心细节与操作要点2.1 芯片内部结构与地址空间MR25H40CDF 的 4Mbit 容量换算成字节是 512KB地址范围 0x00000 到 0x7FFFF需要 19 位地址。SPI 传输时地址分三个字节发送最高字节的高 5 位是无效位实际只用低 3 位加后面两个字节。这一点在写代码时容易出错——如果你直接把 32 位地址变量右移 16 位当第一个地址字节发高位垃圾数据可能被芯片忽略但为了代码清晰我还是建议显式做掩码处理。芯片内部按页组织每页 256 字节。虽然 MRAM 不像 Flash 那样有擦除概念写入时也不需要先擦后写但连续写入跨越页边界时芯片内部地址指针会自动回卷到当前页开头而不是顺序进入下一页。这个行为和 EEPROM 类似是很多新手容易踩的坑。我的做法是在写函数里判断如果本次写入会跨页就拆成两次写操作分别处理页内剩余空间和下一页起始部分。2.2 SPI 模式与时序参数MR25H40CDF 支持 SPI Mode 0CPOL0CPHA0和 Mode 3CPOL1CPHA1。我选的是 Mode 0因为 STM32 的 SPI 在 Mode 0 下配置最直观而且大部分调试工具默认也是 Mode 0。时钟极性 CPOL0 意味着空闲时 SCK 为低电平CPHA0 意味着数据在 SCK 第一个边沿上升沿采样。配置 STM32 的 SPI 时对应CLKPolarity SPI_POLARITY_LOWCLKPhase SPI_PHASE_1EDGE。时钟频率方面STM32G071RB 的 SPI1 挂在 APB2 总线上最高 64MHz。我实际用的是 16MHz 分频64/4这个速率下 MRAM 读写都很稳定示波器抓波形也干净。如果你追求极限速度可以试到 32MHz但要注意 PCB 走线质量——SPI 时钟线如果太长或者没有参考地平面高速下容易振铃导致误码。我一般会在 SCK 和 MOSI 上串 22Ω 电阻做阻抗匹配实测能明显改善信号完整性。2.3 状态寄存器与写保护机制MR25H40CDF 内部有一个状态寄存器包含写使能锁存位WEL、块保护位BP0、BP1和状态寄存器写保护位SRWD。上电后默认所有存储区域可写但每次写操作前必须先发 WREN0x06命令置位 WEL否则写命令会被忽略。这个机制和 Flash 类似目的是防止误写。我在初始化流程里会做两件事一是读一次状态寄存器确认芯片在线二是根据业务需求配置块保护。比如有些项目里前 64KB 存的是校准参数和出厂信息不希望被运行时误改就可以把 BP 位设成保护对应区域。但要注意块保护一旦设上连自己写数据也会被挡住所以调试阶段我通常先不启用保护等逻辑跑通了再打开。提示WREN 命令发出后WEL 位会在下一次写操作完成后自动清零。如果你连续写多个不连续地址每次写之前都要重新发 WREN不能想当然地以为发一次就一劳永逸。3. STM32G071RB 端 SPI 驱动实现3.1 CubeMX 配置与初始化代码用 STM32CubeMX 配置 SPI1 的步骤不复杂但有几个参数容易配错。我一般这样设Mode 选 Full-Duplex MasterData Size 8 BitsFirst Bit MSB FirstPrescaler 选 4 分频CPOL LowCPHA 1EdgeNSS 选 Software。生成代码后MX_SPI1_Init函数里会自动填好这些参数。片选 GPIO 我单独配置 PA4 为推挽输出初始电平拉高。这里有个小技巧在 CubeMX 里给 PA4 起个用户标签叫MRAM_CS生成的宏定义MRAM_CS_Pin和MRAM_CS_GPIO_Port直接可用代码可读性好很多。初始化完成后我会在main函数里加一段自检代码读 MRAM 的状态寄存器如果返回值不是预期的 0x00 或 0x02取决于 WEL 状态就点亮一个错误指示灯。这一步能快速判断硬件焊接和连线是否正常比盲目跑读写测试高效得多。3.2 底层字节收发函数SPI 收发我封装了两个基础函数SPI_WriteByte和SPI_ReadByte。写字节就是调HAL_SPI_Transmit读字节调HAL_SPI_Receive。但这里有个细节——HAL 库的HAL_SPI_Transmit和HAL_SPI_Receive在连续调用时中间会有函数调用开销如果每个字节都单独调一次整体速率会打折扣。我的做法是对于连续多字节读写直接用HAL_SPI_TransmitReceive或者 DMA 方式一次把命令、地址、数据打包发出去。以读操作为例完整流程是拉低 CS发 0x03 读命令发 3 字节地址然后连续读 N 字节数据最后拉高 CS。如果用 DMA可以把发送缓冲区和接收缓冲区都准备好启动一次 DMA 传输等传输完成回调里拉高 CS。这样 CPU 占用率极低适合在 RTOS 任务里跑。3.3 读写函数的完整实现写函数MRAM_Write的逻辑是这样的先拉低 CS发 WREN0x06拉高 CS再拉低 CS发 WRITE0x02发 3 字节地址发数据拉高 CS。注意 WREN 和 WRITE 之间必须拉高 CS让芯片内部锁存 WEL 位不能连着发。读函数MRAM_Read更简单拉低 CS发 READ0x03发 3 字节地址读数据拉高 CS。读操作不需要 WREN也不需要等待。我实测过在 16MHz SPI 时钟下写 256 字节一页大约耗时 180μs读同样长度约 150μs。这个速度对于大多数工业数据采集场景绰绰有余。如果你需要更高吞吐可以考虑用 Quad SPI 模式的 MRAM但 MR25H40CDF 只支持标准 SPI所以 16MHz 基本是性价比最高的选择。// 写使能 void MRAM_WriteEnable(void) { MRAM_CS_LOW(); SPI_WriteByte(0x06); MRAM_CS_HIGH(); } // 写数据 void MRAM_Write(uint32_t addr, uint8_t *buf, uint16_t len) { MRAM_WriteEnable(); MRAM_CS_LOW(); SPI_WriteByte(0x02); SPI_WriteByte((addr 16) 0x07); SPI_WriteByte((addr 8) 0xFF); SPI_WriteByte(addr 0xFF); for (uint16_t i 0; i len; i) { SPI_WriteByte(buf[i]); } MRAM_CS_HIGH(); }4. 数据存储策略与可靠性设计4.1 数据结构布局规划512KB 的空间说大不大说小不小我一般按功能分区前 4KB 放设备信息和出厂校准参数中间 500KB 做循环数据记录区最后 8KB 放配置参数和日志索引。分区边界用宏定义写死避免运行时动态计算带来的不确定性。循环记录区我采用“块索引 数据块”的结构。每个数据块固定 64 字节包含时间戳、通道号、测量值和 CRC 校验。块索引区记录当前写入位置和有效块数量。这样设计的好处是即使某次写入过程中掉电最多只影响当前正在写的那个块之前的数据完好无损。4.2 掉电保护与数据完整性MRAM 本身掉电不丢数据但“写一半掉电”仍然可能导致数据块不完整。我的应对策略是双缓冲加校验每个数据块写入前先算好 CRC16写入时先写数据区再写 CRC 和有效标志。读取时先检查有效标志再验 CRC两者都通过才认为数据有效。如果发现无效块就跳过它继续读下一个。另外我在固件里加了一个“写入完成标志”机制。每次写完一个块在块头的一个字节写入 0xA5 表示完成。如果读到 0xFF 或其他值说明这个块写了一半就掉电了直接丢弃。这个机制简单但极其有效我在多个现场项目里验证过连续运行两年多没有出现过数据错乱。4.3 磨损均衡的取舍前面说过 MRAM 擦写寿命几乎无限所以理论上不需要磨损均衡。但“几乎无限”不等于“绝对无限”而且工业项目往往要求十年以上连续运行。我的做法是做一个轻量级的地址轮转每次写新数据块时不是固定写在同一个地址而是按顺序往后推写到末尾再回卷到开头。这样整个存储区的写入次数大致均匀进一步延长寿命。这个轮转逻辑不需要复杂的算法就是一个写指针加取模运算。但要注意回卷时不能直接覆盖最老的数据而是要先判断哪些块已经无效被新数据覆盖过优先复用无效块的空间。我实现了一个简单的空闲块链表初始化时扫描整个记录区把所有无效块串起来写入时从链表头取用完放回链表尾。5. 实操调试与常见问题排查5.1 硬件调试的典型问题第一次点亮 MRAM 时最常见的问题是读不到正确数据。我的排查顺序是这样的先用示波器看 SCK、MOSI、CS 三根线的波形确认时钟有没有输出、片选有没有拉低、MOSI 上有没有命令字节。如果波形正常但数据不对再检查 MISO 线——很多时候是 MISO 虚焊或者被其他外设拉住了。还有一个隐蔽的坑STM32 的 SPI 在配置为 Master 时MISO 引脚必须配置为复用推挽或者复用开漏不能配成普通输入。我有一次偷懒用普通 GPIO 读 MISO结果数据全是 0xFF查了半天才发现是引脚模式配错了。5.2 软件层面的常见故障软件上最容易出问题的地方是片选时序。HAL 库的HAL_SPI_Transmit函数在传输完成后会等 TXE 和 BSY 标志但如果你在调用它之前就拉低了 CS传输完成后立刻拉高 CS中间可能缺少必要的延时。MRAM 要求最后一个时钟沿到 CS 拉高至少 5ns虽然 16MHz 下这个时间很容易满足但在 32MHz 以上就要留意了。我的习惯是在拉高 CS 之前加一个__NOP()或者几个空指令确保时序余量。另一个常见问题是 WREN 命令没生效。前面提过WREN 和 WRITE 之间必须拉高 CS如果你连着发芯片不会锁存 WEL 位写操作会被静默忽略。这个 bug 很隐蔽因为读回来的数据看起来“写进去了”实际上是旧数据。我的调试方法是写完立刻读回比对不一致就报错。5.3 常见问题速查表现象可能原因排查方法解决措施读回全 0xFFMISO 未连接或引脚模式错误示波器看 MISO 波形检查焊接配置为复用模式读回全 0x00CS 未拉低或 SPI 未使能检查 CS 电平和 SPI 使能位确认 GPIO 输出和 SPI 配置写入后读回旧数据WREN 未生效或 CS 时序错误读状态寄存器看 WEL 位WREN 和 WRITE 之间拉高 CS跨页写入数据错乱地址指针回卷检查写入长度和起始地址拆分跨页写入高速通信误码信号完整性差示波器看 SCK 振铃串匹配电阻降低时钟上电后数据丢失电源上升沿过慢示波器看 VDD 上升时间加电源监控芯片或调整电容注意MRAM 虽然掉电不丢数据但电源电压低于 2.7V 时读写操作可能不可靠。工业现场如果电源波动大建议在 VDD 上并一个 100μF 电解电容做储能确保掉电瞬间有足够时间完成当前写操作。6. 性能优化与进阶技巧6.1 DMA 加速连续读写在数据记录场景里经常需要一次写入几百字节。如果还用逐字节的HAL_SPI_TransmitCPU 会被完全占用。我改用 DMA 后写 256 字节的 CPU 占用从 100% 降到不到 5%主循环可以同时处理其他任务。配置 DMA 的步骤在 CubeMX 里给 SPI1_TX 和 SPI1_RX 各分配一个 DMA 通道模式选 Normal优先级 Medium。代码里调用HAL_SPI_Transmit_DMA和HAL_SPI_Receive_DMA在传输完成回调HAL_SPI_TxCpltCallback里拉高 CS。注意 DMA 传输期间不能动 CS 引脚否则数据会错位。6.2 双缓冲机制提升写入效率如果业务层写入频率很高比如每毫秒写一次每次都直接操作 SPI 会导致任务阻塞。我的做法是在 RAM 里开两个 256 字节的缓冲区业务层往缓冲区 A 写写满后切换标志后台任务把缓冲区 A 的内容通过 SPI 刷到 MRAM同时业务层继续往缓冲区 B 写。这种乒乓缓冲机制能把 SPI 传输时间隐藏起来业务层几乎感觉不到存储延迟。实现时要注意缓冲区切换的原子性。如果用了 RTOS可以用信号量或者消息队列来同步如果是裸机就在切换标志时关中断防止竞态。6.3 低功耗场景的考量STM32G071RB 支持多种低功耗模式MRAM 在待机时电流只有几微安。如果项目是电池供电的无线传感器节点可以在两次采集之间让 MCU 进 Stop 模式MRAM 保持供电但 CS 拉高功耗极低。唤醒后不需要重新初始化 SPI直接读写即可因为 MRAM 没有像 Flash 那样的上电初始化时间。我实测过一套配置采集间隔 10 秒每次采集写 64 字节MCU 其余时间在 Stop 模式整机平均电流约 15μA用 2000mAh 的锂亚电池能撑五年以上。这个数据供做低功耗节点的朋友参考。7. 实际项目中的经验沉淀7.1 批量生产时的工装测试产品进入量产阶段后每台设备都需要验证 MRAM 是否正常。我设计了一个简单的工装测试流程设备上电后进入测试模式工装通过串口发命令MCU 执行“写全片特定图案 - 读回比对 - 报告结果”的流程。全片 512KB 写读一遍大约 3 秒产线节拍完全跟得上。测试图案我选的是 0x55、0xAA、0x00、0xFF 四种交替能覆盖大部分数据线粘连和地址线短路的问题。如果某一位固定不变比对时立刻就能发现。这个工装帮我拦下过好几批焊接不良的板子比人工目检靠谱得多。7.2 现场故障的远程诊断工业现场设备装上去之后最怕的是偶发故障。我在固件里加了一个“黑匣子”功能MRAM 里划出 2KB 专门记录系统异常事件包括复位原因、看门狗触发、SPI 通信错误等。每条记录 16 字节包含时间戳和错误码。设备运行异常时维护人员可以通过串口或者无线模块把黑匣子数据读出来快速定位问题。这个功能成本极低——只是多写几行代码但省下的现场排查差旅费相当可观。我有个客户的项目在偏远矿区以前每次故障都要派人开车几小时过去现在远程读一下黑匣子就能判断是软件问题还是硬件问题效率提升非常明显。7.3 选型对比与替代方案虽然 MR25H40CDF 很好用但也不是所有场景都非它不可。如果你的项目写入频率不高比如一天写几次用 SPI NOR Flash 加磨损均衡算法也能满足成本更低。如果容量需求大于 512KB可以考虑 FRAM 或者带电池的 SRAM。如果对速度要求极高可以看看 Quad SPI 的 MRAM但主控也要支持对应的接口。我的建议是先明确三个指标——写入频率、数据保持年限、单机成本预算。写入频率高于每秒一次、要求十年以上保持、预算允许每片多花几块钱的直接上 MRAM 省心。否则可以再权衡。提示MR25H40CDF 的封装是 8 引脚 SOIC和常见的 SPI Flash 引脚兼容。如果项目后期想从 Flash 换成 MRAM硬件上基本不用改板只需要调整固件里的命令集。这个兼容性在方案迭代时很有价值。7.4 代码可移植性的处理最后分享一个代码组织上的心得。我把 MR25H40CDF 的驱动写成了一个独立的.c/.h对对外只暴露MRAM_Init、MRAM_Read、MRAM_Write、MRAM_Erase虽然 MRAM 不需要擦除但为了接口统一保留空实现这几个函数。底层 SPI 收发通过函数指针传入这样换主控或者换 SPI 实例时只需要改初始化部分驱动逻辑完全复用。这个做法在多个项目之间迁移时特别省事。我有个驱动文件从 STM32F103 一直用到 STM32G071中间还移植到过一款国产 MCU除了 SPI 底层函数重写了一下上层业务代码一行没动。对于需要维护多条产品线的团队来说这种分层设计能省下大量重复劳动。

相关新闻

大模型网关从零搭建:核心架构、Agent接入与踩坑实践

大模型网关从零搭建:核心架构、Agent接入与踩坑实践

1. 大模型网关到底在解决什么问题很多团队在2024年前后开始把大模型接进自己的业务系统,最初的做法往往很直接:业务代码里硬编码一个API地址,把密钥写在配置文件里,谁需要调用就自己写一段HTTP请求。这种做法在只有一两个应用、一…

2026/10/5 21:22:37 阅读更多 →
工业嵌入式存储选型:MRAM MR25H40CDF 与 PIC18F47J53 实战指南

工业嵌入式存储选型:MRAM MR25H40CDF 与 PIC18F47J53 实战指南

1. 为什么在工业场景里我会优先考虑 MRAM 而不是 EEPROM做嵌入式这行十几年,存储方案选型这件事踩过的坑比写过的驱动还多。早些年做工业数据采集终端,EEPROM 写坏过、FRAM 断货过、NOR Flash 掉数据过,每一次都让人半夜爬起来改方案。后来接…

2026/10/5 21:22:37 阅读更多 →
Workbench轮毂拓扑优化实战:从建模到几何重构全流程解析

Workbench轮毂拓扑优化实战:从建模到几何重构全流程解析

轮毂拓扑优化这活儿,听着唬人,干起来其实挺上头。我最早接触Workbench拓扑优化的时候,也是从一个小支架开始练手的,后来真正在项目里把一套汽车轮毂做了一遍完整优化,才发现里面坑不少,但收获也真的大。这篇…

2026/10/5 21:21:36 阅读更多 →

最新新闻

ChatGPT Codex试用心得:从dotnet项目PR看码农的可靠助手还是失业号角?TaoToken统一Key实测

ChatGPT Codex试用心得:从dotnet项目PR看码农的可靠助手还是失业号角?TaoToken统一Key实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 22:06:11 阅读更多 →
EditText 光标不闪动?从 android:textCursorDrawable 到 TaoToken 的排查路径

EditText 光标不闪动?从 android:textCursorDrawable 到 TaoToken 的排查路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 22:06:11 阅读更多 →
python-抖音 urlopen 请求头配置:TaoToken 统一 Key 通道下 get 请求抓取实践

python-抖音 urlopen 请求头配置:TaoToken 统一 Key 通道下 get 请求抓取实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 22:05:10 阅读更多 →
配置光猫的上网与IPTV通过LAN1口单线复用

配置光猫的上网与IPTV通过LAN1口单线复用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 22:02:09 阅读更多 →
STM32F745VG驱动MR25H40CDF MRAM:SPI配置与工业存储实战

STM32F745VG驱动MR25H40CDF MRAM:SPI配置与工业存储实战

1. 为什么工业现场还在用 MRAM,而不是继续堆 Flash如果你拆过工业网关、PLC 扩展模块或者电力监测终端,大概率会在板子上看到一颗 8 脚的小芯片,旁边紧挨着一颗 STM32 或者类似的 MCU。过去十年,这个位置基本被 SPI Flash 和 EEPR…

2026/10/5 22:02:09 阅读更多 →
STM32L496ZG 与 MR25H40CDF MRAM 高速存储方案实战

STM32L496ZG 与 MR25H40CDF MRAM 高速存储方案实战

1. 为什么偏偏是 MRAM 加 STM32L496ZG 这个组合搞嵌入式存储选型这些年,我经手的方案从 24C02 这种 I2C EEPROM 到 W25Q 系列 SPI Flash,再到铁电存储器 FRAM,几乎把能踩的坑都踩了一遍。直到项目里开始频繁出现“高频写入、掉电不能丢、还要…

2026/10/5 22:01:08 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →