新闻详情

新闻详情

首页 / 资讯中心 / 详情

SSC335 SPI NAND空片烧录实战:离线烧录器与量产方案全解析

发布时间:2026/9/28 7:51:53来源:尧图网络
SSC335 SPI NAND空片烧录实战:离线烧录器与量产方案全解析
1. 拆解需求为什么SSC335要用SPI NAND空片烧录1.1 一个真实的量产场景做安防方案的朋友应该都有体会贴片厂把PCBA交付到你手里的时候板上那颗SPI NAND基本上都是空白的也就是“空片”状态。所谓空片不是指芯片里什么都没有而是说NAND颗粒出厂经过测试后存储阵列被擦除成全0xFF没有任何bootloader、kernel或文件系统数据。此时如果把板子上电SoC的BROMBoot ROM根据Boot Pin配置去寻找启动介质结果SPI NAND里空空如也板子只能停在那里串口一个字符都不会吐。我这段时间一直在折腾SigmaStar SSC335系列的板子从拿到空板、贴片回来到最终把镜像稳定烧进SPI NAND并跑起Linux中间踩了不少坑。SSC335这个系列在IPC安防摄像头领域用得非常广内置ISP、支持H.264/H.265编码而且系统启动依赖外部SPI NAND存放固件。相比SPI NORSPI NAND容量大、成本低一颗1Gbit128MB的SPI NAND比同容量NOR便宜一大截所以方案商几乎都默认选择SPI NAND作为主存储介质。这里面的核心痛点在于空片状态下你既没有uboot可以进命令行也没有办法通过网口tftp下载镜像所有常规的“在线烧录”手段都失效了。这时候摆在面前的只有两条路——要么用烧录器把芯片或者板子上的Flash直接写入要么利用SoC内部BROM自带的启动通道SD卡启动、USB下载把固件灌进去。本篇文章主要围绕SSC335系列展开把这两条路线的工具准备、镜像整理、烧录实操和避坑细节完整梳理一遍尤其是离线烧录器烧写SPI NAND这一条线踩过的坑我会重点说。1.2 空片烧录的三种主流路径怎么选先把这个问题的全貌看清楚。SSC335系列的空片烧录业内常用的手段大致是三种每种都有适用场景不是随便选的。第一种是离线烧录器方案。把Flash芯片从板上取下来或者板上预留烧录座放到专用的烧录器座子里通过电脑上的烧录软件把镜像写入芯片写完后重新贴回PCB。这个方案最大的优势是不依赖板子的状态哪怕板子电源有问题、SoC贴歪了只要Flash本身是好的就能先烧好而且可以做到“先烧录后贴片”大大缩短生产节拍。缺点也很明显SPI NAND不像NOR那么简单NAND存在坏块、ECC校验、OOB区管理这些概念烧录器必须能正确处理颗粒的这些特性否则烧出来就是废片。第二种是SD卡量产方案。把固件打包成一个升级镜像比如upgrade.img或者sdupdate.img放到FAT32格式的SD卡根目录板子通过SD卡座接入SD卡上电后SSC335的BROM/uboot自动检测到升级文件自动完成NAND擦除和写入。这个方案速度快、稳定性高而且坏块和ECC是SoC的NAND控制器自己计算的完全不会出现离线烧录器那种“写入OK但启动报ECC错误”的问题。缺点是每块板子都要插拔一次SD卡生产线上如果没做自动化人工成本略高。第三种是USB下载模式。SSC335的BROM其实内置了USB下载协议板子通过USB线连接PCPC端运行SigmaStar SDK配套的量产工具把镜像通过USB传输到内存再由工具控制写入SPI NAND。这个方式不需要SD卡适合开发调试阶段频繁改镜像的情况也适合返修时不想拆Flash的场景。我把这三种方式的对比整理成表格方便直接参考烧录方式适用场景速度是否需要板上已有固件工具成本坏块/ECC处理离线烧录器小批量生产、维修替换、芯片预烧慢单颗3~8分钟不需要烧录器烧录座几百到几千依赖烧录器对NAND的支持SD卡量产PCBA批量流水线快128MB约1~2分钟不需要BROM支持SD启动SD卡、TF卡若干SoC控制器处理最稳妥USB下载开发调试、小批量返修中等取决于USB和NAND写速不需要BROM支持USB下载USB线材、PC工具SoC控制器处理可靠从我个人的经验看如果是小批量试产或者芯片返修离线烧录器最方便如果是几十块、上百块的批量生产SD卡量产一定是首选开发阶段频繁改镜像USB下载模式最顺手。下面我会把离线烧录器这一条线作为重点展开因为它对工具选型、参数配置要求最高也是最容易出问题的环节。1.3 选型心得SPI NAND为什么是最优解刚开始接触SSC335这个平台的时候我也想过为什么不直接用eMMC。后来对比了一下成本和设计难度就明白了。SSC335系列的定位是高性价比IPC SoCeMMC通常8GB起步对安防摄像头来说容量过剩而且eMMC是BGA封装贴片良率和焊接成本都比SPI NAND高采购单价也贵。SPI NAND一颗128MB的颗粒成本才几块钱SOP8封装或者WSON8封装PCB Layout非常友好两线其实加上供电和控制线也就8根引脚就能解决存储问题。有人可能会问为什么不用SPI NORNOR虽然启动更简单、XIP片上执行方便但超过16MB容量的NOR价格就非常不划算了而且擦写速度慢、寿命也一般。SSC335跑Linux系统一个rootfs动辄三五十MB再加上kernel、dtb、uboot32MB都捉襟见肘所以SPI NAND几乎是必然选择。关键点是SSC335内置的NAND控制器对SPI NAND支持得相当好支持BCH硬件ECC能够识别主流厂商的颗粒IDGigaDevice、Winbond、Esmt、Micron等并且通过mtdparts分区表来管理存储布局。也就是说只要你的镜像和分区表对应正确系统启动后Linux内核可以通过MTD子系统挂载JFFS2、UBIFS或者直接使用SquashFS只读文件系统整个软件链路非常成熟。2. 烧录前的准备环节2.1 硬件工具清单与选型搞SPI NAND烧录工具选型决定了一半的成败。我先把需要的硬件工具列个清单每个工具踩过的坑也会一并说。烧录器是核心设备。这里要特别强调并不是所有编程器都能烧SPI NAND。市面上几十块钱的CH341A编程器只适合SPI NOR对SPI NAND基本无能为力因为NAND的坏块管理、ECC校验、OOB区操作这些逻辑太复杂简单编程器根本不支持。目前工程师用得比较多的烧录器有FORESEE SF600系列、RT809H编程器、以及一些针对NAND颗粒的专业量产编程器比如他家的FlashRunner系列。这些烧录器一般内置常见SPI NAND颗粒的数据库可以自动识别芯片ID并且支持整片擦除、编程、校验、坏块标记跳过等操作。以RT809H为例选好芯片型号后软件会列出芯片的Page Size、Block Size、OOB Size在烧录前一定要确认这些参数和你的镜像分区大小一致。烧录座也是容易忽略的环节。SPI NAND常见的封装是SOP8和WSON8SOP8引脚在两侧座子比较便宜也好买WSON8是底面焊盘座子一般长得像个开盖的盒子芯片放进去靠压杆压紧这种座子对芯片的厚度和尺寸要求严格买的时候一定要跟你的芯片封装对上。还有一种方式是使用测试夹子直接夹在板上芯片的引脚上烧录但SPI NAND在板上往往还有去耦电容和走线干扰夹子方案不如拆下来放到座子里稳定我只在应急维修时用。除此之外别忘了准备万用表、尖嘴镊子、防静电手环、无尘棉签和酒精。SPI NAND对静电比较敏感冬天干燥环境下手碰芯片引脚很容易出问题防静电手环这个细节别省。2.2 镜像文件的分区拆解与整理拿到SSC335的SDK之后编译完成会在image目录下生成一堆文件这里面哪些要烧、烧到哪个偏移是新手最容易懵的地方。我以最常见的SPI NAND启动项目为例说明一下镜像文件的结构。SSC335的SPI NAND启动分区通常是这样的不同SDK版本可能不同以实际mtdparts为准0x000000000000-0x000000100000 : uboot 0x000000100000-0x000000300000 : kernel 0x000000300000-0x000000500000 : rootfs 0x000000500000-0x000000550000 : config ...也就是说uboot放在起始偏移0x0大小约1MBkernel紧接着从1MB开始通常2MBrootfs从3MB开始后面可能还有厂商私有分区、logo分区、recovery分区。这些信息可以在uboot源码里的mtdparts配置或者SDK的board config文件中找到非常关键。有了分区表下一步是生成整片镜像。最简单的方法是用文件拼接命令按分区偏移把各个镜像文件拼成一个fullimage.bin。比如dd if/dev/zero offullimage.bin bs1M count128 dd ifu-boot.bin offullimage.bin convnotrunc dd ifuImage offullimage.bin bs1M seek1 convnotrunc dd ifrootfs.squashfs offullimage.bin bs1M seek3 convnotrunc上面的bs1M count128表示生成128MB的空文件然后用dd把uboot写到偏移0kernel通过seek1写到1MB偏移rootfs通过seek3写到3MB偏移。这种方式直白不容易出错。这里有几个容易忽略的细节。第一一定要搞清楚uboot.bin是否包含了必要的头信息SigmaStar平台通常会生成一个带头部封装的文件比如ssboot.bin和u-boot.bin是分离的烧写时可能要把这两个拼接后再放到起始偏移。第二kernel镜像和dtb文件是两个独立文件如果分区表里没有单独的dtb分区说明dtb已经被打包进kernel镜像里了SigmaStar SDK通常会把dtb追加到uImage后面此时直接烧uImage就可以。第三如果rootfs使用UBIFS格式那么烧录的是UBI卷镜像而不是裸文件系统镜像这个在烧录前建议先用官方工具生成好。2.3 烧录座、转接板和静电防护烧录座的选择直接影响识别成功率和写入稳定性。SOP8的烧录座常见的有两种一种是一整个黑色塑料座、芯片放上去靠旋转压杆压紧另一种是有ZIF零插入力的扳手座子压下扳手把引脚夹紧。ZIF座子对引脚损伤小建议优先选择。WSON8的烧录座要特别留意因为这类芯片底面有大面积散热焊盘如果座子的接触弹片设计不合理很容易出现某一脚接触不良导致烧录器读不到芯片ID或者烧录途中校验失败。我遇到过的一个情况是某款国产WSON8颗粒换到烧录座上总是识别为另一家厂商的型号查了一圈发现是座子弹片氧化用酒精棉签清理后恢复正常。所以座子用一段时间如果出现莫名其妙的识别问题先清洁接触面别急着怀疑芯片。静电防护方面除了戴防静电手环还可以在焊台和烧录器旁边放一个离子风机。我在北方干燥季节吃过亏有一次徒手拿芯片放到座子里烧录器立刻判ID错误连续坏了好几颗样品后来才知道是静电导致芯片内部寄存器被改写了。从那以后我坚持两个规矩第一拿芯片永远用镊子夹侧面第二任何芯片上座前先触摸一下烧录器的金属地端放电。3. 核心实战完整烧录流程3.1 制作与配置烧录镜像烧录镜像的准备是第一个关键节点。如果是从SDK重新编译出来的固件建议先编译一遍确保没有任何报错然后把image目录下的文件拷贝到一个干净的目录。我习惯用一个独立文件夹专门存放“整片镜像”文件名带日期和版本号比如fullimage_v1.2_20250116.bin避免后续量产时拿错文件。镜像整理好之后还需要确认烧录器和软件对目标芯片型号的识别。以FORESEE SF600为例打开软件之后选择“SPI NAND”类型很多常见颗粒型号能自动识别。如果列表里没有你的芯片型号可以手动选择“自动识别”或者“按ID读取”等软件读出芯片ID后再核对是否与丝印一致。这里要强调芯片ID是NAND颗粒的身份标识比如GigaDevice的GD5F1GQ5REYIGID通常是C8 51 20 15如果读出的ID和你预期的厂商不符先排查芯片是否放反、引脚是否接触良好不要强行烧写。写入之前还有两个配置要处理坏块处理和ECC处理。坏块处理上烧录器通常提供“扫描坏块并标记”或“整片擦除时顺便检查坏块”的选项建议开启。因为NAND颗粒出厂时就允许存在少量坏块这些坏块会在OOB区的固定位置标记出来。烧录器每擦除一个块后重新扫描如果发现是坏块就自动跳过保证有效数据全部落在好块上。ECC处理这块要特别注意SPI NAND的每个Page除了2KB/4KB主数据区之外还有OOB备用区常规做法是把每1KB或512字节的ECC校验码放在OOB区。SSC335的NAND控制器在做读写时会按固定的ECC强度比如BCH-8/512B或者BCH-24/1KB来解算烧录器必须按相同的算法和强度生成ECC码否则就算数据写进去了上电后uboot读取时也会报错。大多数专业烧录器会默认按厂商标准来生成ECC但如果你用的是冷门颗粒最好先用SD量产方式刷一版再用离线烧录器的“读出 比对”功能逆推验证。3.2 离线烧录器烧录实操准备工作做完下面进入实际操作步骤。我用的是具备SPI NAND支持的烧录器 WSON8烧录座这个组合流程如下。第一步把芯片对准烧录座的限位槽放好确认1号引脚和座子上的标识对应压下压杆锁紧。如果是WSON8芯片芯片底面没有引脚露出来对准座子中心位置往下放盖上顶盖压紧即可。第二步在电脑上打开烧录软件点击“识别芯片”。烧录器通过SPI接口发送Read ID命令软件会返回厂商、型号和容量。这一步速度很快但也是最容易出问题的后面第4章会详细说。第三步加载提前生成的fullimage.bin文件。加载后软件会显示文件长度确认和你的芯片容量匹配。比如128MB1Gbit的芯片烧录文件应该小于128MB留出一些空间给坏块补偿和文件系统使用率。第四步设置烧录选项。建议勾选“烧录后校验”这个选项会在写入完成后自动读取整片数据并和源文件比对一旦发现不一致会明确报错。如果烧录器支持“自动跳过坏块”和“厂家坏块标记”选项务必要打开。第五步点击“开始烧录”。整个过程分为擦除、写入、校验三个阶段。以128MB SPI NAND为例擦除约半分钟写入大约2到4分钟校验同样需要2分钟左右总共大约5到8分钟。烧录过程中不要触碰座子和连接线避免接触抖动导致传送中断。第六步烧录完成后软件显示校验通过将芯片取下放到防静电盒里。建议每批次先烧两片直接贴到一块确认过功能的板子上做启动测试再批量烧剩下的。这里有一个我个人坚持的习惯烧录器软件识别的容量未必等于系统实际可用的容量。颗粒标称128MB但有些厂商会保留一部分作为厂商私有区实际可用大约126MB左右。所以fullimage.bin的大小最好控制在120MB以内避免写入到厂商保留区导致校验失败。3.3 空片上板后的二次校验烧录器校验通过不代表板上就能正常启动。因为离线烧录器写入时使用的是它自己对颗粒的理解而板子上电后是SSC335的NAND控制器在按自己的方式读Flash两者之间如果ECC算法、页大小定义存在细微差异启动阶段就会露出马脚。所以烧录完的板子必须做“上电真校验”。连接好串口通常使用3.3V TTL串口波特率115200板上电观察串口输出。正常情况应该先看到BROM启动阶段的打印然后加载uboot接着打印Linux内核启动信息最后进入文件系统。如果卡在uboot阶段报类似“ECC error”或者“Bad block table not found”的信息说明离线烧录的ECC/坏块布局和SSC335的NAND驱动对不上这时候别反复重烧直接换SD卡量产方式写一版更靠谱。进入系统后我在开发阶段还会再做一次完整的读取校验在uboot命令行下通过nand read命令把所有分区读回内存再做MD5比对。具体做法是setenv loadaddr 0x20000000 nand read 0x20000000 0x0 0x100000 md5sum 0x20000000 0x100000拿这个MD5和源文件uboot.bin的MD5比对一致就说明这个分区在目标板上的读回结果完全正确。依次把kernel、rootfs都读一遍确认正常后整块板子的烧录流程才算真正闭环。4. 常见问题与排查实录4.1 NAND ECC与坏块问题这一节基本是SPI NAND离线烧录踩坑的集中区。我见过很多工程师烧录器上明明显示“烧录成功”结果板子上电后uboot报一串ECC错误起不来。原因几乎都是烧录器生成ECC校验码的方式与SSC335控制器不一致。这里补充一个底层概念。NAND Flash本身没有保证每一位都可靠所以需要ECC在读取时纠正位翻转。SPI NAND的OOB区域通常有64字节或128字节里面存放坏块标记和ECC校验码。SSC335的NAND驱动在读取数据时会自己计算ECC并和OOB里的参考值比对如果发现纠不过来就报错。离线烧录器写入数据时必须同时计算并写入OOB区这要求烧录器知道NAND控制器的ECC配置。解决思路有三个。第一烧录前查阅SSC335 SDK里的NAND驱动配置通常在nand driver源码或board config中看ECC强度是4bit/512B还是8bit/512B再在烧录软件中手动指定相同的ECC模式。第二如果烧录器不支持自定义ECC那就放弃整片离线烧改用uboot的nand write烧录让SoC自己计算ECC。第三使用同型号NAND颗粒的官方参数模板FORESEE这类厂商会提供颗粒规格书上面明确写了推荐ECC强度照着配置基本不会错。坏块问题也要单独说。NAND出厂坏块不可避免但厂商通常保证前几个块存放bootloader的区域100%无坏块。如果你发现离线烧录后uboot分区所在位置正好碰到坏块启动会直接失败。所以烧录前建议在烧录软件里开启“坏块扫描”和“自动跳过”如果软件不支持至少要检查start地址对齐到块大小的位置上并且让bootloader分区位于芯片的“保证好块”区域。4.2 识别不到芯片或读写不稳定烧录过程中最常见的两个故障一是识别ID失败二是烧录中途校验失败。这种问题九成以上出在硬件接触层面。识别ID失败的第一步排查是确认芯片方向。SPI NAND的1号引脚附近通常有圆形凹点或者斜切角标识烧录座上也会有对应的标识两者对齐后才能识别。如果放反了软件读到的可能是全FF或者乱码先断电换方向。第二步检查座子的接触弹片。WSON8座子用久了弹片会氧化或者变形芯片放进去后弹片没有完全压到焊盘上导致某根线接触电阻偏大。这时候可以用万用表二极管档测座子对应引脚和芯片焊盘之间的导通性一般压紧后导通电阻应该在几欧姆以内。如果读数不稳定说明座子需要清洁或者更换了。清洁方法很简单用无尘棉签蘸一点无水酒精轻轻擦拭弹片接触区域等酒精挥发后再放芯片。第三步排查外围干扰。如果是通过测试夹子在板上夹着烧录板子上的去耦电容、Flash的其他信号线都可能影响SPI时序导致烧录中途数据错乱。这种情况下唯一的稳妥方案是拆芯片放到座子里烧。虽然是麻烦了一点但一次烧录成功率会高很多。4.3 烧录成功但上电无法启动烧录器校验全部通过板子上电却毫无反应这类问题在量产中是最耗时间的。我建议从三个层面排查。先看串口有没有任何输出。如果完全无输出第一步检查供电是否正常用万用表量SoC核心电压、DDR电压、IO电压是否都到位。有些板子需要先贴好DDR或者正确配置Boot Pin才能让BROM干活SSC335系列里有些型号内置DDR有些外挂DDR如果Boot Pin配置成从SPI NAND启动但BROM初始化DDR时失败也会有类似“死机”的现象。串口有输出但卡在uboot阶段比如停在“NAND device found”或“Loading from nand”之后不动了先检查uboot分区内容是否完整。我遇到过一种情况SDK的uboot分为SPL初级引导和主uboot两个部分离线烧录时只烧了主uboot漏烧了SPL导致BROM找不到有效的bootloader。解决办法是把SPL和主uboot按SDK要求拼接成完整的bootloader文件再烧。还有一种很隐蔽的情况镜像的分区偏移和uboot环境变量里的mtdparts不一致。比如uboot默认从0x100000读kernel但实际kernel被写到了0x200000启动就失败。排查方法是进入uboot命令行执行mtdparts命令查看当前分区表和你的fullimage布局对比如果对不上要么重新生成镜像要么用setenv修改分区表保存到环境变量。4.4 批量烧录的一致性与效率问题一次性烧录几十颗甚至上百颗芯片效率和质量一致性就成了主要矛盾。离线烧录器单颗要5分钟一百颗就是8个多小时生产上完全不能接受。所以量产规模稍微大一点我强烈建议切到SD卡量产模式。SD卡量产的具体做法是把编译好的镜像用SDK提供的打包脚本生成一个升级包放到FAT32格式的SD卡中板卡接入SD卡把拨码开关或者跳线设置为SD卡启动模式上电后uboot自动检测到升级包并执行烧录烧录完成后串口打印提示然后重新配置启动模式即可。整个过程大约1到2分钟而且坏块和ECC由SSC335内部控制烧出来的固件稳定性和一致性远超离线烧录器。如果必须使用离线烧录器进行批量预烧可以考虑投资一台双座或者四座的量产编程器把多片芯片同时烧录配合自动化治具效率会高很多。另一个经验是批量烧录前一定先烧两片放到实际板子上做整机测试确认镜像、配置都没问题后再批量执行避免一百颗芯片都是同一个错误镜像返工。批次一致性上还有一个细节。不同批次的NAND颗粒可能来自不同晶圆厂或者不同的固件版本烧录器支持参数很可能有细微差异。换新批次颗粒时建议先用抽检的颗粒做一次“读ID 烧录 板测”验证不要默认旧参数可以一直用。颗粒的厂商丝印和实际ID不一致的情况在国产颗粒上偶有发生这个是批量生产最容易被忽略的坑。最后分享一点个人的实际操作体会在SPI NAND烧录这条路上折腾了这么久我最深的感受是千万不要迷信“烧录校验通过”这个结果。烧录器的校验只能证明数据按烧录器的理解写进去了真正能否启动取决于SSC335的NAND控制器认不认可这套数据。所以每次换NAND型号、换SDK版本、换烧录器都必须做一次完整的“烧录 上电 系统启动 分区读回比对”闭环验证这套流程走通了才敢放心批量。如果第一次接触SSC335 SPI NAND空片烧录我的建议是先别急着上离线烧录器找一块能正常工作的板子先从SD卡量产走一遍把分区表、ECC、启动流程这些概念通过实际现象理解透再回到离线烧录器就会觉得心里有底很多。烧录这个环节看起来只是把数据写进Flash实际上它把SoC启动链路的每一个细节都串了起来把这个流程弄明白对整个嵌入式Linux系统的启动原理都能有更深的理解。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Claude Code插件开发指南:从加载机制到报错排查的完整实践 2026/9/29 1:59:23

