MRAM掉电保护实战:MR25H40CDF与PIC24微控制器SPI接口设计
MRAM 这种存储介质第一次接触的人多半会犯嘀咕它到底算 RAM 还是 Flash我在一个工业数据采集项目里第一次用 MR25H40CDF 配 PIC24FV32KA301就是被这个问题绊了一跤。当时的需求很朴素——设备要在断电瞬间保住最后一批传感器数据上电后立刻读回来而且现场环境有强电磁干扰擦写次数还特别频繁。用 EEPROM 吧写入太慢用 SRAM 加电池吧电池在高温环境下两年就鼓包用普通 Flash 吧写之前得擦一整块掉电保护窗口太窄。折腾了一圈最后落到 MRAM 上才算把这件事做踏实。这篇内容适合谁看如果你正在做工业控制、电力监测、医疗设备或者任何需要高频写入 掉电不丢 上电即读的嵌入式项目并且主控是 PIC24 这类 16 位 MCU那这篇基本可以当参考手册用。我会把 MR25H40CDF 的脾气、PIC24FV32KA301 的 SPI 外设怎么配、硬件上要注意什么、代码怎么写、调试时怎么定位问题全部拆开讲清楚。不堆术语讲的是我实际跑通并且量产验证过的东西。1. 先搞清楚 MR25H40CDF 到底是个什么器件1.1 MRAM 和 Flash、EEPROM、SRAM 的本质区别很多人看到 MR25H40CDF 的型号第一反应是这不就是个 SPI Flash 吗。从接口上看确实像都是 SPI都能读写但内部机制完全是两码事。MRAM 的全称是磁性随机存储器它用磁性隧道结的磁化方向来存 0 和 1而不是像 Flash 那样靠浮栅里的电荷。这个差别带来几个直接后果我在选型时就是冲着这几点去的。第一写入不需要擦除。Flash 写一个字节之前必须先擦掉整个扇区擦除时间动辄几毫秒到几十毫秒。MRAM 是直接覆盖写单字节写入时间和读取时间在一个量级都是几十纳秒级别。这意味着掉电保护窗口极短——你检测到掉电立刻写写完就安全了不用等擦除。第二擦写寿命几乎不用考虑。普通 Flash 标称 10 万次擦写EEPROM 标称 100 万次而 MR25H40CDF 这类 MRAM 的写入耐久度是 10^14 次以上也就是百万亿次量级。工业场景里每秒写一次写几十年都到不了上限。这一点直接省掉了磨损均衡算法的开发工作。第三数据保持时间长且不需要刷新。SRAM 要持续供电掉电就丢MRAM 是非易失的断电后数据保持 20 年以上。而且它不像 DRAM 那样需要周期性刷新静态功耗很低。第四抗辐射和抗磁场干扰能力强。MRAM 本身对电磁干扰不敏感这在工业现场是实打实的优势。不过要注意强磁场仍然可能影响数据所以布局时别把它贴在继电器或者大电感旁边。特性MRAM (MR25H40CDF)SPI FlashEEPROMSRAM写入前是否需擦除否是按扇区否否擦写寿命10^14 次10^5 次10^6 次无限掉电保持20 年以上20 年以上40 年以上无写入速度纳秒级毫秒级含擦除毫秒级纳秒级是否需要供电保持否否否是静态功耗极低低低较高1.2 MR25H40CDF 的容量、接口与引脚定义MR25H40CDF 的容量是 4 Mbit换算成字节就是 512 KB。对于存配置参数、日志记录、掉电快照这类用途512 KB 相当宽裕。它的接口是标准 SPI支持 SPI 模式 0 和模式 3最高时钟频率 40 MHz。注意这里有个细节40 MHz 是器件手册标称的上限实际能跑多快取决于你的 PCB 走线质量、MCU 的 SPI 外设能力以及片选信号的处理方式。我在 PIC24FV32KA301 上实测稳定跑到 8 MHz 没问题再往上就要看板子做得好不好了。引脚方面标准的 8 脚 SOIC 封装引脚定义如下引脚 1CS片选低有效引脚 2SO数据输出从器件到主控引脚 3WP写保护低有效引脚 4VSS地引脚 5SI数据输入主控到从器件引脚 6SCK时钟引脚 7HOLD保持低有效引脚 8VDD电源2.7V 到 3.6VWP 和 HOLD 这两个引脚容易被忽略。WP 拉低时状态寄存器里的块保护位才生效能防止误写HOLD 拉低时当前 SPI 传输暂停释放后继续。如果你不需要硬件写保护和暂停功能这两个脚都要拉到 VDD不能悬空。我见过有人把 HOLD 悬空导致通信时好时坏查了半天才发现是引脚没处理。1.3 为什么工业场景偏爱 MRAM 而不是 Flash工业现场有几个特点供电不稳定、温度范围宽、电磁干扰强、维护成本高。这几个特点叠加起来Flash 的短板就暴露了。供电不稳定意味着随时可能掉电。Flash 写入过程中掉电轻则数据写坏重则整个扇区变成乱码甚至把文件系统搞崩。MRAM 写入是原子性的要么写成功要么没写不存在写一半的中间态。这一点在掉电频繁的场景里价值巨大。温度范围宽意味着器件要在 -40°C 到 85°C 甚至更高温度下工作。MR25H40CDF 的工业级版本覆盖 -40°C 到 85°C数据保持能力在高温下衰减比 Flash 小得多。Flash 在高温下电荷容易泄漏几年后数据就可能丢失MRAM 靠磁性存储温度稳定性好很多。维护成本高意味着设备装在现场后最好几年都不用管。MRAM 不需要磨损均衡不需要垃圾回收不需要定期刷新软件层面简单很多出问题的概率也低。2. PIC24FV32KA301 的 SPI 外设配置要点2.1 这颗 MCU 的 SPI 模块有什么特点PIC24FV32KA301 是 Microchip 的 16 位 MCU带 32 KB Flash、2 KB RAM外设里有 SPI 模块。它的 SPI 支持主模式和从模式8 位或 16 位数据传输时钟极性CKP和时钟边沿CKE可配置正好覆盖 MR25H40CDF 需要的模式 0 和模式 3。这颗 MCU 的 SPI 有个特点它有一个 4 级深的 FIFO 发送缓冲和接收缓冲。这意味着你可以连续往发送寄存器里塞最多 4 个字节硬件会自动依次发出去不用每发一个字节就等一次中断。对于需要连续读写的场景这个 FIFO 能明显提高吞吐效率。不过要注意FIFO 的深度是 4超过就要等写代码时得判断 FIFO 满标志。另一个要注意的是引脚映射。PIC24FV32KA301 的 SPI 引脚可以通过 PPS外设引脚选择功能映射到多个物理引脚上。这给了 PCB 布局很大的灵活性但也意味着你必须正确配置 PPS 寄存器否则 SPI 信号出不来。我建议在初始化代码里把 PPS 配置单独写一段加上注释方便以后排查。2.2 主模式初始化的完整寄存器配置下面是我实际用的初始化代码基于 XC16 编译器直接操作寄存器。每一步我都标了为什么这么配。void MRAM_SPI_Init(void) { // 1. 关闭 SPI 模块再配置避免配置过程中产生异常时钟 SPI1CON1bits.SPIEN 0; // 2. 配置 PPS把 SPI 功能映射到具体引脚 // 假设用 RP0 作为 SCKRP1 作为 SDORP2 作为 SDI __builtin_write_OSCCONL(OSCCONL 0x7F); // 解锁 PPS 配置 RPOR0bits.RP0R 8; // RP0 映射为 SCK1OUT RPOR0bits.RP1R 7; // RP1 映射为 SDO1 RPINR20bits.SDI1R 2; // RP2 作为 SDI1 输入 __builtin_write_OSCCONL(OSCCONL | 0x80); // 锁定 PPS 配置 // 3. 配置 SPI 控制寄存器 // CKP1, CKE0 对应 SPI 模式 3CKP0, CKE1 对应模式 0 // MR25H40CDF 两种都支持这里选模式 0 SPI1CON1bits.CKP 0; // 空闲时时钟为低 SPI1CON1bits.CKE 1; // 数据在时钟上升沿采样 SPI1CON1bits.MSTEN 1; // 主模式 SPI1CON1bits.SMP 0; // 在数据输出末尾采样 SPI1CON1bits.MODE16 0; // 8 位传输模式 // 4. 配置波特率 // Fsck Fcy / (2 * (SPI1BRG 1)) // 假设 Fcy 16 MHz目标 8 MHz则 SPI1BRG 0 SPI1BRG 0; // 5. 使能 SPI SPI1CON1bits.SPIEN 1; }这里重点说波特率计算。PIC24 的 SPI 时钟来自系统时钟分频后的 Fcy公式是 Fsck Fcy / (2 × (SPI1BRG 1))。如果你要 8 MHz 的 SPI 时钟Fcy 是 16 MHz那 SPI1BRG 就是 0。如果要 4 MHzSPI1BRG 就是 1。这个公式和很多 MCU 不一样别想当然地按别的芯片的公式算。2.3 片选信号硬件片选还是软件片选MR25H40CDF 的 CS 是低有效每次 SPI 事务开始前拉低结束后拉高。这里有个选择用 MCU 的硬件 SPI 片选还是用普通 GPIO 手动控制。PIC24FV32KA301 的 SPI 模块本身不直接产生片选信号所以实际上只能用 GPIO 手动控制。这反而是好事因为手动控制更灵活你可以在片选拉低和第一个时钟之间插入延时也可以在最后一个时钟和片选拉高之间插入延时满足器件的时序要求。MR25H40CDF 对片选时序有要求CS 拉低到第一个时钟沿之间至少要有几个纳秒的建立时间最后一个时钟沿到 CS 拉高之间也要有保持时间。在 8 MHz 时钟下一个时钟周期是 125 ns普通 GPIO 操作的开销已经足够满足这些要求不用额外加延时。但如果你的 SPI 跑到 20 MHz 以上就要仔细看手册里的时序参数必要时加 NOP 延时。#define MRAM_CS_LOW() (LATBbits.LATB3 0) #define MRAM_CS_HIGH() (LATBbits.LATB3 1) uint8_t MRAM_SPI_Transfer(uint8_t data) { while (SPI1STATbits.SPITBF); // 等待发送缓冲空 SPI1BUF data; while (!SPI1STATbits.SPIRBF); // 等待接收完成 return SPI1BUF; }注意读 SPI1BUF 这个动作本身会清除 SPIRBF 标志所以判断和读取的顺序不能乱。我见过有人先读再判断结果一直卡在等待里。3. MR25H40CDF 的读写操作与时序细节3.1 命令集与状态寄存器MR25H40CDF 的命令集和普通 SPI Flash 很像但少了擦除相关的命令。常用的命令有命令名称命令码功能说明WREN0x06写使能写操作前必须发WRDI0x04写禁止RDSR0x05读状态寄存器WRSR0x01写状态寄存器READ0x03读数据WRITE0x02写数据状态寄存器里主要关注 WEL写使能锁存和 BP0、BP1块保护位。WEL 在发完 WREN 后置 1写完数据后自动清零。BP 位配合 WP 引脚实现硬件写保护。这里有个和 Flash 不同的地方MRAM 的写操作不需要先擦除但每次写之前仍然要发 WREN。这是器件设计上的保护机制防止误写。写完之后 WEL 自动清零下次写还要再发一次 WREN。3.2 单字节写入的完整流程写一个字节到指定地址流程是这样的拉低 CS发送 WREN0x06拉高 CS拉低 CS发送 WRITE0x02发送 24 位地址MR25H40CDF 是 4 Mbit需要 19 位地址但按 24 位发送高位补 0发送数据字节拉高 CS注意第 3 步和第 4 步之间必须拉高 CS这是 WREN 命令生效的必要条件。WREN 是一个独立的事务不能和 WRITE 命令连在同一个片选周期里。这一点和某些 Flash 不一样我第一次用的时候就踩了这个坑WREN 和 WRITE 连在一起发结果数据死活写不进去。void MRAM_WriteByte(uint32_t addr, uint8_t data) { // 发送写使能 MRAM_CS_LOW(); MRAM_SPI_Transfer(0x06); MRAM_CS_HIGH(); // 发送写命令 地址 数据 MRAM_CS_LOW(); MRAM_SPI_Transfer(0x02); MRAM_SPI_Transfer((addr 16) 0xFF); MRAM_SPI_Transfer((addr 8) 0xFF); MRAM_SPI_Transfer(addr 0xFF); MRAM_SPI_Transfer(data); MRAM_CS_HIGH(); // 等待写入完成MRAM 写入很快但保险起见还是查一下 while (MRAM_ReadStatus() 0x01); }3.3 页写入与连续读取的边界处理MR25H40CDF 支持页写入一页是 256 字节。页写入的流程和单字节写入类似只是连续发多个数据字节。但要注意地址边界如果你从地址 0x00FF 开始写 2 个字节第二个字节会写到 0x0000而不是 0x0100。这是页写入的回卷特性和 Flash 一样。连续读取没有页边界限制可以从任意地址开始一直读到 512 KB 的末尾。读命令是 0x03发完命令和 24 位地址后时钟继续打数据就连续输出。void MRAM_ReadData(uint32_t addr, uint8_t *buf, uint16_t len) { MRAM_CS_LOW(); MRAM_SPI_Transfer(0x03); MRAM_SPI_Transfer((addr 16) 0xFF); MRAM_SPI_Transfer((addr 8) 0xFF); MRAM_SPI_Transfer(addr 0xFF); for (uint16_t i 0; i len; i) { buf[i] MRAM_SPI_Transfer(0x00); } MRAM_CS_HIGH(); }页写入的代码要处理跨页的情况。我的做法是如果写入长度跨越页边界就拆成两次写第一次写到页末尾第二次从下一页开头继续。这样逻辑清晰不容易出错。4. 掉电保护与数据完整性设计4.1 掉电检测与写入窗口掉电保护的核心是在电源电压跌落到 MCU 和 MRAM 都不能正常工作之前把关键数据写进 MRAM。MR25H40CDF 的最低工作电压是 2.7VPIC24FV32KA301 在 2.0V 到 3.6V 之间工作。所以从 3.3V 跌到 2.7V 这段时间就是你的写入窗口。这个窗口有多长取决于你的电源电路里有多少储能电容。假设电源上有一个 100 µF 的电容负载电流 20 mA从 3.3V 跌到 2.7V 的时间大约是t C × ΔV / I 100 µF × 0.6V / 20 mA 3 ms3 ms 足够写几百个字节到 MRAM。但如果你用 Flash3 ms 可能连一个扇区都擦不完。这就是 MRAM 在掉电保护场景下的核心优势。实际设计中我会在电源输入端加一个电压检测电路用比较器或者 MCU 的 ADC 监测电压。当电压低于 3.0V 时触发中断在中断里把关键数据写入 MRAM。写入完成后可以主动进入低功耗模式等电源恢复。4.2 双备份与校验机制虽然 MRAM 写入很可靠但为了万无一失我还是会做双备份。具体做法是把关键数据存两份一份在地址 A一份在地址 B每份数据后面跟一个 CRC16 校验值。读取时先读 A校验通过就用 AA 校验失败就读 B校验通过就用 B两个都失败就报错。这个机制的成本很低MRAM 有 512 KB存两份数据绰绰有余。但收益很大能防止极端情况下的数据损坏。typedef struct { uint32_t magic; // 固定值用于判断数据是否有效 uint16_t crc; // 数据校验值 uint8_t payload[64]; // 实际数据 } DataBlock_t; bool MRAM_ReadBackup(uint32_t base_addr, DataBlock_t *out) { DataBlock_t temp; MRAM_ReadData(base_addr, (uint8_t *)temp, sizeof(temp)); if (temp.magic ! 0x5A5A1234) return false; if (CRC16((uint8_t *)temp.payload, 64) ! temp.crc) return false; *out temp; return true; }4.3 写入顺序对数据安全的影响写入顺序也有讲究。假设你要更新一组数据包含多个字段。如果写到一半掉电了数据就处于半新半旧的状态。为了避免这个问题我采用先写新数据到备份区再更新主区指针的方式。具体来说把 MRAM 分成两个区域主区和备份区。更新数据时先把新数据写到备份区校验通过后再更新主区的一个有效标志。这样即使更新过程中掉电主区的数据仍然是完整的旧数据下次上电可以继续用。这个思路和数据库里的事务日志很像核心思想是先写日志再提交。在 MRAM 上实现起来很简单因为写入速度快不需要考虑性能问题。5. 硬件设计与 PCB 布局的实战经验5.1 电源去耦与滤波MR25H40CDF 的电源引脚旁边必须放一个 0.1 µF 的陶瓷电容越近越好最好贴在引脚旁边。如果电源走线比较长还要再加一个 1 µF 到 10 µF 的电容做低频滤波。我见过因为去耦电容离得太远SPI 通信在高频下出现随机错误的案例把电容挪近就好了。电源电压范围是 2.7V 到 3.6V典型值 3.3V。如果你的系统是 5V 供电必须加电平转换不能直接把 5V 加到 MRAM 上。电平转换可以用专用的电平转换芯片也可以用电阻分压加分立 MOS 管但要注意 SPI 时钟频率高的时候电阻分压会影响信号边沿。5.2 SPI 走线长度与信号完整性SPI 是高速信号走线要尽量短尽量等长。SCK、SI、SO 这三根线最好走在一起旁边包地。如果走线超过 10 cm就要考虑加串联电阻匹配通常在源端串 22 Ω 到 33 Ω。CS 信号虽然频率不高但也不能忽视。CS 的走线如果太长拉低和拉高的边沿会变缓可能导致器件误判。我的做法是 CS 走线尽量短必要时加一个下拉电阻保证在 MCU 复位期间 CS 保持高电平防止误写。提示MRAM 对磁场敏感布局时远离继电器、电感、变压器这些会产生强磁场的器件。如果实在避不开可以加一个屏蔽罩。5.3 与 PIC24FV32KA301 的引脚连接实例下面是我实际项目里的连接方式供参考PIC24FV32KA301 引脚MR25H40CDF 引脚说明RP0SCK1OUT引脚 6SCKSPI 时钟RP1SDO1引脚 5SI主控输出从器件输入RP2SDI1引脚 2SO主控输入从器件输出RB3GPIO引脚 1CS片选软件控制VDD3.3V引脚 8VDD电源VSS引脚 4VSS地VDD3.3V引脚 3WP写保护不用时拉高VDD3.3V引脚 7HOLD保持不用时拉高注意 WP 和 HOLD 都拉到 VDD不要悬空。如果要用硬件写保护WP 可以接到一个 GPIO需要写的时候拉高写完拉低。6. 调试过程中最容易卡住的几个问题6.1 读回来的数据全是 0xFF 或 0x00这是最常见的现象。如果读回来全是 0xFF通常是 SPI 没有正确通信器件根本没响应。排查顺序是先确认 CS 有没有拉低再确认 SCK 有没有波形然后确认 SI 上的数据对不对。用逻辑分析仪抓一次完整的读时序对照手册看命令码、地址、数据是不是对的。如果读回来全是 0x00可能是器件被写保护了或者 WP 引脚被拉低了。检查状态寄存器的 BP 位和 WP 引脚电平。6.2 写入后读出来不对写入后读出来不对先确认 WREN 有没有正确发送。用逻辑分析仪看 WREN 和 WRITE 之间 CS 有没有拉高。如果 CS 一直保持低电平WREN 不生效写入就会失败。另一个可能是地址算错了。MR25H40CDF 是 4 Mbit地址范围是 0x00000 到 0x7FFFF。如果你传了一个超出范围的地址器件会回卷到 0数据就写到别的地方去了。6.3 SPI 时钟频率过高导致的随机错误SPI 时钟频率过高时可能出现随机错误表现为偶尔读错一个字节或者写入偶尔失败。这种问题最难查因为它不是每次都出现。我的排查方法是先把 SPI 时钟降到 1 MHz看问题是否消失。如果消失了说明是时序问题逐步提高时钟频率找到出错的临界点。然后在临界点以下留 30% 的余量作为工作频率。同时检查 PCB 走线、去耦电容、串联电阻这些硬件因素。6.4 掉电保护不生效的排查思路掉电保护不生效通常是写入窗口不够。用示波器同时抓电源电压和 CS 信号看电源跌落到 2.7V 之前CS 有没有完成拉高。如果电源跌得太快就要加大储能电容或者优化代码减少写入的数据量。另一个可能是掉电检测中断的优先级不够高被其他中断打断了。把掉电检测中断设为最高优先级并且在中断里关掉其他中断。7. 性能实测与优化建议7.1 实际读写速度测试我在 PIC24FV32KA301 上SPI 时钟 8 MHz实测连续读取速度大约是 800 KB/s连续写入速度大约是 700 KB/s。这个速度受限于 MCU 的 SPI 传输函数开销如果直接用 FIFO 批量传输还能再快一些。单字节写入的耗时包括WREN 事务 WRITE 事务 状态查询总共大约 5 µs。这个速度对于掉电保护来说绰绰有余。7.2 降低功耗的几种做法MRAM 的静态功耗很低但动态功耗和 SPI 时钟频率成正比。如果设备是电池供电可以在不读写的时候把 SPI 模块关掉把 CS 拉高MRAM 进入待机模式。待机电流只有几微安。另外WREN 命令发完之后如果长时间不写WEL 位会一直保持这会略微增加功耗。所以写完数据后可以发一个 WRDI 命令把 WEL 清零。7.3 长期运行的可靠性验证工业设备要求长期稳定运行我在项目里做了 72 小时连续读写测试每秒写一次读一次同时监测电源电压和温度。测试期间没有出现数据错误。后来又做了 1000 次掉电测试每次在写入过程中随机断电上电后检查数据完整性也没有出现数据损坏。这些测试给了我量产信心。如果你要做类似项目建议至少做 24 小时连续测试和 100 次掉电测试覆盖高低温环境。8. 几个容易被忽略的细节WREN 和 WRITE 之间必须拉高 CS这个前面说过了但值得再强调一次。我见过不止一个人在这里卡住。MRAM 的写入是直接覆盖不需要擦除但如果你从 Flash 迁移过来代码里可能还留着擦除命令。MR25H40CDF 没有擦除命令发了也没用反而可能被解释成其他命令。状态寄存器的 WEL 位在写入完成后自动清零但如果你发完 WREN 后没有发 WRITEWEL 会一直保持。这时候如果误发一个 WRITE 命令数据就会被写进去。所以写完数据后最好发一个 WRDI 把 WEL 清零。地址是 24 位的但 MR25H40CDF 只用到 19 位。高位补 0 就行但不要传超出范围的地址否则会回卷。SPI 模式 0 和模式 3 都支持但配置要匹配。CKP 和 CKE 的组合决定了采样边沿配错了数据就是错的。用逻辑分析仪抓一次波形对照手册确认。最后说一个我自己的体会MRAM 这类器件硬件上省心软件上也省心唯一的成本就是器件本身比 Flash 贵。但如果你的项目对数据可靠性要求高或者掉电频繁这个成本是值得的。我在一个电力监测项目里用 MR25H40CDF 替换了原来的 EEPROM现场故障率直接降了一个数量级维护成本省下来的钱远超器件差价。

相关新闻

网盘直链下载助手:3步跑通9大网盘真实直链获取

网盘直链下载助手:3步跑通9大网盘真实直链获取

网盘直链下载助手:3步跑通9大网盘真实直链获取 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / …

2026/10/5 1:48:20 阅读更多 →
嵌入式字库解耦实战:基于SD卡灌SPI Flash的LCD显示方案

嵌入式字库解耦实战:基于SD卡灌SPI Flash的LCD显示方案

/* 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:48:20 阅读更多 →
Linux基础命令别只背:路径、进程与日志排查的一次小实验

Linux基础命令别只背:路径、进程与日志排查的一次小实验

原文是一份命令问答笔记。重新整理时,我发现“知道命令名字”和“能正确排查问题”之间还差一步:路径有没有引号、搜索的是哪个字段、输出有没有被覆盖、进程能否正常退出。 这次把它改成一个安全的小实验。不读真实业务日志,不终止已有服务…

2026/10/5 1:48:20 阅读更多 →

最新新闻

AI前沿 | 2026年9月21日:Step 5 大模型来了 + 600B 稀疏 MoE 架构 + 1/8 成本 API

AI前沿 | 2026年9月21日:Step 5 大模型来了 + 600B 稀疏 MoE 架构 + 1/8 成本 API

AI前沿 | 2026年9月21日:Step 5 大模型来了 600B 稀疏 MoE 架构 1/8 成本 API 📖 首屏导读 本教程配套付费专栏:《大模型工程师修炼手记》 19.9 元(AI 编程 Agent 实战 本文同主题系统课程) 《AI时代程序员的自我…

2026/10/5 2:24:36 阅读更多 →
AI前沿 | 2026年9月21日:Plugin4Shell 零点击 RCE + AI 编程助手供应链 + 插件安全治理

AI前沿 | 2026年9月21日:Plugin4Shell 零点击 RCE + AI 编程助手供应链 + 插件安全治理

AI前沿 | 2026年9月21日:Plugin4Shell 零点击 RCE AI 编程助手供应链 插件安全治理 📖 首屏导读 本教程配套付费专栏:《大模型工程师修炼手记》 19.9 元(AI 编程 Agent 实战 本文同主题系统课程) 《AI时代程序员的…

2026/10/5 2:24:36 阅读更多 →
AI前沿 | 2026年9月21日:Anthropic IPO 推迟到 11 月 + $2万亿估值 + Claude 自己造自己

AI前沿 | 2026年9月21日:Anthropic IPO 推迟到 11 月 + $2万亿估值 + Claude 自己造自己

AI前沿 | 2026年9月21日:Anthropic IPO 推迟到 11 月 $2万亿估值 Claude 自己造自己 📖 首屏导读 本教程配套付费专栏:《大模型工程师修炼手记》 19.9 元(AI 编程 Agent 实战 本文同主题系统课程) 《AI时代程序员…

2026/10/5 2:24:36 阅读更多 →
CMake ccmake 终端配色定制完全指南:CCMAKE_COLORS 环境变量详解

CMake ccmake 终端配色定制完全指南:CCMAKE_COLORS 环境变量详解

构建工具开发工具CLI 【免费下载链接】CMake Mirror of CMake upstream repository 项目地址: https://gitcode.com/gh_mirrors/cm/CMake 点击查看 免费下载 CCMAKE_COLORS 是 CMake 内置的 curses 图形化配置界面 ccmake 的终端配色环境变量(自 CMake …

2026/10/5 2:24:36 阅读更多 →
从源码构建 LAMMPS 官方文档:doc 目录结构、make 与 CMake 双通道构建实战指南

从源码构建 LAMMPS 官方文档:doc 目录结构、make 与 CMake 双通道构建实战指南

科研科学计算高性能计算 【免费下载链接】lammps Public development project of the LAMMPS MD software package 项目地址: https://gitcode.com/gh_mirrors/la/lammps 点击查看 免费下载 导读:本文以 doc/src/Build_manual.rst 为骨架,系…

2026/10/5 2:24:36 阅读更多 →
如何快速实现网盘直链下载:网盘直链下载助手完整入门指南(支持 9 大网盘)

如何快速实现网盘直链下载:网盘直链下载助手完整入门指南(支持 9 大网盘)

如何快速实现网盘直链下载:网盘直链下载助手完整入门指南(支持 9 大网盘) 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百…

2026/10/5 2:23:35 阅读更多 →

日新闻

马斯克杀回智能体战场,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/4 1:00:58 阅读更多 →
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/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →