简介这是一份面向使用SILICON LABS C8051F系列单片机并在KEIL环境下开发的配套驱动资源包适合嵌入式工程师、单片机爱好者及需要搭建C8051F调试环境的开发者。资源重点解决通过USB转串口连接目标板时CP210x驱动缺失、版本不兼容导致下载与调试失败的问题可帮助快速完成KEIL μVision开发环境的基础配置。包内含24个文件以sys驱动、inf安装配置、exe安装程序、dll运行库为主另有xml配置文件、cat数字签名和txt版本说明sys为驱动核心inf用于安装识别exe提供图形化安装向导dll保障运行支持覆盖Win7/Win8/Win10及x86/x64/arm平台。整体压缩包仅7.64MB目录结构清晰易用按需选取对应目录即可完成驱动安装便于快速检索使用。该资源已有1519人学习下载能有效减少环境搭建时间也适合在项目部署或串口排障时作为对照工具。1. C8051F 在 KEIL 里不显示设备型号这根本不是安装问题是驱动框架没对上用过 KEIL 开发 C8051F 的人几乎都卡过同一道坎装完 KEIL 打开 Device 列表翻遍整个厂商目录都找不到 C8051F 开头的东西。这时候多数人以为 KEIL 装坏了重装一遍还是空白。实际上 C8051F 是高速 8051 内核的增强型单片机SFR 空间和调试接口跟传统 8051 完全不同KEIL 从 MDK v5 开始把器件支持改成了 DFPDevice Family Pack独立安装包机制没有装上对应驱动包列表里就永远不会有这个型号。这篇笔记就围绕这份驱动资源讲清楚它解决什么问题、怎么装、装完怎么配、调试连接和 Flash 下载为什么会翻车以及最后如何把驱动用透。适合正在用或准备用 C8051F 做产品、手头有下载器却连不上目标板的工程师。2. C8051F 与 KEIL 的驱动机制DFP 包不是装个 exe而是四类文件的组合2.1 为什么 MDK 不认识 C8051F从旧驱动到 DFP 包的演进逻辑KEIL 早期开发 C8051F 用的是单独安装的驱动那时候 MDK v4 或者更早的版本里C8051F 的器件支持是放在 KEIL 安装目录的数据库里装驱动本质上是在往这个数据库里塞条目。到了 MDK v5器件库被完全拆出去了变成独立下载的 DFP 包。这个机制的本质是让每个芯片厂商自己维护器件支持文件KEIL 只负责加载。C8051F 在芯科自己的产品线里仍然归在 8 位 MCU 分类下但驱动支持必须由原厂离线包或者在线安装器提供。驱动包内部其实包含四类东西第一类是 Flash 下载算法文件也就是 .FLM 格式的编程算法第二类是设备头文件和 SFR 定义因为 C8051F 的寄存器地址跟标准 8051 不通用第三类是调试接口的驱动描述C8051F 用的 C2 调试协议跟 STM32 的 SWD 完全是两回事KEIL 必须知道怎么通过 C2 读写寄存器第四类是针对不同型号的启动文件和分散加载描述。这四类文件缺一个就会出现各种诡异现象比如设备列表能看到型号但下载报错或者调试会话根本起不来。我习惯把 DFP 包理解成芯片的翻译层。KEIL 不认识 C8051F 的 SFR 地址也不知道怎么擦除它的 Flash更不了解 C2 时序。驱动包就是把这些信息全部打包。所以你下载的资源如果只有一个 exe 或者一个 pack 文件它还缺了配套的东西。常见做法是先装 KEIL然后用 Pack Installer 查找 SILabs C8051F 相关包也可以离线双击安装。注意有些工程用的是老版本驱动只支持 MDK v4那你就得单独处理因为 MDK v5 不再兼容那种旧驱动格式。2.2 DFP 里到底装了什么Flash 算法、SFR 定义与调试接口配置的三个层面把 pack 文件用解压工具打开你能看到它内部结构。这个结构值得花两分钟看一眼因为后面遇到的坑基本都能在这里找到答案。最上层的目录是 Devices里面每个器件型号对应一个子目录。比如 C8051F020 的目录下有头文件 C8051F020.h、启动文件 STARTUP.A51还有分散加载文件如果这个型号支持外部存储器扩展的话。这些文件在安装后会被复制到 KEIL 的安装目录下路径大致是 Keil_v5\Device\Silabs\ 或类似位置。往下看还有一个 Flash 目录里面放的是 .FLM 文件。C8051F 有不同容量和不同 Flash 块结构比如 F020 是 64KBF340 是 64KB 且带 USB 控制器算法文件必须跟型号严格匹配。某些低端型号的 Flash 页大小只有 512 字节有些是 1024 字节算法不对就会出现擦除失败或校验错误。调试接口是这个包最特殊的地方。C8051F 的 C2 调试接口只需要两根线一根时钟一根数据比 SWD 还简单但它有固定的时序要求。DFP 包里有专门描述调试接口配置的 XML 内容KEIL 通过它知道怎么初始化下载器引脚。我用过的几个下载器比如常见的 U-EC6 或 USB Debug Adapter本质上都是把 USB 转成 C2 时序的工具KEIL 这边的驱动层负责发指令下载器负责产生电平。这里有个容易踩的盲区调试器本身有固件旧固件不支持新型号插上以后 KEIL 会报连接失败或者无法识别目标但 DFP 装得完全没问题。这个点在第 5 章专门展开。2.3 安装前的准备MDK 版本确认与 Pack Installer 入口安装驱动包之前先确认两件事。第一件事是 KEIL 版本MDK v5.00 到 v5.50 之间理论上都能装但老版本对高版本 DFP 可能有兼容问题我建议至少用 MDK 5.20 以上。确认方法很简单打开 KEIL 的 About 对话框看版本号这一步不能省。第二件事是确认有没有以管理员身份运行 Pack Installer因为 DFP 安装要写 Program Files 目录权限不足时安装会静默失败KEIL 里看不到报错但 Device 列表就是空的。Pack Installer 的入口在 KEIL 工具栏的 Pack 图标打开后左侧列表按厂商筛选找到芯科SILabs分类展开看 C8051F_DFP。如果网络环境不稳定在线列表可能加载不出来这时应该去网页端手动下载 .pack 文件再双击安装。双击后 KEIL 会调到 Pack Installer 的导入流程几秒钟完成安装。安装完成后打开一个工程或者在新建工程的 Device 列表里就能看到 Silicon Labs 分类下出现 C8051F020、C8051F330、C8051F340 这些具体型号了。这里有一个很多人会忽视的点这个 DFP 包只解决 KEIL 认识芯片的问题不包含底层驱动库。C8051F 的寄存器操作和中断向量跟传统 8051 不同但 KEIL 的 C51 编译器本身是认识这种内核的所以头文件加 SFR 定义就够用。也就是说装完 DFP 后你用 KEIL 写 C8051F 的 C 语言代码直接包含对应的头文件就行编译器不会报错。如果遇到undefined symbol之类的错那基本是头文件路径没配置好不是驱动包的问题。3. 完整安装与工程配置从离线包到三处必须手改的设置项3.1 安装 DFP 包在线与离线两条路线的操作步骤在线安装适合网络条件好的场景。打开 KEIL进入 Pack Installer在右侧搜索框输入 C8051F找到Silicon Labs C8051F_DFP条目点击 Install 按钮。下载完成后状态变成 Installed。这个方法不需要手动管理文件如果 KEIL 提示需要更高版本它会顺带提示你升级软件比较省事。离线安装是支持多版本 KEIL 的稳妥路线。先去芯科官网的下载中心找到 C8051F 的 DFP 包文件格式是 .pack 后缀。下载完直接双击此时系统会弹出 KEIL 的 Pack Import 对话框确认版本号后点击 Finish。也可以用命令行方式C:\Keil_v5\UV4\UV4.exe -p C:\Downloads\Keil.SILabs.C8051F_DFP.1.17.0.pack这个命令会把 pack 包直接喂给 UV4 的导入流程适合脚本批量部署。装完以后验证是否成功在任意工程里打开 Device 列表截图留档对比一下有没有 C8051F020 这类型号。还有一个更快的检查方法直接看安装目录下的文件存不存在例如 Keil_v5\ARM\PACK\SiliconLabs\C8051F_DFP 目录能打开就说明文件落盘了。3.2 新建工程的设备选择型号后缀决定 Flash 算法与启动文件打开 KEILProject → New μVision Project命名保存后进入 Device 面板。左侧厂商列表展开 Silicon Labs里面会列出该 DFP 包含的所有 C8051F 型号。选型号时不能只看主型号还要注意后缀。C8051F020 和 C8051F021 的 Flash 都是 64KB但 RAM 大小和 IO 数量不同C8051F340 和 C8051F342 的 Flash 一样但 USB 功能配置有差异。选错型号的后果是启动文件参数不匹配程序可能在运行到某个外设初始化时死机排查起来非常花时间。选择正确的型号后看右侧 Description 栏会给出 Flash 大小、RAM 大小、封装信息。确认好后点击 OK接下来 KEIL 会询问是否复制启动文件到工程。这个启动文件是 C8051F 特有的包含 C2 接口无关的栈初始化和复位向量配置复制即可。完成后工程的 Target 选项里Device 页签已经带上了型号信息这个值被编译器用来生成预处理宏最终影响启动文件的分支选择。3.3 目标选项里的三处关键设置调试器、接口速度与下载算法打开 Options for Target这里有三处必须检查的地方。第一处是 Device 页签确认型号没有选错。第二处是 Debug 页签右侧下拉框选择调试器。C8051F 不能用默认的 ST-Link必须选择 Silicon Labs 相关的调试适配器比如 Silicon Labs C8051Fxxx Driver 或同类名称具体取决于你装的 DFP 和下载器固件。Settings 按钮点进去能看到 C2 接口参数和连接速度选项。C2 的速度一般不用设太高我习惯先设成默认如果连接不稳就往下调。第三处是 Utilities 页签Flash Download 区域要勾选 Use Debug Driver并在下面的 Programming Algorithm 列表里确认存在匹配的 FLM 算法。如果列表是空的需要点击 Add 按钮在弹出的对话框里找到你的型号对应的 FLM 文件。比如 C8051F020 对应 C8051F020_64K.FLMC8051F330 对应 C8051F330_8K.FLM。这个列表里如果没有任何条目说明 DFP 文件没有正确关联到当前工程多半是安装路径被改动过这时需要重新安装 DFP 或者手动把 FLM 文件路径指过去。3.4 最小可编译工程验证点灯代码确认驱动跑通配置完成后用一个最小工程验证驱动是否真的可用。下面这段代码用的是 C8051F020 的标配外设内核时钟和端口配置都在里面。注意 C8051F 的端口是交叉开关结构普通 IO 默认是不输出的必须先使能交叉开关并把引脚配到对应端口。#include C8051F020.h // 初始化系统时钟为内部振荡器 24.5MHz void SysClk_Init(void) { OSCICN 0x83; // 使能内部振荡器不分频 RSTSRC 0x04; // 使能时钟丢失检测复位 } // 端口初始化P1.6 配置为推挽输出其他保持高阻 void Port_Init(void) { XBR0 0x00; // 不使能任何外设交叉开关功能 XBR1 0x00; XBR2 0x40; // 使能交叉开关 P1MDOUT | 0x40; // P1.6 设为推挽输出 } void main(void) { PCA0MD ~0x40; // 关闭看门狗定时器否则程序会周期性复位 SysClk_Init(); Port_Init(); while (1) { P1_6 0; // LED 点亮 delay(); // 大致延时可由定时器替代 P1_6 1; // LED 熄灭 delay(); } }这段代码里有三个 C8051F 特有的写法第一个是 PCA0MD 关闭看门狗C8051F 上电默认看门狗是开着的不关它程序会在几十毫秒内被强制复位第二个是 XBR 寄存器交叉开关不使能配置的 IO 完全没有任何输出能力第三个是 P1MDOUT 必须显式设成推挽否则引脚默认高阻态。编译下载后 LED 应该开始闪烁如果这一步通了说明 KEIL、DFP、调试器、目标板四者的链路全部正常。如果灯不亮优先检查交叉开关配置和看门狗这两处是新手最容易犯的错。4. 调试器与 C2 接口连接、识别、固件更新和下载参数的排错地图4.1 C2 接口的四根线C2CK、C2D 与上拉电阻的关键参数C8051F 的调试接口是 C2 协议物理层只有两根信号线C2CK 提供时钟C2D 是双向数据线。加上电源和地一共四根线。实际接线时需要注意C2D 是漏极开路结构外部必须配上拉电阻。推荐值是 2.2kΩ有些板子用 10kΩ 也能工作但通信速度高时可能出现时序余量不足表现为下载时好时坏。C2CK 一般由调试器驱动但目标板上最好也留上拉位置防止调试器还没接管时序时引脚浮空产生误触发。接线顺序也有一点讲究先把 VDD 和 GND 接好再连 C2CK 和 C2D。反过来操作调试器上电瞬间会往 C2D 线上发送唤醒脉冲如果目标板还没上电脉冲会顺着数据线灌进芯片的调试模块导致芯片进入异常状态。这种异常状态的表现很搞笑程序正常跑但调试器就是连不上。断电重新上电一次往往能恢复但每次都这样会让人心态变差。调试器端口的供电能力也要确认。有些下载器能提供 5V 电源输出但在给 3.3V 系统供电时会出问题。C8051F 的端口耐压一般是 5V 容限但调试模块的供电还是建议跟标称电压一致。如果目标板已经独立供电调试器的电源输出可以不接让两边的地先连通就行。共地问题在 C2 接口上比在 SWD 上更敏感因为 C2 的数据线是双向的参考电平不一致直接导致数据错位。4.2 KEIL 中配置调试器的详细步骤与连接失败的排错顺序进入 Options for Target → Debug 页签右上角的 Use 下拉框选择对应的调试适配器。Settings 按钮打开后连接界面上会显示当前调试器的固件版本和目标芯片的 ID。这个界面是判断链路是否正常的第一依据。如果目标 ID 显示全 FF 或者显示 Unknown说明 C2 时序没有建立成功。排错顺序我一般固定走一遍第一步看调试器有没有被 Windows 识别打开设备管理器看有没有对应驱动或者带感叹号的设备第二步看目标板供电万用表量 VDD 对 GND 电压是否正常第三步量 C2CK 和 C2D 的上拉电阻是否焊上阻值是否正确第四步查数据线有没有接反C2CK 和 C2D 两根线接反的概率不小因为很多排针上没有丝印标注。这几步走完大概七成的问题能自己定位。还有一个让我印象深刻的坑C2D 和某个 IO 功能共用引脚。C8051F 的数据手册里管这个叫调试引脚复用如果程序把这个引脚配置成了普通 IO 并持续输出强电平调试器就无法正常抢占这条线。解决方法是下载时给芯片一个外部复位或者用专用的调试保留功能。这个坑在量产板卡里特别常见因为硬件工程师很难意识到这跟调试冲突有关系。4.3 下载算法与 Flash 编程参数从 FLM 文件到编程时钟的适配规则调试连接建立后Flash 编程时 KEIL 会调用 FLM 算法文件对芯片进行擦除和写入。FLM 文件本质上是一段在目标芯片 RAM 里运行的机器码KEIL 通过调试接口把这段代码加载到 RAM然后让它执行擦写操作。所以 FLM 算法跟型号的 Flash 控制器结构必须一致不同型号的 Flash 控制器虽然大致相同但页大小、扇区数量和锁存器位数有差异不能混用。编程参数中有一个值得关注的字段叫 Programming Clock。这个值代表 KEIL 在进行 Flash 编程时的通信时钟频率。C2 接口的频率如果设得太快信号在延长线上的衰减会导致写数据错误具体表现是下载过程中报校验失败。我一般会把编程时钟设在调试时钟的 1/2 或更低如果排线比较长或者用了杜邦线直接降到 100kHz 以下虽然慢一点但稳定。还有一种特殊情况芯片内部 Flash 的保护位被设置了。C8051F 的 Flash 有读保护功能一旦使能调试器就只能擦除整个 Flash 而不能读回内容。如果下载时报 Cannot Access Target 同时又能看到目标 ID多半是读保护处于使能状态。这时需要通过调试器发送全片擦除指令才能重新编程。这里要注意全片擦除会把校准数据和唯一 ID 一起清掉某些对校准值敏感的产品要提前备份。4.4 调试会话启动失败的排错顺序先看复位向量再看堆栈指针调试会话起不来是最让人头疼的。成功的调试会话需要三个条件调试器能控制内核、复位向量指向的地址有有效代码、堆栈指针指向的 RAM 区域可写。启动调试时KEIL 会先把 PC 指到复位向量地址然后读取该地址处的指令。如果这个地址是空的KEIL 会报 No Algorithm found 或者 Cannot access target。我的排错顺序是先检查 Flash 里有没有内容用调试器的 Memory 窗口直接看 0x0000 地址再看启动文件的 STACK 大小和起始地址如果栈底地址超出了芯片 RAM 范围KEIL 会在单步时崩溃最后看 Target 选项里的 RAM 区域配置C8051F020 的内部 RAM 是 4KB如果配置成了 8KB调试器加载 FLM 算法到 RAM 时就会越界写入。这个越界写入的问题遇到过两次表现都是调试会话在十几秒后才报错定位起来非常折磨。如果确认这些都没问题还有最有用的一个办法把调试器断开目标板断电再上电重新连接一次有时候 C2 状态机卡死了重新上电才能恢复。5. 避坑与常见问题五个高发障碍每个都有人当成驱动问题重装 KEIL5.1 连接失败但驱动包安装正常目标板没供电现象KEIL 里点下载按钮提示 Cannot access target但 DFP 包装了好几遍Device 列表也看得到型号。原因这个现象的本质是调试器的 C2 时钟能发出但数据线始终无法完成握手。最常见的原因就是目标板没有供电调试器默认是不给目标板供电的。虽然有些调试器带电源输出引脚但它只输出一个固定的 5V如果目标板的 MCU 是 3.3V 供电反而会烧芯片。另一部分原因是 USB 供电能力不足调试器虽然工作正常但无法同时给调试器和目标板供电。解决先单独给目标板接一个电源确认 VDD 对 GND 电压正常再重新连接。如果调试器有输出电压选择开关确认开关位置和电压值是否匹配。另外用万用表量一下目标板 3.3V 电源点有没有短路C2 接口的排针有时候焊接不良虚焊会导致供电到不了芯片。从那以后我调试任何带独立电源的板子第一件事就是确认目标板供电独立且正常不依赖调试器。5.2 PACK 安装后 Device 列表仍然空白安装路径被系统策略拦截现象pack 双击安装提示成功但在新建工程的 Device 列表里完全找不到 Silicon Labs 分类。原因这种情况通常不是 DFP 本身有问题而是 KEIL 的 Pack 根目录被系统 UAC 或者季度安全策略改到了别的路径。DFP 文件被安装到用户目录下的临时位置但 KEIL 实际读取的是安装目录下的固定位置两边不一致导致列表空白。解决打开 KEIL 的 Options → Pack 设置查看当前 Pack 根目录是不是你预期的路径。如果被修改就改回 C:\Keil_v5\ARM\PACK或者你安装 KEIL 的实际路径然后重新导入 pack 文件。还有一种情况是手动安装时没有以管理员身份跑 Pack Installer导致写入被重定向到了 VirtualStore这时把用户目录下的 VirtualStore 里的相关目录合并到真正的安装目录可以解决。5.3 调试中断点命中了但程序跑飞看门狗在后台持续复位现象程序编译下载都正常单步执行也正常但只要一跑起来断点就经常不命中程序像是自己在疯跑。原因C8051F 的看门狗定时器默认是开启的芯片复位后如果不关闭它看门狗会在几十毫秒内强制复位芯片。调试时单步执行的时候内核被暂停看门狗不计数所以单步正常一旦全速运行看门狗直接把芯片拉回到复位状态断点当然不会命中。这不是驱动问题而是芯片上电默认行为。解决在主函数的开头尽早关闭看门狗。C8051F 的看门狗控制位在 PCA0MD 寄存器的 WDTE 位。直接把 PCA0MD 的最高位清零即可。注意要放在所有初始化之前因为时钟和外设初始化代码有可能已经超过看门狗周期。更好的做法是写一个单独的函数在进入 main 的第一行就调用。5.4 下载程序经常要按两次复位才能成功目标板复位电路上的储能电容现象同一块板子用两台不同的电脑下载一台总是要按一下复位键才能成功另一台一次成功。原因调试器控制目标板复位时是通过 DTR 或者其他信号线实现的。如果目标板的复位电路上挂了一个大电容调试器驱动复位引脚的电平翻转速度跟不上复位时序就拉长了。KEIL 在复位后很快就要开始加载 FLM 算法如果这个时间窗口没对齐握手就失败。解决先看目标板复位电路的电容量从常见的 100nF 加大到 1μF 时就会出现这个现象。如果项目允许把复位电容改回 100nF。另一个办法是在 Debug 设置里把 Reset 选项改成 Hardware Reset让调试器强制拉低复位引脚对储能电容的情况有改善。实在不行就在 KEIL 的连接设置里增加一段上电延时给电容放电留足时间。5.5 Flash 校验错误集中在地址末尾编程时钟过高导致信号劣化现象程序下载到大约 90% 时报校验错误错误地址集中在 Flash 的高位区域而且多在最后一个扇区。原因擦写 Flash 时KEIL 通过 C2 接口传输数据越靠近目标芯片的地址一次性写入的数据量越大连续读写时间越长。数据线在持续信号驱动下出现位错误概率会累积编程时钟越高每 bit 的窗口越窄错误越容易暴露。解决进入 Options for Target → Debug → Settings把通信速度从默认档位往下调两档再试。如果用的是 USB 延长线或者杜邦线到 100kHz 以下基本必过。另外检查 C2D 上拉电阻阻值如果用的是 10kΩ换 2.2kΩ 对边缘情况的改善最明显。我后来布线 C2 接口时都要求 C2D 上拉电阻靠近芯片引脚放置就是为了减少这段线上的寄生电容。从那以后每次下载前我都先看一眼编程时钟设置再决定要不要缩短数据线长度。6. 把驱动用透自定义 RAM 区、C2 引脚复用与一套稳定的验证手法6.1 自定义 RAM 区让 KEIL 把外部扩展 RAM 用起来C8051F 的 dptr 可以访问外部数据存储器某些型号自带外部 RAM 接口也支持 BANK 切换。但 KEIL 的默认工程模板不会自动把外部 RAM 配置为可读写需要自己在 Target 选项里指定。操作路径是 Options for Target → Target 页签在 Memory Model 和 Code Model 之外找到 External RAM 配置区。在这里填上起始地址和大小例如起始地址 0x0000、大小 0x0800KEIL 就会把外部 RAM 区域纳入编译器的数据分配范围。这里有一个细节要提醒外部 RAM 上电后内容是不确定的C 语言的运行时库会在启动文件里做一段清 RAM 的操作如果你没有在启动文件里把这段标志位配好调试时会出现变量初始值随机的问题。我在这个驱动平台上一般都不依赖外部 RAM 存放关键变量只把它当作大数组的缓冲区块。好处是 C 编译器支持 xdata 关键字直接用它声明变量即可不用手写指针访问代码。6.2 C2 引脚复用与调试保留IO 不够用时怎么取舍C2CK 和 C2D 在正常运行时是可以当普通 IO 用的这是 C8051F 的一个特性。但一旦你把它配成普通 IO调试器就不能再通过 C2 接口控制芯片了这是一个二选一的关系。我的做法是在开发调试阶段强制保留 C2 功能所有用到这两个引脚的 IO 功能先不初始化等到临近量产、需要省引脚时再在程序里加一个编译宏把 C2 引脚重新配置成普通 IO同时烧写完代码后断开调试器之后就无法再通过 C2 调试了。这个取舍很重要因为一旦释放 C2 引脚再想连调试器就要用专用擦除时序来恢复不是随随便便能做成的操作。所以在量产固件之前我一般把 C2 引脚功能保留到最后所有调试工作做完才释放。KEIL 里不需要为此做额外配置只要在程序里不使能交叉开关对 C2 引脚的中断功能即可。6.3 一套稳定的验证手法用下载回读确认驱动整个链路没暗病装完驱动后最快的验证方法不是点灯而是做一次完整的 Flash 回读校验。步骤如下先加载任意一个编译好的 hex 文件点下载按钮下载完成后在 Debug 页签的 Flash Download 区域勾选 Verify Code Download 选项再点一次下载按钮KEIL 会把 Flash 里的内容重新读出来和目标文件比对一致则说明编程算法运行正确。这套验证手法我每次在碰到新的调试器或者新的 DFP 版本时都会强制走一遍。很多时候驱动装上、点灯能亮、单步能跑看起来一切正常但存储器的擦写边界存在隐患在特定地址范围才暴露。回读校验能把这些边界覆盖出来。从那以后我每次给 C8051F 换驱动版本第一件事就是编译一段覆盖全部 Flash 空区的测试程序包含所有扇区的读写然后回读比对确认无误再开始正式开发。这个习惯帮我省掉了不少后期量产阶段的奇怪故障希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?