本文仅适用于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的参数设置的更多相关文章

  1. USBASP下载线制作教程

  2. 转 在无法通过yum下载非标准包时,怎么办

    在CentOS下,我们可以通过yum来下载或更新rpm包,但是标准的源(repository)里只提供一部分的rpm包,虽然大部分情况下,这些包是够用的.但是有时候还是需要下载其他的一些非标准的包,如 ...

  3. 自制单片机之八……USB-ISP下载线

    现在的笔记本包括台式机都渐渐地舍弃了并口.串口:很多网友也跟我说,台式没有并口了,下载线没法用了,让我帮他想想办法.看来做个USB-ISP下载线是势在必行了. 在网上搜了下,主要有两种方案,一种是用F ...

  4. 使用caddy实现非标准端口https

    近来使用Halo搭建博客,并顺便把WeHalo小程序也把玩了起来,但是发现几个非常棘手的问题: 根据访问日志发现有三方在刷取关键接口的请求,http请求在部分情况下会暴露出很显著的安全问题: 小程序强 ...

  5. ESP32-S2原生USB 烧录 TinyUF2 bootloader 加 CircuitPython

    概述 ESP32-S2最令我心仪的改进是原生支持USB,即带有一个集成了收发器的全速 USB OTG 外设,符合 USB 1.1 规范,理论速度1.5m/s,利用得当将会是一个非常巨大的进步. 目前E ...

  6. Python解析非标准JSON(Key值非字符串)

    采集数据的时候经常碰到一些JSON数据的Key值不是字符串,这些数据在JavaScript的上下文中是可以解析的,但在Python中,没有该部分数据的上下文,无法采用json.loads(JSON)的 ...

  7. LATTICE USB下载线接口说明

    这节知识摘抄于网络,仅用几张图片来显示,提醒Usb下载线的连接方式. 最后贴出个人使用的8线的USB下载器的连接方式: 再补充一点,应为彩色杜邦线与USB下载器是活口连接,两个可以分开,再连接的时候, ...

  8. [Effective JavaScript 笔记]第29条:避免使用非标准的栈检查属性

    许多js环境都提供检查调用栈的功能.调用栈是指当前正在执行的活动函数链.在某些旧的宿主环境中,每个arguments对象含有两个额外的属性:arguments.callee和arguments.cal ...

  9. Wireshark分析非标准端口号流量

    Wireshark分析非标准端口号流量 2.2.2  分析非标准端口号流量Wireshark分析非标准端口号流量 应用程序运行使用非标准端口号总是网络分析专家最关注的.关注该应用程序是否有意涉及使用非 ...

随机推荐

  1. P1143 飘飘乎居士的约会

    P1143 飘飘乎居士的约会 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景  一阵狂风吹过  只听“pong”的一声,飘飘乎居士降落了!!! 描述 又是美妙 ...

  2. 透明层提示框代替windows警告窗口方法!

    原文发布时间为:2009-04-05 -- 来源于本人的百度文章 [由搬家工具导入] 有人会说,怎么网页用JavaScript会有安全提示,而其他网站上面用了JavaScript都没有安全提示,呵呵, ...

  3. XPath gramma

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. XML 实例文档 我们将在下面的例子中使用这个 XML 文档. & ...

  4. [LeetCode] Insert Interval 二分搜索

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

  5. 【电脑使用经验】怎么查看无线网络中电脑的IP地址?

    1. 2. 3. 4. 5.

  6. C语言编程中函数指针的定义及使用

    C语言中函数指针的定义: typedef int (*funcPtr)(int, int)表示定义了一个函数指针funcPtr,这个函数指针只能指向如下: int add(int, int).int ...

  7. 解决IE6的PNG透明

    http://www.jb51.net/article/35669.htm http://blog.csdn.net/mosliang/article/details/6760028

  8. Linux Performance Observability Tools

  9. app中获取应用名称,版本等信息的方法

    在app中,我们有时候需要显示一些信息,例如名称,版本等等...如果用写死的方式可能不太好,我们可以动态的读取.应用的信息主要是在info.plist这个文件中,实际就是一个xml文件,以源文件的方式 ...

  10. sencha toucha获取 constructor中的数据

    config:{ tmp:null }, constructor : function(conf) { this.config.tmp=conf; } 添加配置属性,然后直接用 this.config ...