非标准USBasp下载线烧录Arduino BootLoader的参数设置
本文仅适用于BootLoader损坏且买到国产“免驱USBasp下载线”导致Arduino IDE无法识别从而不能烧写的情况。是一种略显非主流的操作方式。
因为Arduino的IDE并不支持这种免驱的USBasp线,会提示错误。
事情的全程是这样的:
1.症状
用Arduino控制舵机不慎玩脱了,插入电脑时,在“设备管理器”中没有串口提示,用Arduino IDE无法下载程序到电路板中,提示找不到COM口。而且电脑也找不到串口。估计是BootLoader损坏了,准备用USBasp下载线重新烧录。
2.准备解决
之前的标准USBasp下载线送给了表弟,只好再买一根。买了个“国产免驱动”的下载线,倒是省了安装驱动了。插到电脑上之后并不生成串口号,只是识别为了一个USB-HID设备,如图。

普通的USBasp线有10个引脚,Arduino只有6个。但只要引脚接对了,还是能适配的。用杜邦线两两连接以下引脚:MOSI,VCC,RST,SCK,MISO,GND。
不幸的是,由于Arduino IDE的"高端大气国际范儿",根本识别不到这种修改过固件的“中国特色”USBasp下载线,用常规方法根本无法进行烧录操作,显示错误“could not find USB device "USBasp" ”“avrdude: stk500_getsync(): not in sync: resp=0x00”,无法连接。
3.拨云见日
归根结底,Arduino不就是一个Atmega 328P单片机和外围电路嘛,BootLoader也不过是单片机的一个FLASH文件,何必要依靠Arduino IDE呢!(说是这么说,当时写不进去的时候还是有点惊慌的…) 冷静,冷静。既然有了下载线,我们就按单片机的玩法,直接下载编译好的FLASH文件。但Arduino UNO的FLASH是哪个呢?没有官方列表中支持的下载器怎么办?
这种国产免驱动的下载线,可以用PROGISP这款软件。(AVR fighter似乎也能用,但是所支持的芯片类型数目似乎没有PROGISP多)

