简介:适用于AVR系列单片机开发与调试的烧录工具包,面向电子工程学习者、嵌入式开发从业者及需要自制下载编程器的玩家。软件支持AT89S51、AT89S52及多种AVR芯片,可通过自定义并口或串口连接编程器,并配合USB ISP驱动应对现代电脑的烧录需求。压缩包共107个文件,主程序为exe,辅以大量xml配置、dll动态库、inf驱动及sys系统文件,另有PDF说明与引脚图,整体仅1.09MB,便于快速下载部署。已有308人学习使用。包内集成驱动与配置文件,开箱即可配合自制编程器或USB ISP下载线使用,减少环境配置时间;同时提供基础调试与错误诊断功能,适合高校实验室与小型项目组日常烧录。 最近好几个朋友在后台问我同一个问题:progisp 支持 Win10 吗?也有不少刚入坑 AVR 单片机的新手,下载了一个 progisp.zip 之后不知道怎么用,卡在驱动装不上、界面打不开这一关。说实话,这个软件我用了十多年,从 XP 时代一路用到现在的 Win11,踩过的坑比说明书都厚。今天干脆把 progisp 从下载、安装、驱动到烧录的全过程一次性讲清楚,顺便把 Win10 下的兼容性问题彻底说透。
progisp 是智峰工作室出的一款 AVR 单片机 ISP 下载软件,最常见的搭配是 USBASP 编程器。它不是 IDE,不负责写代码,专门做一件事:把编译好的 hex 等文件烧进 AVR 芯片里,同时能配置熔丝位、读写 EEPROM、设置加密位。如果你是嵌入式新手、学生党,或者手头还有一堆 ATmega/ATtiny 库存的老开发,这个工具简直是为这些场景而生的。
1. progisp 是什么:一个“老古董”凭什么还能打
1.1 它是干什么的
progisp 本质上是一个 ISP(In-System Programming)下载工具,工作对象是 Microchip(原 Atmel)的 AVR 系列单片机。所谓 ISP,就是目标芯片不用拆下来,通过 SPI 接口(MOSI、MISO、SCK、RESET)直接在板子上烧录程序。这种方式对原型验证、批量小生产、在线升级 bootloader 都非常方便。
它的常用场景覆盖得很宽:给 ATmega328P 烧 Arduino bootloader、给 ATtiny13 写点小灯程序、给 ATmega8 刷各种开源固件、给老玩家的 AVR 板子扩容……只要目标芯片支持 ISP 协议,progisp 大部分都能接得住。配合一个 USBASP 编程器,整条烧录链路加起来不到十块钱,这在嵌入式工具里属于性价比天花板。
我把常用功能整理了一下,新手可以先有个整体印象:
| 功能 | 说明 | 我的使用频率 |
|---|---|---|
| 调入/烧录 Flash | 烧录编译好的 hex/bin,核心功能 | 每次必用 |
| 读取/保存 Flash | 把芯片现有程序读出来存成文件 | 偶尔,备份用 |
| EEPROM 读写 | 单独读写数据区,适合存校准参数 | 少 |
| 熔丝位设置 | 配置时钟源、复位脚、BOD 等 | 经常,却也最容易翻车 |
| 加密位 | 防止芯片被读出固件 | 量产时用,平时不碰 |
1.2 为什么到现在还推荐它
现在能烧录 AVR 的工具不少,Microchip Studio 自带烧录器,avrdude 是命令行神器,但 progisp 依然有一批忠实用户,原因很实际。
第一,progisp 是绿色软件,整个 progisp.zip 解压后也就几兆,不写注册表、不装服务,拷到 U 盘里走到哪烧到哪。第二,它支持的中文界面在国产开发环境里特别友好,下拉框选芯片型号、按钮名字都是汉字,新手不用对着英文文档猜。第三,它支持的 AVR 型号相当全,从 ATtiny 到 ATmega 到 AT90 系列基本都覆盖,甚至一些现在已经很少见的型号它都能认出来。第四,它和 USBASP 这种便宜编程器配合得很稳,烧录速度快,操作逻辑直白,点几下就能完事。
当然,它也有一堆毛病:界面停留在上世纪审美、没有自动更新、对新的 Windows 版本偶尔需要手动“哄一哄”。但作为一个烧录工具,它把本职工作做得足够好,所以一直没被淘汰。
2. progisp.zip 到能烧录:Win10 下的安装与兼容性设置
2.1 先说结论:progisp 到底支持 Win10 吗
直接给答案:支持。我自己在 Win10 22H2、Win11 23H2 上都跑过 progisp 1.72,只要驱动装对、以管理员身份运行、顺手设一下兼容模式,它跟 XP 时代一样稳定。
网上说“不支持 Win10”的,十有八九是驱动没装上,或者被 UAC 拦住了。progisp 这个软件有个特点,它访问 USB 设备需要驱动程序配合,如果你插上 USBASP 之后设备管理器里是一个带黄色感叹号的未知设备,progisp 自然报“连接失败”。所以解决 Win10 兼容问题的核心,不是软件本身,而是把 USBASP 的驱动装好。
2.2 解压与绿色运行要点
下载下来的 progisp.zip,第一步建议先放到一个纯英文、没有空格的路径里,比如C:\progisp。这不是玄学,progisp 是老软件,对中文路径的处理偶尔会抽风,放在英文目录能省掉很多莫名其妙的问题。
解压之后,目录里通常会看到progisp.exe主程序和几个子文件夹,里面放着驱动、帮助文档、示例文件等。有些第三方打包的 progisp.zip 可能会捆点别的东西,解压后先看一眼文件结构,如果发现奇怪的可执行文件,建议先杀毒再打开。官方原版主程序就一个 exe,行为干净。
注意:不要直接从压缩包内双击运行 exe,先解压出来。老软件在压缩包内运行会无法正确读取配置文件和驱动目录,容易产生诡异故障。
2.3 驱动安装:两种可用方案
USBASP 编程器的驱动是 libusb-win32 这一系的,安装有两条路。
方案一,用 Zadig 工具安装。Zadig 是一个开源 USB 驱动安装工具,专门解决这类“设备没有合适驱动”的痛点。先插上 USBASP,打开 Zadig,在菜单里勾选 List All Devices,下拉框里找到 USBasp,然后选择目标驱动为 libusb-win32 或者 WinUSB,点 Install Driver。等它提示成功,设备管理器里的感叹号就消失了。
方案二,手动指向 progisp 解压目录里的驱动文件。在设备管理器里右键未知设备,选择“更新驱动程序”→“浏览我的电脑以查找驱动程序”,然后指向 progisp 文件夹下的驱动子目录,让系统自己搜。如果系统提示驱动没有数字签名,就需要先处理驱动签名问题。
我个人的经验是,Zadig 方案成功率更高,尤其在 Win10 上。手动指驱动的方式有时会被系统的驱动签名策略卡住,而 Zadig 安装的 libusb 驱动签名相对友好,出现问题的概率小很多。
2.4 兼容模式、DPI 与管理员权限
驱动装好之后,progisp.exe 还需要三个设置。
右键progisp.exe,进“属性”→“兼容性”,把“以兼容模式运行这个程序”勾上,下拉选择 Windows 7。如果 Win7 模式还闪退,可以试试 Windows XP SP3。然后勾选“以管理员身份运行此程序”,不然 Win10 的 UAC 可能拦截它访问 USB 设备。最后一步,点击“更改高 DPI 设置”,在“替代高 DPI 缩放行为”里选择“应用程序”。这一步不做的话,高分屏上 progisp 的界面会糊成一片,按钮位置也会错乱。
这三步做完,基本就能稳定使用了。设置完成后最好重启一次 progisp,让配置生效。每次插入 USBASP 之后,确认设备管理器里出现的是“USBasp”且没有感叹号,这时候打开 progisp,已经成功了一大半。
3. 实操:完整烧录一个 ATmega328P
3.1 硬件连接
烧录之前先把硬件接好。USBASP 一头插电脑 USB 口,另一头通过 10P 或者 6P 排线连到目标板的 ISP 接口。排线一般有一边是红色或者有三角箭头,表示 1 脚位置,目标板的 ISP 座子上也通常有 1 脚标注,对准再插,千万别反插。反插轻则烧录失败,重则可能损坏编程器或芯片。
如果目标板没有 ISP 座子,也可以飞线。标准的 ISP 连接需要五根线:VCC、GND、MOSI、MISO、SCK、RESET,六根里五根信号加一根电源。不同芯片的引脚映射不一样,接之前务必查目标芯片的数据手册,别凭记忆乱接。
关于供电,USBASP 一般会通过 USB 口取电,再把 VCC 引到目标板上给芯片供电。但如果目标板上还有别的耗电外设,或者芯片工作电流比较大,我建议目标板用独立电源,GND 和编程器共地即可。烧录时供电不稳是最常见的隐性故障源。
3.2 在 progisp 里选择芯片与文件
打开 progisp,界面很朴素,但信息密度高。顶部是操作按钮区,中间是芯片选择和文件操作区,下方是熔丝位和加密位设置区,最下面是日志输出窗口。
操作流程按顺序来:先把“芯片”下拉框选成你的目标型号,比如ATmega328P。选好之后,点击“调入 Flash”按钮,选中编译出来的 hex 文件。如果程序还需要 EEPROM 数据,就单独调入 EEPROM 文件,没有就跳过。
很多新手会在这一步问:hex 文件哪来的?hex 是编译器/汇编器生成的最终机器码文件,比如 Arduino IDE 在编译时会生成*.ino.hex,Atmel Studio 编译后也能在输出目录里找到。progisp 不负责编译,它只接收已经编译好的文件。
3.3 熔丝位配置与备份
熔丝位是 AVR 里最阴间的一个概念,它直接配置芯片的时钟源、复位引脚、BOD 电压等底层参数。配置错了,芯片可能直接“锁死”,所以操作前一定要谨慎。
progisp 的熔丝位区域提供了 Extended、High、Low 三个字节的设置。勾选时的具体含义在不同芯片上略有差异,我建议不要凭感觉勾。最稳妥的做法是:先点“读取熔丝位”,把芯片当前值读出来并截图备份,然后按项目需求修改。如果你不确定某个位的作用,就去翻芯片的 datasheet,或者保持默认。
举一个常见例子:给 ATmega328P 烧 Arduino 的 Optiboot bootloader,目标板用的是 16MHz 外部晶振,那熔丝位常见的参考配置是 Extended=0x05、High=0xDE、Low=0xFF。强调一下,这只是针对特定板子、特定 bootloader 的组合,换芯片换晶振不能照抄。烧之前一定要确认自己的硬件方案,再写入熔丝位。
这里是我踩过最惨的坑:曾经把一颗 ATtiny13 的熔丝位错误地配成了外部时钟,但板子上根本没有晶振,芯片立刻变砖,只能在编程器上换新片重来。所以不确认,就不要乱写熔丝位。
3.4 自动烧录与日志判断
芯片选好、文件调入、熔丝位确认无误后,就可以烧录了。progisp 界面上的“自动”按钮就是一套组合操作,通常包含擦除、写入 Flash、校验这个过程。点击自动,日志窗口会打印进度,比如:
进入编程模式 芯片 ID:1E 95 0F 擦除芯片...成功 写入 Flash...成功 校验 Flash...成功看到“成功”字样,基本就稳了。如果芯片 ID 读不出来,说明连接有问题,需要检查接线和驱动。如果写入成功但校验失败,多半是电源不稳或者 ISP 速率太高。
4. 常见问题与排查技巧
4.1 驱动装不上、设备识别不到
这是 Win10 下最多的一个问题,现象是 progisp 提示“USBasp 连接失败”或“打开设备失败”,设备管理器里却是未知设备。解决办法:先换一个 USB 口,最好是电脑后置 USB 口,排除线和供电问题;然后用 Zadig 重新安装 libusb-win32 驱动;如果仍然不行,把目标板从 USBASP 上断开,只留编程器,看设备管理器能否正常识别 USBasp,缩小故障范围。
还有一种情况,设备管理器里显示“USBasp”正常,但 progisp 还是连不上,这时候要看是不是以管理员身份运行了 progisp,以及兼容模式是否生效。老软件和用户权限纠缠的问题,在 Win10 上很常见。
4.2 熔丝位写错导致芯片锁死
芯片锁死的典型现象是:写完熔丝位之后,progisp 再也无法和芯片建立连接,任何擦除、写入操作全部失败。原因通常是对着熔丝位配置乱勾,把 RSTDISBL 禁用了,或者选了外部时钟但板子上没有晶振。
锁死之后的处理方案按成本排序:如果只是时钟选错但复位脚还正常,有些情况下可以用外部时钟源注入到 XTAL1 引脚,再用低速 ISP 模式尝试恢复;如果 RSTDISBL 被置位,普通 ISP 无法救援,只能上高压并行编程器(HVPP)或者高压串行编程器(HVSP)清除熔丝位;手里没有高压编程器的话,最现实的方案是换一片芯片,AVR 芯片几块钱一片,损失不算大。
预防永远比恢复容易。烧录前读熔丝位、截图备份、确认修改项,这三步做到位,锁死概率能降低九成。
4.3 烧录失败、校验不过、超时
表现是写入到一半报错,或者写入成功但校验不一致。最常见的原因是目标板供电不足。USBASP 从 USB 口取电,输出电流有限,如果目标板上有大电容、灯珠、传感器等耗电设备,电压会被拉垮,烧录自然不稳定。解决办法就是把目标板改成独立供电,并且把 GND 和 USBASP 连到同一参考地。
另一个原因是 ISP 速率太高。progisp 里有速度设置,默认可能跑得比较快,遇到长排线、目标板时钟偏低、芯片老化等情况就容易失败。把速率调低一级,比如从 375K 降到 187.5K 或者更低,往往就好了。低速虽然慢一点,但稳定才是第一位。
4.4 Win10 界面花屏、按钮错位、闪退
这基本是高 DPI 缩放的锅。老软件按照 96 DPI 设计界面,在 100% 缩放下没问题,一旦系统缩放比例调到 125% 或 150%,文字和控件就会错乱。按前面说的,在 exe 属性里把“替代高 DPI 缩放行为”设为“应用程序”,问题就解决了。
如果打开软件直接闪退,先检查是不是被杀毒软件拦了,progisp 毕竟是老软件,某些杀毒软体会误报。把它加入白名单,或者临时关掉保护再跑一次,一般能定位问题。实在不行,用 Windows 自带的兼容性疑难解答跑一遍,让系统帮你选兼容参数,偶尔也有奇效。
5. 我的建议:什么时候继续用 progisp,什么时候换别的
5.1 progisp、avrdude、Microchip Studio 怎么选
工具选择没有标准答案,但可以根据场景来。我把三者的差异整理成一张表:
| 维度 | progisp | avrdude | Microchip Studio |
|---|---|---|---|
| 界面 | 图形界面,中文 | 命令行 | 完整 IDE |
| 上手难度 | 低 | 中 | 中高 |
| 自动化能力 | 弱 | 强,可写脚本 | 中,依赖插件 |
| 烧录速度 | 快 | 快 | 中等 |
| 适合场景 | 快速烧录、学校实验 | 批量烧录、集成到 CI | 开发调试一体 |
如果你是新手,或者只是偶尔烧几片芯片做实验,progisp 最省事,界面简单直接,打开就能用。如果你在做小批量生产,或者想把烧录集成到自动构建流程里,avrdude 是更好的选择,一条命令行就能搞定烧录。如果在做完整项目开发,Microchip Studio 集成了编辑、编译、调试、烧录,体验更完整。
三者的选择不冲突。我现在的工作流是:写代码用 Microchip Studio,日常快速烧录用 progisp,自动化验证时用 avrdude,哪个方便用哪个。
5.2 几条掏心窝子的实操心得
工具说完了,最后分享几个我自己的习惯。
第一,任何一块新芯片第一次烧录前,先点“读取熔丝位”,把原始值记录下来。这个习惯救了我很多次,尤其是二手芯片或者别人用过的板子,你永远不知道上一手设置了什么。
第二,准备一根短排线。ISP 线越长越容易出问题,尤其是 SCK 频率高的时候。10 厘米以内的线是最稳的,超过了就尽量降速。
第三,没事别碰加密位。progisp 里加密位的设置很简单,但设错了可能导致芯片完全无法读取,而且有些加密位不是简单擦除就能解除的。量产时加密有它的价值,但个人开发完全是给自己找麻烦。
第四,如果哪天 progisp 在 Win10 上真的救不回来,别硬刚,用虚拟机装一个 Windows XP 或者 7 专门跑它,也就几十兆的事。老软件配老系统,很多时候比在新系统上折腾兼容性省心得多。
我用了十几年 progisp,最大的体会是:工具不在新旧,在于稳。它解决的是一个非常简单、非常具体的问题,但把这个问题的体验做到了极致。这也是为什么哪怕现在有那么多更好的工具,遇到给 AVR 烧个固件这种活,我第一个想到的依然是它。
本文还有配套的精品资源,点击获取