查看: 8069|回复: 6

[其他] 改造USBasp编程器用arduino烧录引导程序

[复制链接]
  • TA的每日心情
    奋斗
    2018-2-10 13:41
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2018-2-7 01:55 | 显示全部楼层 |阅读模式
    本帖最后由 KMKA 于 2018-2-7 01:59 编辑

    玩arduino的朋友应该都知道常用的arduino的处理器几乎都是atmega系列的单片机(AVR单片机一种)想要更加灵活的玩转arduino的莫过于自己制作一块arduino主板,但这就带来了一个问题——BootLoader的烧录(也就是引导程序的烧录)

    arduino的BootLoader不能使用串口烧录这是常识(我个人认为),唯一的办法就是编程器(也叫烧录器或下载器)
    可以将一块arduino板子制作成arduinoISP,但据说并不稳定,有一定概率烧录失败(我并没有有试验过,所以具体情况我也不太清楚,用过的可以说一下)
    还有就是目前最便宜的编程器也就是是USBasp(国内大部分AVR单片机用的都是这种),也就是下图这种(颜色不一定相同)
    注:USBisp和USBasp并不是同一种下载器,某宝搜出来的虽然写的是isp,但几乎都是智峰USBasp
    IMG_20180206_230810.jpg
    某宝一搜USBasp出来一大堆(本文仅针对这种带外壳,插头向后的烧录器,其他的不保证成功
    因为arduino的jtag接口是6p的,所以要再接上一个10p转6p的转换头(当然直接用杜邦线接也可以)
    IMG_20180206_232919.jpg

    但很多人买回来连上电脑后并不能使用,在arduino上点击“烧录引导程序”会提示:
    avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
    烧录引导程序出错。



    原因在于目前国内的USBasp大部分使用的是国内“智峰”的USBasp编程器的程序固件,虽然免驱,但只能用智峰的下载软件progisp。而arduino官方的烧录程序识别的是国际版USBasp,也就是说虽然都是USBasp,但固件和驱动完全不一样(这也是为什么很多的USBasp不能在Linux上对AVR单片机烧录程序的原因)

    因此,如果要用USBasp烧录引导程序,我知道两种办法
    一:在arduino安装目录找到BootLoader的hex文件,然后使用progisp进行烧录,但这种方法比较麻烦,每次换不同的版型都要更换flash、更换配置(熔丝位设置等等,设置不当还会引起单片机锁死,然而解锁更麻烦)网上已经有这种方法了,在此不介绍
    二:还一种就是我琢磨了好久才解决的一种办法,把智峰的USBasp改造成国际版,一劳永逸,做成之后就可以直接用改造后的USBasp下载BootLoader,也可以使用编程器上传arduino程序

    改造方法如下:
    一 前期准备:
      硬件
        两个USBasp烧录器(改造完后一个是智峰驱动,一个是通用版,以后就有两种USBasp下载器,面对不同情况,毕竟progisp大多时候还是比通用版AVR烧录程序很好用)
        一根USBasp下载线(买的时候一般都有)
        尖头短路镊子(没有也可以用导线代替)
        烙铁等电工工具
      软件
    USBasp固件(解压)   http://www.fischl.de/usbasp/
        智峰progisp   http://www.pc6.com/softview/SoftView_118051.html
        Zadig(驱动安装)  http://zadig.akeo.ie/


    二 硬件修改:
    把其中一个USBasp的外壳拆掉,手拿着外壳(不要碰尾端),USB头向下,对着硬板或地面向下一压就拆掉了

    拆除外壳

    拆除外壳

    注意图上用红线标记的地方(B短路点),有个0欧的电阻,有的下载器是直接用焊锡焊成一个点
    把0欧的电阻焊掉或把锡点焊开,也就是让线路断开(重要

    把两个编程器用下载线连接起来
    1517934410776.jpg

    将智峰USBasp插在电脑上

    用短路镊子连接待改造的编程器的“up”两侧对应的两个过孔(也可以用导线临时焊接在一起)
    下载固件期间“up”两端的过孔须保持连接状态,下载完成后断开(不用立即断开)
    IMG_20180206_230903.jpg


    三 固件下载:
    打开progisp
    确认改造的USBasp处理器型号,图中所示位置,应为atmega8或atmega88或atmega48,后缀A、L之类的可以忽略

    MCU

    MCU


    点右侧“调入Flash”,在下载的“USBasp固件”中打开“\bin\firmware\
    可以分别找到对应的型号atmega8、atmega48、atmega88的hex文件
    按图示下载程序,可按图示框选相应选项
    mcu.jpg
    熔丝位设置方式,可以直接在下方输入
    ATMEGA8设置为   低位值EF,高位值C9
    ATMEGA48设置为 低位值FF,高位值DD
    ATMEGA88设置为 低位值FF,高位值DD

    熔丝位

    熔丝位


    固件下载成功后
    断开“up”对应电路
    可关闭progisp

    四 安装驱动:
    拔掉智峰USBasp,插上改造后的USBasp,电脑会提示安装驱动失败或其他提示(也有提示成功的,为保万一还是再装一下,因为驱动有3种),忽略
    打开Zadig
    选择 Options->List All Devices
    在下拉框中选择USBasp(一定不要选错)
    绿色箭头右侧选择为WinUSB
    然后Install Driver(我已经安装过了,所以显示为Reinstall Driver)
    test.jpg
    注:arduino对应驱动为WinUSB,而如果想用AVRDUDE下载AVR程序,需要将驱动改为libusb-win32或libusbK




    至此,一个公版USBasp就改造完成了
    不仅arduino可以用来烧录BootLoader,linux也可以用来下载程序了
  • TA的每日心情
    开心
    2016-11-3 13:00
  • 签到天数: 52 天

    [LV.5]常住居民I

    发表于 2018-2-7 23:16 | 显示全部楼层
    这种这么有用的帖子一定要支持一下
  • TA的每日心情
    郁闷
    2019-12-21 13:35
  • 签到天数: 36 天

    [LV.5]常住居民I

    发表于 2019-6-20 10:51 | 显示全部楼层
    这么有用的帖子一定要支持一下

    该用户从未签到

    发表于 2019-8-8 16:27 | 显示全部楼层
    怪不得dfrobot的板子不能刷marlin固件,国内的东西兼容性这么差。
  • TA的每日心情
    无聊
    2018-7-17 17:38
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2019-8-8 23:06 | 显示全部楼层
    星之海洋 发表于 2019-8-8 16:27
    怪不得dfrobot的板子不能刷marlin固件,国内的东西兼容性这么差。

    遇到问题就自己慢慢摸索,再不行就拿上来具体讨论。
    动不动就喷国内的东西如何,这种态度还是别玩单片机了。
    淘宝最便宜的2560也随便刷,反正单片机都没有假货,区别只是外围元件的质量和型号。

    该用户从未签到

    发表于 2019-8-9 14:09 | 显示全部楼层
    本帖最后由 星之海洋 于 2019-8-9 14:18 编辑
    brucewoo 发表于 2019-8-8 23:06
    遇到问题就自己慢慢摸索,再不行就拿上来具体讨论。
    动不动就喷国内的东西如何,这种态度还是别玩单片机 ...

    dfrobot Bluno Mega2560刷marlin固件的时候出现
    avrdude: verification error, first mismatch at byte 0xdab2
             0x8f != 0x80
    avrdude: verification error; content mismatch
    原版就没有这个验证错误
    固件大概1.1MB,DFrobot不会是不能写大型的固件吧,只能写个跑马灯固件,我要他2560干什么
  • TA的每日心情
    无聊
    2020-1-23 11:19
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2020-1-14 20:36 | 显示全部楼层
    学习一下,有几个usbasp一直扔着,这下有用了
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
    一块扩展板完成Arduino的1
    实验目录(动手做): 一、LED 实验 01 Blink:D13蓝色 LED 闪烁 02 Blink2:D12、D
    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    【Arduino】u8g2中文字库制作教程 小白请进
    【Arduino】u8g2中文字库
    我知道对于这个话题许多大佬们都会,发这个贴子也算是炒冷饭了,所以一开始我也十分纠
    ESP8266 AT指令固件已更新至V1.7.2
    ESP8266 AT指令固件已更新
    ESP8266在乐鑫官网的AT指令固件已更新至V1.7.2,有兴趣的同学自行至官网下载。 官网链
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表