下载软件选好了,但软件里一堆的参数应当如何设置?在Arduino的文件夹里已经有了说明。以我的为例,“E:\arduino-1.0.5-r2\hardware\arduino”文件夹中的boards.txt里面包含了各种型号Arduino的参数,我的是Arduino UNO,文件里对应记载参数如下:
##############################################################
uno.name=Arduino Uno
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
uno.upload.speed=115200
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.build.mcu=atmega328p
uno.build.f_cpu=16000000L
uno.build.core=arduino
uno.build.variant=standard
##############################################################
这里并不用完全记住,设定几个关键值即可:
1.用杜邦线对应连接arduino与USBasp下载线的以下引脚:MOSI,VCC,RST,SCK,MISO,GND。
下载线插入电脑,打开PROGISP软件,FLASH文件选择“E:\arduino-1.0.5-r2\hardware\arduino\bootloaders\optiboot”文件夹里的“optiboot_atmega328.hex”。
2.上面列表中的low_fuses=0xff(低熔丝位),high_fuses=0xde(高熔丝位),extended_fuses=0x05(扩展熔丝位)这三个要在PROGISP里面设置好。
3.点击软件“自动”,即开始自动擦除,复位,烧写,设置熔丝位等一系列操作了。十几秒之后提示完成。
然后拔掉下载线,用USB线连接电脑和Arduino,是不是又能识别出新硬件、又能欢乐地写入程序了?
非标准USBasp下载线烧录Arduino BootLoader的参数设置的更多相关文章
- USBASP下载线制作教程
- 转 在无法通过yum下载非标准包时,怎么办
在CentOS下,我们可以通过yum来下载或更新rpm包,但是标准的源(repository)里只提供一部分的rpm包,虽然大部分情况下,这些包是够用的.但是有时候还是需要下载其他的一些非标准的包,如 ...
- 自制单片机之八……USB-ISP下载线
现在的笔记本包括台式机都渐渐地舍弃了并口.串口:很多网友也跟我说,台式没有并口了,下载线没法用了,让我帮他想想办法.看来做个USB-ISP下载线是势在必行了. 在网上搜了下,主要有两种方案,一种是用F ...
- 使用caddy实现非标准端口https
近来使用Halo搭建博客,并顺便把WeHalo小程序也把玩了起来,但是发现几个非常棘手的问题: 根据访问日志发现有三方在刷取关键接口的请求,http请求在部分情况下会暴露出很显著的安全问题: 小程序强 ...
- ESP32-S2原生USB 烧录 TinyUF2 bootloader 加 CircuitPython
概述 ESP32-S2最令我心仪的改进是原生支持USB,即带有一个集成了收发器的全速 USB OTG 外设,符合 USB 1.1 规范,理论速度1.5m/s,利用得当将会是一个非常巨大的进步. 目前E ...
- Python解析非标准JSON(Key值非字符串)
采集数据的时候经常碰到一些JSON数据的Key值不是字符串,这些数据在JavaScript的上下文中是可以解析的,但在Python中,没有该部分数据的上下文,无法采用json.loads(JSON)的 ...
- LATTICE USB下载线接口说明
这节知识摘抄于网络,仅用几张图片来显示,提醒Usb下载线的连接方式. 最后贴出个人使用的8线的USB下载器的连接方式: 再补充一点,应为彩色杜邦线与USB下载器是活口连接,两个可以分开,再连接的时候, ...
- [Effective JavaScript 笔记]第29条:避免使用非标准的栈检查属性
许多js环境都提供检查调用栈的功能.调用栈是指当前正在执行的活动函数链.在某些旧的宿主环境中,每个arguments对象含有两个额外的属性:arguments.callee和arguments.cal ...
- Wireshark分析非标准端口号流量
Wireshark分析非标准端口号流量 2.2.2 分析非标准端口号流量Wireshark分析非标准端口号流量 应用程序运行使用非标准端口号总是网络分析专家最关注的.关注该应用程序是否有意涉及使用非 ...
随机推荐
- Program "D:\AndroidDevelopment\android-ndk-r9\ndk-build.cmd" not found in PATH
1.问题描述 2.解决方法:修改ndk-build.cmd的配置路径, 修改成本地ndk-build.cmd所在路径,如下
- 19年的桌面KDE的风雨和陪伴,没有什么能够割舍
概述 KDE是史上功能最强大的桌面环境之一:开源且可自由使用.19年前,1996年10月14日,德国程序员 Matthias Ettrich 开始了这个美观的桌面环境的开发.KDE 提供了用户界面以及 ...
- 修复受损的linux引导
想来楼主玩linux差不多近20年了,从redhat,mandrke,manjaro,汉化,听歌.看电视电影.上网.打游戏.配置打印机等,碰到的问题一一解决了,但是一直对装好linux后重新安装win ...
- linux根文件系统制作之busybox编译和系统构建【转】
转自:http://blog.chinaunix.net/uid-29401328-id-5019660.html 介绍完相关文件后我们开始构建文件系统,涉及到的文件等到具体用到的时候再讲. 一.编译 ...
- Scala 封装可break和continue的foreach循环
发现scala里没有break和continue, 有时候实在是需要的话就要自己try catch异常,代码看起来有点蛋疼, 所以封装了一个可break和continue的foreach. impor ...
- Cryptography I 学习笔记 --- 信息完整性
1. ECBC-MAC,需要一对密钥k与k1,然后将明文分组,用cbc模式对明文分块加密,将最后的密文块再用k1进行加密,即可得到结果 2. NMAC,需要一对密钥k与k1,然后将明文分组,用k加密第 ...
- TCP/IP握手协议
转自:http://www.js123.net/t/n/n/2013/4/28/n_272.shtml 这篇介绍的也很棒:http://www.cnblogs.com/rootq/articles/1 ...
- (7)python tkinter-菜单栏
菜单栏 Menu f = tkinter.Menu(root) root['menu']=f f.add_command(label='菜单')# f.add_command(label='关于') ...
- Codeforces 371D Vessels (模拟)
题目链接 Vessels 这道题我做得有点稀里糊涂啊==TLE了几发之后改了一行就A了. 具体思路就是记fi为若第i个容器已经盛不下水了,那么接下来盛水的那个容器. hi为若现在要给i号容器加水,当前 ...
- 洛谷——P1617 爱与愁的一千个伤心的理由
P1617 爱与愁的一千个伤心的理由 题目背景 (本道题目隐藏了两首歌名,找找看哪~~~) <爱与愁的故事第一弹·heartache>第二章. 经历了心痛后,爱与愁大神不行了. 题目描述 ...