Claude Code插件开发指南:从加载机制到报错排查的完整实践

1. 从"官方插件"这个词说起:它到底解决了谁的痛点第一次看到claude-plugins-official这个仓库名,我下意识以为又是一个"官方示例合集"——就是那种放几个 demo、半年不更新、README 写得比代码还长的仓库。但真正把它拉下来跑通、又…

阅读更多 →
Claude Code插件系统深度解析:从安装到harness加载失败排查 2026/9/29 1:59:23

Claude Code插件系统深度解析:从安装到harness加载失败排查

1. 从"官方插件仓库"这个信号说起:Claude Code 的生态正在发生什么如果你最近在折腾 Claude Code,大概率已经注意到一个变化:以前想给它加个自定义能力,得自己写脚本、手动改配置文件、把文件丢到某个隐藏目录里&#x…

阅读更多 →
Claude Code插件体系详解:从安装配置到排错开发 2026/9/29 1:59:23

Claude Code插件体系详解:从安装配置到排错开发

1. 项目概述:Claude Code 插件到底是什么1.1 核心需求解析如果你最近在折腾 Claude Code,大概率刷到过“claude-plugins-official”这个仓库名,也可能在终端里见过类似harness failed to load plugins web boot: 2 entries did not activate这…

阅读更多 →
Claude Code插件体系深度解析:从claude-plugins-official到自定义技能实战 2026/9/29 1:59:16

Claude Code插件体系深度解析:从claude-plugins-official到自定义技能实战

1. 从 claude-plugins-official 说起:这个仓库到底解决什么问题第一次看到claude-plugins-official这个名字,很多人会下意识以为它是某个“官方插件市场”,点进去发现其实是一堆配置文件和目录结构,然后就开始犯迷糊——这玩意儿到…

阅读更多 →
零序电流保护整定计算全流程:从三序网络到三段式定值配合 2026/9/29 1:59:10

零序电流保护整定计算全流程:从三序网络到三段式定值配合

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

阅读更多 →
慧荣SM2258XT/SM2259XT2固态开卡与掉盘修复实战 2026/9/29 1:59:03

慧荣SM2258XT/SM2259XT2固态开卡与掉盘修复实战

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