2014-12-30 15:25:04 [显示全部楼层]
16593浏览
查看: 16593|回复: 4

[进阶] 用USBtinyISP给某宝Pro mini(5v 16Mhz改进版)烧写bootloader失败...

[复制链接]
本帖最后由 darf 于 2014-12-30 15:44 编辑

首先把本次折腾的结论列举如下:

  • 原版Xloader 1.0不能给 pro mini 上载程序,可以解决。(往后看)
  • ft232rl USB转串口芯片与 pro mini 的引脚连接,无需按照网上千奇百怪的方法连接,无需人肉reset,只要六根杜邦线一排,从DTR引脚开始按顺序连接就行。
  • 用 Uno 给其它 Arduino 芯片烧写 bootloader 的连线和操作。按照官方教程连接即可,不用瞎改。
  • 有了Uno 和 USBtinyISP,基本上所有的 arduino板子都不怕bootloader损坏了。
  • 几乎所有bootloader损坏的板子、写不进程序的板子都可以修复,只要没有冒烟。不要扔,很不环保的。
  • 重点解决用USBtinyISP给Pro mini烧写bootloader失败的问题。原因很哭笑不得,带有浓郁的地域和时代风采。如下所述:



前几天我用Xloader 1.0 pro mini 上载Grbl 0.9.hex(你们懂得),结果Xloader设备选择下拉菜单中没有 pro mini 选项!我擦~

于是乎哥怒了,直接选了个nano的选项,开刷。然后,就没有然后了,pro mini阵亡了,bootloader损坏,blink都写不进去了….

这,是所有悲剧的开始先抢救这块10块软妹币的pro mini~


