新闻详情

新闻详情

首页 / 资讯中心 / 详情

芯片烧录的ISP、ICP、IAP:机制区别、适用场景与实战避坑

发布时间:2026/9/28 19:54:44来源:尧图网络
芯片烧录的ISP、ICP、IAP:机制区别、适用场景与实战避坑
做嵌入式这行几乎天天跟“芯片烧录”打交道但“烧录”这个词又特别容易被糊弄过去。新手拿着板子问“怎么烧录”老手反问你“打算用 ISP、ICP 还是 IAP”新人当场就懵了——不都是把程序写进 Flash 吗怎么还分这么多种其实这三种方式名字长得像背后机制、适用场景、踩坑点完全不同。搞混了轻则多花冤枉钱买编程器重则产线批量变砖。这篇文章不堆手册术语用大白话把芯片烧录里的 ISP、ICP、IAP 分别是什么、怎么工作、什么时候用哪个讲清楚顺带把我在实际项目里踩过的跟 SWD 掉线、IAP 升级失败有关的坑一起说了。不管你是刚碰单片机的学生还是准备把产品导入量产的工程师都值得花十来分钟看完。1. 先说清楚“烧录”这个动作的本质1.1 固件在 Flash 里的存在形式芯片烧录往根上说就是把编译好的固件二进制写进芯片的非易失性存储介质里最常见的就是 Flash。芯片上电后CPU 从 Flash 的起始地址取复位向量然后开始取指令、执行指令。程序最终跑起来靠的全是 Flash 里存着的那一串 0 和 1。这里有个关键点Flash 不是普通文件盘它的物理特性决定了“写入”这件事有严格的前置条件。Flash 存储单元在出厂时通常是 1擦除态写入操作只能把 1 变成 0而想把 0 变回 1就必须执行擦除操作。擦除的最小单位通常是扇区sector或块bank大块大块地清。所以烧录的标准流程必然是三段先擦除目标区域再写入数据最后校验结果。你看到烧录器上的进度条其实大部分时间不是在传数据而是在擦 Flash。这个特性也解释了为什么芯片烧录速度不能只看接口波特率。比如一个 1MB 的固件如果只用串口传输115200bps、8N1 格式下有效数据率大约是每秒 11520 字节传完就要 89 秒左右再加上 Flash 擦写和校验时间轻轻松松翻倍。而 SWD 调试口虽然理论带宽高不少但 Flash 本身的擦写时间照样是大头。所以选烧录方式时别只盯着接口速度Flash 擦写占用的时间往往是隐藏的大头。1.2 为什么叫“烧录”而不是“拷贝”老一辈工程师管这叫“烧录”因为最早的 EPROM 确实是用紫外线擦除、用高压写入的真有点“烧”的意思。现在虽然早就改成电擦除了但这个词留了下来反而很传神它提醒你写 Flash 不是一个简单的文件复制操作而是一个需要按照芯片时序规范、在特定电压和总线状态下执行的底层操作。明白了这个本质再看 ISP、ICP、IAP 就清爽了——它们不是三种不同的“文件传输协议”而是三个不同角色在执行“写 Flash”这个动作。搞清楚了“谁来执行写入”其余的都是细节。1.3 三种机制的真正区别谁来执行写入烧录方式真正执行写 Flash 动作的是谁是否依赖外部硬件典型接口ISP芯片出厂固化的引导程序BootROM / System Memory只需串口/USB等不需要专用调试器UART、USB、SPI、CANICP外部调试器通过调试口直接控制 Flash 控制器必须用 ST-Link、J-Link、DAP-Link 等调试器JTAG、SWDIAP用户自己的应用程序代码不需要任何外部工具固件从通信口进入UART、SPI、以太网、USB、无线这张表是全文的总纲。记住一句话ISP 是“厂家人替你写”ICP 是“外人拿工具替你写”IAP 是“你自己写的代码替你写”。接下来一个个展开。2. ISP芯片出厂自带的引导程序帮你写 Flash2.1 出厂引导程序与 BOOT 引脚芯片出厂时 Flash 是空的但如果完全空白芯片就没法通过任何接口接收固件。所以芯片厂商会在芯片内部固化一小段 ROM 程序这段程序不占用户 Flash出厂就在那里负责在芯片启动早期监听某个接口把接收到的数据写到用户 Flash 里。这段程序就是 ISP 引导程序在 STM32 里叫 System Memory Bootloader在很多国产 MCU 里叫 ISP 监控程序。要让这段程序运行通常需要控制 BOOT 引脚。以 STM32 为例BOOT0 拉高、BOOT1 拉低芯片复位后就会从 System Memory 启动执行出厂引导程序BOOT0 拉低则从用户 Flash 启动正常跑你的程序。所以 ISP 下载在 STM32 上往往要手动拨一个开关或者跳线帽这跟后面要讲的 STC 冷启动是同一个道理都是想办法让芯片在启动时先进引导程序。2.2 用 STC 经典的“冷启动时序”理解 ISPSTC 单片机的 ISP 可能是国内接触最多、也最让人又爱又恨的。下载步骤是先打开 STC-ISP 下载工具选好型号和串口点“下载”按钮然后给目标板断电再重新上电。这个“断电再上电”的动作行话叫冷启动。为什么必须冷启动因为 STC 的 ISP 引导程序只在芯片上电后的极短窗口内监听串口。芯片上电后先跑引导程序如果在窗口内收到主机发来的握手命令就进入下载模式如果没收到就直接跳转用户程序。主机已经先点了“下载”正等着握手这时候给芯片上电引导程序一开跑就能立刻收到命令于是停在下载模式。如果你不给它冷启动芯片早就跑进用户程序了串口命令它根本不理会。这个机制带来了一个很实际的量产技巧不要靠人手去断电上电而是用串口的 DTR/RTS 信号控制目标板的电源让下载脚本自动完成“上电-握手-下载”的时序。很多 STC 下载器就是这么干的。另外还在用 STC-ISP 官方工具的话确实有不少弹窗和型号选择问题误选了型号就会一直握手失败。我的建议是如果是自己做开发直接换可以脚本化调用的下载工具或者用其他支持串口 ISP 的通用烧录软件如果是带产线务必把自动冷启动时序先调通不然每一片都靠手工断电产能和稳定性都很难看。2.3 ISP 的限制和适用场景ISP 的优势很明显不需要专用调试器一条串口线就能烧成本极低。但代价也不少。第一速度受串口限制。前面算了115200bps 下传 1MB 固件光传输就接近 90 秒。第二对启动引脚有要求板子上的 BOOT 电路得专门设计否则使用体验非常别扭。第三ISP 依赖的是出厂引导程序如果某种引导方式被禁用或者启动配置错误ISP 就失效了。第四最容易被忽略的一点ISP 下载时芯片上没有用户程序在跑所以你其实没法“热更新”一块正在工作的设备。所以 ISP 的适用场景非常清晰没有 SWD 调试口、成本敏感的 MCU 的初始固件灌入小批量产线调试以及在没有专业调试器时应急救砖。在正规产品里ISP 通常只用来烧 Bootloader真正的应用层升级交给 IAP 或者调试器。2.4 ISP 的同名干扰图像 ISP、FPGA 配置别混为一谈这里必须单独插一段因为很多人搜资料时被同名词带跑偏。热搜词里就有“isp图像处理”“isp pipeline”那个 ISP 是 Image Signal Processor图像信号处理器负责摄像头 RAW 数据的去噪、插值、3A 处理跟芯片烧录里的 ISP 半毛钱关系都没有。你在嵌入式项目里说“调 ISP”往往是在调摄像头画质说“用 ISP 下载”才是烧录。同理FPGA 也有个“ISP”的说法但那通常指的是通过 JTAG 或 SPI Flash 配置加载比特流机制跟单片机的 ISP 引导程序完全不是一回事。查资料的时候看到这两个意思先分清领域再深入能少走很多弯路。3. ICP外部调试器从硬件层面接管 Flash3.1 SWD/JTAG 四根线的烧录链路ICPIn-Circuit Programming在线编程最典型的就是用 ST-Link、J-Link、DAP-Link 这类调试器通过 SWD 或 JTAG 接口给芯片烧录。它的工作逻辑和 ISP 有本质区别ISP 靠的是芯片内部出厂固化的代码来写 FlashICP 则是外部调试器直接操作芯片的调试端口再通过调试硬件去控制 Flash 控制器。整个过程不依赖芯片上有没有用户程序也不需要运行任何引导代码。SWD 只需要四根线就能干活SWDIO、SWCLK、GND、3.3V条件允许再接一根 RESET。正因为线少、时序相对简单SWD 成了 ARM Cortex-M 生态里最常见的调试/烧录接口。芯片一上电调试器就能通过 SWD 握手然后直接擦写 Flash。你在 Keil、STM32CubeProgrammer、J-Flash 里点下载背后走的几乎都是这条硬件链路。3.2 为什么 ICP 是救砖首选但它也不是万能ICP 最大的价值是用户程序跑飞了、死循环了、中断全乱了都不影响调试器通过 SWD 擦写 Flash。我见过太多“程序把主频超到极限连上调试器全是乱码”的板子最后都是靠 ST-Link 按住复位键救回来的。但 ICP 不是万能的最常见的两个失效场景必须知道。第一个是 SWD 引脚被用户程序复用。很多新手喜欢把 PA13/PA14 甚至 PA15/PB3/PB4 这些调试引脚当普通 GPIO 用一旦固件里把这些引脚初始化成其他功能调试器下次就握手不上了。此时如果芯片还能运行可以试试“复位期间连接”的技巧按住复位键不放让芯片停在复位状态调试器趁这个窗口抢占连接然后立刻开始烧录烧录完成后芯片已经被写入新固件了原来的引脚配置自然被覆盖。第二个是读保护RDP。STM32 和很多国产 MCU 都支持读保护一旦把 RDP 设置到 Level 1调试器虽然还能通过 SWD 连接但读不了 Flash 内容也无法增量烧录只能先做全片擦除才能恢复。如果后续想做烧录务必在产品设计阶段就想清楚要不要开读保护以及量产工具链是否支持“擦除后重烧”的流程。开了读保护又丢失了烧录码那就真的变砖了。3.3 产线脱机烧录的正确姿势产线上用 ICP 的典型方案是脱机编程器加烧录治具。把编译好的 hex 灌进脱机烧录器烧录器固定在治具上人工把 PCBA 放进治具、压上手柄一键烧录烧完亮绿灯。这种方式速度稳定、不依赖电脑、也不用人工点软件产能远高于串口 ISP 手工下载。产线烧录的稳定性上有两个容易被忽略的坑。一是 SWD 走线过长或者线上挂了过大电容的 ESD 防护会直接导致时序紧张表现为“偶尔烧录失败”。解决方式通常是把 SWD 时钟从 4MHz 降到 1MHz稳定优先。二是如果一块板子上有多颗需要烧录的芯片可以考虑一个调试器挂多个目标通过烧录器的序列号选择功能依次处理但这要求产线夹具设计时就要预留测试点。总之一句话产线选 ICP 的最大理由不是它比 ISP 高级而是它不依赖引导程序、不依赖串口握手时序人工操作环节最少可靠性最高。4. IAP让运行中的程序自己替换自己4.1 从“谁来执行写 Flash”看 IAP 的本质IAPIn-Application Programming在应用编程是我认为最有趣的一种。它的本质是芯片运行着用户自己的程序而这个用户程序自己有能力把新的固件写入 Flash 的指定区域然后引导到新程序运行。也就是说更新动作的发生过程中没有外部编程器也不依赖出厂引导程序一切都是正在运行的代码自己完成。IAP 就是 OTAOver-The-Air空中升级的地基。物联网设备能远程修复 bug、更新功能靠的就是设备里有一套 IAP 机制能够在现场通过网络、蓝牙、串口等方式接收新固件自己完成 Flash 写入和启动切换。但注意一个前提IAP 代码本身也是程序它会访问芯片的 Flash 控制器、会执行擦写。这意味着如果代码本身写错了或者升级过程中掉电设备是有可能变砖的。所以 IAP 不是“加个函数”那么简单它需要一整套分区规划、状态管理和异常恢复设计。4.2 Bootloader App 的分区与向量表偏移标准 IAP 结构是把 Flash 分成至少两个区Bootloader 区和 App 区。Bootloader 负责启动检查、固件接收、校验、写入 App 区最后跳转App 是实际业务程序。以一块 256KB Flash 的 MCU 为例一个典型分区可以是这样区间起始地址大小内容Bootloader 区0x0800000016KB启动代码、升级逻辑App 区0x08004000112KB业务固件主区App 备份区0x08020000112KB新固件暂存区参数区0x0803C00016KB升级标志、版本号、CRCApp 的链接脚本必须修改把 FLASH 起始地址从 0x08000000 改成 0x08004000编译出来的 App 才能知道自己住在哪里。同时App 的中断向量表也要偏移。在 Cortex-M 上主流的做法是设置 VTOR 寄存器SCB-VTOR APP_BASE_ADDR;。如果不这么做App 跑起来后一旦产生中断CPU 会去读 Flash 开头的 Bootloader 向量表中断全乱。4.3 跳转之前必须处理的几件事从 Bootloader 跳转到 App表面上就是把 PC 指向 App 的复位向量但实际要做的细节很多。常见跳转代码大概是这样的typedef void (*AppFunc)(void); void jump_to_app(uint32_t app_base) { uint32_t app_sp *(volatile uint32_t *)app_base; uint32_t app_pc *(volatile uint32_t *)(app_base 4); __disable_irq(); // 关总中断防止跳转过程中被异常打断 // 恢复默认时钟配置、关闭外设、停止 DMA 等都得在这里做 SCB-VTOR app_base; // 偏移向量表 __set_MSP(app_sp); // 重设主栈指针 ((AppFunc)app_pc)(); // 跳到 App 复位向量 }很多人跳转失败都是因为少了三条一是没关中断跳转瞬间 SysTick 或串口中断进来CPU 还在用旧的向量表二是没恢复时钟和外设状态Bootloader 里初始化过的外设到了 App 那边并不知情三是跳转后没有重新设置 MSP尤其在 RTOS 环境里尤其明显。这些看起来不起眼却是 IAP 从“能跑”到“稳定跑”的关键。4.4 “Bootloader 里定义的变量跳转后还能用吗”这是个被问烂但又特别有代表性的问题值得单独拿出来说。答案是Bootloader 的全局变量在物理上确实还在 RAM 里如果跳转时不做清零那段内存的数据还在但 App 的代码根本“不认识”它。因为 Bootloader 和 App 是两份独立的固件各有各的链接脚本和启动代码。App 复位启动时会执行自己的启动代码把自己的变量区重新初始化它根本不会去引用 Bootloader 的符号地址。所以如果你想让 Bootloader 和 App 之间传递信息比如“检测到升级请求”“Bootloader 需要跳转”靠普通全局变量是行不通的。正确做法有三种第一种约定一个固定的 RAM 地址两边通过指针访问比如0x20001000处放一个结构体包含 Magic Number 和指令第二种用 RTC 备份寄存器断电也能保持第三种把标志写进 Flash 的专用参数区Bootloader 启动时读出来判断。工程上最常用的是第一种简单直接但要注意别把地址定在会被 App 启动代码清零的区间里。5. 实操细节Flash 分区、变量复位、网络升级与防变砖5.1 写 Flash 期间为什么必须关中断IAP 最容易踩的坑之一是写 Flash 时被中断打断然后芯片卡死。原理不复杂当 Flash 控制器正在执行擦写时Flash 总线处于忙碌状态此时如果 CPU 因为中断要去 Flash 里取中断向量或者取中断服务程序的指令就会发生总线忙等待。如果中断持续触发CPU 可能直接挂死。所以 Flash 写入期间必须做到两点一是关总中断至少要把可能触发的中断源全部屏蔽掉二是确保写 Flash 的这段代码本身不在 Flash 里执行。如果写函数还留在 Flash 里CPU 执行它本身就要取 Flash 指令写入操作和取指操作撞在一起照样出问题。正确的做法是把写 Flash 函数放到 RAM 里运行或者干脆用支持__attribute__((section(.ramfunc)))的编译器语法把它放 RAM。很多国产 MCU 对 Flash 写入还有额外的解锁/加锁序列比如先写解锁键值再操作写完立刻加锁。不关中断也不解锁是最常见的 IAP 卡死原因。产品在开发阶段能跑通升级流程一到现场偶发失败多半就是这里埋的雷。5.2 升级标志与双备份把“变砖”概率降到最低升级过程中掉电、通信中断、Flash 写坏这几种情况现实中一定会发生。想防变砖思路不是祈祷不掉电而是设计一套“升级状态机”。我常用的做法是这样的Bootloader 启动后第一步先读参数区里的升级标志。如果标志是“升级中”说明上次升级没完成App 区处于不可信状态Bootloader 就进入恢复模式等待重新接收固件如果标志是“升级完成”并且 App 区的 CRC32 校验通过才跳转 App。App 收到新固件后先把固件写入备份区并计算 CRC全部写完后才把升级标志置为“升级中”然后软件复位进 Bootloader。Bootloader 把备份区数据搬到 App 区校验通过后把标志置为“升级完成”再跳转。这套方案里最关键的一点绝对不能在写完 App 区之前就把标志改成“升级完成”。否则一旦中途断电下次启动还会误认为 App 是好的直接跳转进一个残缺程序。双备份区的代价是 Flash 空间减半但换来的是极高的容错率在有条件的项目里非常值得。Flash 容量不够时退而求其次至少要有“升级标志 恢复模式”这是底线。5.3 网络 IAPETH的完整落地链路现在很多设备要求支持以太网升级也就是热搜里那个“eth iap怎么实现”。我的建议是Bootloader 里不要塞 TCP/IP 协议栈那会让 Bootloader 变得过于庞大而且一旦协议栈有 bug连恢复手段都没了。更稳妥的分工是App 负责联网下载固件Bootloader 负责搬运和校验。具体链路大致是设备运行 App通过以太网从升级服务器下载新固件文件先写入外部 Flash 或内部备份区边写边算 CRC下载完成后写入升级标志然后软复位进入 BootloaderBootloader 读取升级标志确认需要升级后把备份区的固件搬到 App 区校验 CRC 和 Magic Number通过后更新标志并跳转新 App如果校验失败保留旧 App下次启动还能正常跑。这个方案的好处是 App 挂了或者网络断了Bootloader 还能作为一个稳定的恢复入口存在。服务器端也没那么复杂一个版本管理接口、一个文件下载接口、一份设备版本记录就够了。要不要支持断点续传看设备所处的网络环境如果走的是不稳定无线链路建议做但实现成本会明显增加。第一次落地网络 IAP我强烈建议先在开发板上用网线反复做“升级中断电”的断电测试把恢复路径练扎实了再上产线。5.4 不同芯片的 IAP 差异清单带着具体芯片型号搜问题的人很多这里挑几个典型的说。GD32F103 做 IAP基本思路和 STM32F103 一致都是 Bootloader App 分区、VTOR 偏移、跳转。但要注意 GD32 的 Flash 页大小和擦除粒度跟 STM32 并不完全一样不同批次甚至可能不同写代码前一定要翻参考手册核对。烧录工具链上只要走 SWDJ-Link 和 ST-Link 都能兼容但读保护选项字的操作方式有差异别拿 STM32 的习惯直接套。STM32H750VBT6 是另一个经典案例这颗芯片最大的尴尬是内部 Flash 只有 128KB大一点的 App 根本放不下。工程上普遍的做法是外扩 QSPI Flash通过 Bootloader 初始化 QSPI再从外部 Flash 执行程序或者加载到 RAM。它的 IAP 难点不在于 Bootloader 本身而在于启动阶段的 QSPI 初始化和 XIP 映射建议对照官方参考例程来做别自己发明轮子。HC32L136 这类国产低功耗 MCUIAP 机制各家差异比较大普遍要在 Bootloader 里处理好 Flash 解锁、加锁、向量表重映射等环节。我的经验是国产 MCU 的参考手册写得不像 STM32 那么统一IAP 章节一定要逐字看尤其是 Flash 写操作的时序和中断优先级设置疏忽一个细节就可能在现场升级时翻车。6. 到底怎么选按研发、产线、维护三种场景来定6.1 一张表看懂三种方式的天平对比维度ISPICPIAP写 Flash 的执行者出厂引导程序外部调试器用户自己的代码是否需要外部工具只需串口线/USB线需要调试器不需要走通信接口依赖条件引导程序、启动引脚SWD/JTAG 引脚、无读保护Flash 分区、Bootloader 稳定开发期便利度一般最好一般量产自动化需设计冷启动时序最容易自动化量产一般不用现场远程升级不支持不支持唯一选择主要风险握手失败、速度慢引脚复用、读保护掉电变砖、代码 bug6.2 场景化选型研发、量产、现场各用什么开发调试阶段不用想ICP 是绝对主力。ST-Link、J-Link 接上 SWD点一下下载还能在线调试、看变量、打断点效率是其他方式没法比的。这时候我不会纠结 ISP 还是 IAP先保证调试链路通畅。量产阶段如果产品板子有 SWD 测试点优先上脱机烧录器走 ICP稳定、快、人工依赖少。如果产品用的是没有 SWD 的廉价 MCU或者结构上不方便留调试口那就用 ISP把串口和冷启动时序设计好配合自动工装也能跑量产。注意量产用的烧录方式必须在开发阶段就验证过几百片别等产线跑起来再改方案。设备已经出货、现场需要升级的只有 IAP 一条路。不管设备有没有联网能力哪怕只是现场维护人员用串口线升级IAP 都是必需品。这里面最需要投入精力的不是“能升级”而是“升级失败后还能活着回来”也就是 5.2 节说的升级标志和恢复机制。6.3 三种方式从来不是互斥的很多人以为 ISP、ICP、IAP 只能三选一实际工程里它们往往是接力配合的。最典型的产品烧录链路是这样的产线用 ICP 或 ISP 给芯片烧入 BootloaderBootloader 通过串口或 USB 支持现场升级设备联网后通过 IAP 实现 OTA 远程升级。三层各司其职ICP/ ISP 负责第一次灌入Bootloader 负责兜底恢复IAP 负责日常更新。从可靠性角度讲哪怕你的产品已经支持 OTA也强烈建议在硬件上保留 SWD 测试点。因为软件 IAP 无论如何设计总有极端情况兜不住比如 Flash 控制器硬件异常、Bootloader 被错误升级覆盖、升级策略出现逻辑漏洞。这时候一块能连 SWD 的板子就是你的最后一道救命稻草。最后说点个人体会。我踩过最深的坑是早期做 IAP 时只验证了“正常升级”路径没验证“升级中断电”路径结果一批样机在客户现场升级时掉电App 区半残Bootloader 又没有恢复逻辑最后只能逐台返厂用 SWD 重烧。从那以后我做任何支持 IAP 的产品都强制自己至少做三轮断电测试分别在“下载中”“擦除中”“写入中”“校验中”四个阶段断电直到每一轮都能通过恢复机制回到可升级状态才敢放出去。选型、写代码、做测试这套流程走下来芯片烧录这件事才算真正入门了。
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

基于 WSL2 与 Xvnc 的远程桌面验证 2026/9/28 20:47:08

基于 WSL2 与 Xvnc 的远程桌面验证

基于 WSL2 与 Xvnc 的远程桌面验证 1 问题背景 将一个 Python Web 应用(NJ_Oil)用 PyInstaller 打包为 Linux 可执行文件,目标平台为银河麒麟 V10(glibc 2.28)。由于 glibc 向下兼容的限制,必须在 glibc …

阅读更多 →
KEIL MDK中C文件如何编译成lib库:完整配置与避坑指南 2026/9/28 20:47:08

KEIL MDK中C文件如何编译成lib库:完整配置与避坑指南

1. 为什么要把C文件变成lib库:适用场景与边界先说一个我前两年遇到的场景。有个做车载传感器的客户,要把一套电机控制算法集成到他们的主控板上,但算法源码是合作方的核心资产,对方只愿意交付编译好的目标文件,不提供任…

阅读更多 →
SCP Firmware 的单线程事件模型 2026/9/28 20:47:08

SCP Firmware 的单线程事件模型

SCP Firmware 为系统控制处理器提供电源、时钟、传感器等管理服务。在其 Framework 中,Module 通过 Event 和 Notification 协作。理解这些消息如何被调度,是阅读 Module 代码的基础。 获取源码:Arm 官方 SCP-firmware 仓库。本文使用 v2.16.…

阅读更多 →
2026年9月 HKSI Paper 1 香港证券期货从业考试卷一 九月鸡精(四) 2026/9/28 20:47:07

2026年9月 HKSI Paper 1 香港证券期货从业考试卷一 九月鸡精(四)

HKSI LE香港证券及期货从业资格考试卷一(试卷一:基本证券及期货规例,英文:Paper 1)内容又多又碎,考生往往把火力集中在第 1–5 章的监管机构、发牌、操守准则上,而在细碎的知识点上,…

阅读更多 →
AI Short(ChatGPT Shortcut)Chrome 扩展 CRX 本地安装完全指南:开发者模式拖拽安装与常见问题排查 2026/9/28 20:47:07

AI Short(ChatGPT Shortcut)Chrome 扩展 CRX 本地安装完全指南:开发者模式拖拽安装与常见问题排查

AI 应用提示工程人工智能前端 【免费下载链接】ChatGPT-Shortcut Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词&…

阅读更多 →
IEEE 1588 PTP授时:ptp_clock驱动与硬件时间戳同步实战 2026/9/28 20:46:56

IEEE 1588 PTP授时:ptp_clock驱动与硬件时间戳同步实战

简介:这份压缩包提供PTP 1588时钟的用户空间接口实现,面向需要在应用中集成高精度时间同步的嵌入式或网络开发者,解决用户态程序与内核PTP时钟交互的问题。包内共2个文件,以C源码与头文件为主:ptp_clock.c包含时钟初始…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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