首先按照下图连接:(实验证明,这种官方连接是对的,不需要按照某些同学说的“把红色ISP 2脚(vcc)改接到 pro miniRAW脚”





1. IDE105下用USBtinyISP烧写bootloader,得到以下错误
E:\ArduinoIDE105\hardware/tools/avr/bin/avrdude -CE:\ArduinoIDE105\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -cusbtiny-e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m
…………省略1000字节…………
Systemwide configuration file is "E:\ArduinoIDE105\hardware/tools/avr/etc/avrdude.conf"
…………省略1000字节…………
avrdude:input file E:\ArduinoIDE105\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hexcontains 32670 bytes
avrdude:reading on-chip flash data:
Reading| ################################################## | 100% 47.80s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x7d80
         0x50 != 0x40
avrdude: verification error; content mismatch
avrdude done.  Thank you.

2. 然后,用UNO烧写pro mini的bootloader(教程请度娘),结果成功了,代码如下:
E:\ArduinoIDE105\hardware/tools/avr/bin/avrdude -CE:\ArduinoIDE105\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -cstk500v1-P\\.\COM8 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDA:m-Ulfuse:w:0xFF:m
…………省略1000字节…………
Systemwide configuration file is "E:\ArduinoIDE105\hardware/tools/avr/etc/avrdude.conf"
…………省略一亿字节和无数个[ff]…………
Reading| avrdude: Send: V [56] X [58] . [00] . [00] . [00]   [20]
avrdude:Recv: . [14]
avrdude:Recv: . [cf]
avrdude:Recv: . [10]
##################################################| 100% 0.02s
avrdude:verifying ...
avrdude:1 bytes of lock verified
avrdude:Send: Q [51]   [20]
avrdude:Recv: . [14]
avrdude:Recv: . [10]
avrdudedone.  Thank you.


3. 又用USBtinyISP给Nano烧写bootloader做实验。
看看是否是USBtinyISP的硬件损坏,结果成功了。证明烧写器硬件没有问题。

4. 于是怀疑是使用USBtinyISP时引用的这两个文件出了问题或者不匹配:
E:\Arduino IDE105\hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex”
E:\Arduino IDE105\hardware\arduino\ boards.txt

因为ATmegaBOOT_168_atmega328.hex文件在给 nano 写 bootloader的时候也用过,完全正常,所以怀疑boards.txt文件有些问题。

打开后boards.txt文件,分别复制对比nanow/ATmega328、mini w/ATmega328和Arduino pro or pro mini(5V, 16Mhz) w/ATmega328这三个芯片在其中的配置,对比如下:
##############################################################
nano328.name=Arduino Nano w/ ATmega328
nano328.upload.protocol=arduino
nano328.upload.maximum_size=30720
nano328.upload.speed=57600
nano328.bootloader.low_fuses=0xFF
nano328.bootloader.high_fuses=0xDA
nano328.bootloader.extended_fuses=0x05
nano328.bootloader.path=atmega
nano328.bootloader.file=ATmegaBOOT_168_atmega328.hex
nano328.bootloader.unlock_bits=0x3F
nano328.bootloader.lock_bits=0x0F
nano328.build.mcu=atmega328p
nano328.build.f_cpu=16000000L
nano328.build.core=arduino
nano328.build.variant=eightanaloginputs
##############################################################
mini328.name=Arduino Mini w/ ATmega328
mini328.upload.protocol=arduino
mini328.upload.maximum_size=28672
mini328.upload.speed=115200
mini328.bootloader.low_fuses=0xff
mini328.bootloader.high_fuses=0xd8
mini328.bootloader.extended_fuses=0x05
mini328.bootloader.path=optiboot
mini328.bootloader.file=optiboot_atmega328-Mini.hex
mini328.bootloader.unlock_bits=0x3F
mini328.bootloader.lock_bits=0x0F
mini328.build.mcu=atmega328p
mini328.build.f_cpu=16000000L
mini328.build.core=arduino
mini328.build.variant=eightanaloginputs
##############################################################
pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
pro5v328.upload.protocol=arduino
pro5v328.upload.maximum_size=30720
pro5v328.upload.speed=57600
pro5v328.bootloader.low_fuses=0xFF
pro5v328.bootloader.high_fuses=0xDA
pro5v328.bootloader.extended_fuses=0x05
pro5v328.bootloader.path=atmega
pro5v328.bootloader.file=ATmegaBOOT_168_atmega328.hex
pro5v328.bootloader.unlock_bits=0x3F
pro5v328.bootloader.lock_bits=0x0F
pro5v328.build.mcu=atmega328p
pro5v328.build.f_cpu=16000000L
pro5v328.build.core=arduino
pro5v328.build.variant=standard

交叉对比一下(这是需要天赋的技能),可以看出只有pro mini的最后一句用了standard,而没有用eightanaloginputs(字面翻译成“8模拟输入”)。最后那段最后一个词更改成 eightanaloginputs,保存,关闭。
5. 再次用USBtinyISP烧写 arduino pro min的bootloader,等待~成功!
然后,再用Xloader上传Grbl 0.9,28k大小,也成功:(原版的Xloader1.0 选择设备的下拉菜单是不支持pro mini的,需要改造一下。打开Xloader文件夹,打开devices.txt文件,加入一行不带引号的“Pro mini(ATmega328);m328p;stk500;57600;”保存关闭,重开软件就行了。多了不解释,有善缘的施主可以自行感受为什么。)
通过串口查看一下吧:
成功哦~(此处额外提个醒,grbl v0.9 这个版本,连接com口的波特率不再是v0.8的9600了,升级成了115200,记得改波特率哦,否则连接不上。嘿嘿,我什么都知道。)


6. 原因分析:
打开E:\Arduino IDE105\hardware\arduino\variants目录,可以看到:
Standardeightanaloginputs目录下分别有一个 .h文件,使用记事本打开如下图:右边的是standard,左边的是eightanaloginputs定义文件。
可以看到eightanaloginputs定义文件中完全引用了standard定义,唯一不同的是将NUM_ANALOG_INPUTS 函数由6变成了8。意思就是这个pro mini板子具有8个模拟针脚,而不是6个。
我腚眼一看板子,我靠,果然买来的所谓 arduino pro mini 5v 16Mhz改进版 的板子,上面有A0~A7八个模拟针脚!!!!!!!!怪不得……对于这种山寨作坊+某宝联合拉屎不擦腚的创造我真&…*%$(!%¥#@~。墙裂建议各位施主低头俯视一下自己手中的板子是有几个模拟针脚。


我买的和原版arduino pro mini引脚对比如下图:
原版,好明显:A0~A5移动六个模拟针脚。


我买的山寨版,好明显:有A0~A7八个模拟针脚。

从根源上来说,山寨版(所谓改进版)用的ATMEGA328P-AU有8个模数转换IO,而原版用的ATMEGA328P-PU只有6个。



hnyzcj  版主

发表于 2014-12-30 20:14:30

回复

使用道具 举报

hnyzcj  版主

发表于 2014-12-30 20:15:49

看看这个
800px-Bluno-nano.png
回复

使用道具 举报

hnyzcj  版主

发表于 2014-12-30 20:18:08

我腚眼一看板子,我靠,果然买来的所谓 arduino pro mini 5v 16Mhz改进版 的板子,上面有A0~A7八个模拟针脚!!!!!!!!怪不得……对于这种山寨作坊+某宝联合拉屎不擦腚的创造我真&…*%$(!%¥#@~。墙裂建议各位施主低头俯视一下自己手中的板子是有几个模拟针脚。

LZ太有才了。以后315部队会邀请你的
回复

使用道具 举报

20060606  高级技匠

发表于 2020-8-23 10:10:23

感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail