数码之家

 找回密码
 立即注册
搜索
查看: 5509|回复: 13

[Arduino] atmega328P 写入 Boot Loader的那点事 之 互相伤害

[复制链接]
发表于 2019-7-24 15:53:30 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
上次就ATMEGA328写入BOOTLODER做了介绍https://www.mydigit.cn/forum.php?mod=viewthread&tid=44837,后来觉得都是用328芯片,怎么会有不同的开发板呢?准备做个测试。这里说明下,这个测试断断续续进行了有三个星期吧,期间有些照片没有拍,还锁死两块328。
所用的材料有:328AU两块;328PU两块;洞洞板两块;面包板一块(后来没有用上);导线排针若干;常用阻容元件(搭建最小系统用)及电脑(不用多说了吧,还有相应的设备和软件)。
不能各老鸟比,菜鸟只能用手头的材料,哈哈哈

一、准备工作
当然是做最小系统,若使用面包板线跳来跳去太多太乱,还是做在洞洞板上吧。

基中有一块已经用328AU做了个仿UNO的板子了,为什么是“仿”,因为UNO板的低8位数字口和模拟口的引脚可以对到洞洞板的孔上,高8位数字口的引脚是对不到洞洞板的孔上的,差半个孔,这可能是UNO板在设计时,防止搭积木是误插考虑的吧,题外话了。这次在其基础上加了个28P的座,变成AU和PU封装通用的了,方便拆换。背面各种“飞仙”不忍目睹。
001.jpg
002.jpg
003.jpg
另一块只做了个最小系并用排针引出需要的脚。这个加了CH340C的TTL口,使用了些贴片。
004.jpg
005.jpg
006.jpg

二、查找FUSE值及BOOTLODER位置

1、凡是使用ATMEGA328构成的各种开发,在boards.txt中都找出来,准备烧写测试。
007.JPG
体情况见表格
008不同开发板情况.JPG
2、选择一个写好FUSE值并烧好相应的BOOT LOADER,测试其功能正常。做为上位机。

用此上位机做为ISP为目标芯片下载BOOT LOADER。
009不同开发板写入.JPG

三、两种不同BOOT LOADER有些不同
新版的BOOT LOADER叫做OPTIBOOT,是国外某位大神觉得老版的BOOTLOADER太过古董了,于是小宇宙爆发,就写了出来,所以在ARDUINO中选择BOOTLOADER时,路径会不同。
arduino uno相对于duemilanove的一个显著变化就是其bootloader,uno使用了新版的bootloader后,同样是328P芯片,使用空间有32256字节,而duemilanove只有30720字节。
新版bootloader的主要特点
1、可用空间大了,比起原来2K的体积,减少了接近1.5KB。(对于NG的古董bootloader也缩小了0.5K)
2、上传程序速度更快,新版的bootloader波特率是115200。
3、对代码进行了优化,提高了运行效率,而且无看门狗问题。

4、支持使用ATMEGA8 168 328等芯片的arduino。

四、互相伤害
开始伤害
010.jpg
011.jpg
这部分没有完全进行验证,一个是量太大,另一个就是熔丝设置不当,锁了芯片。
012不同开发板伤害.JPG
测试中发现,有时候烧入BOOT LOADER后,13脚的灯是不闪的。

五、感受
1、使用USBISP或USBASP写熔丝、烧写BOOT LOADER会更好些。如果手头没有这些设备,用ARDUINO AS ISP是一个不错的选择。
2、上位机的软件常用的有两个:PROGISP和AVR_fighter,个人觉着用AVR_fighter会更好些。为什么呢?自己有次用PROGISP直接写入HEX文件,结果报错,以为是偶然事件,没在意。后来和坛友一起折腾ATMEGA1280,又一次出现报错情况,后换了AVR_fighter就可以了。

3、ARDUINO使用同样芯片做的不同型号的开发板,其实就是内部的程序不一样,外部的板子不一样,方便不同用途,同时统一引脚,为搭积木提供方便。

六、花絮
1、USBISP与USBASP:
i. USBISP与USBASP分别是2个德国人的设计,在硬件上基本兼容,但内核软件有不同,尽管低层USB都采用开源代,但上层支持协议不同。USBISP是STK500v2conpatible (direct from AVR-Studio useable) 的,直接在AVR STUDIO中支持和使用。而USBASP需要使用专用的编程软。另外ASPISP的更新比USBASP。
ii、这两者硬件电路相同,固件程序不。
iii、两者使用的烧录软件不同,USBISP是模拟STK500下载线,所以可以使用AVR Stduio开发环境来下载烧录程序;而USBASP不能用AVR Stduio,但是现在网上很多支持USBASP的软件,比如PROGISP、AVR _fighter等。
iv、USBISP与并口ISP(STK200/STK300)的比较:
并口ISP(STK200/STK300)下载线需要PC带真正的LPT口,在ICC、CVAVR、BASCOM-AVR中可以直接使用。
USBISP使用USB口,只能在AVR STUDIO中使用(其它支持的不稳定)。
USBISP速度稍为慢一点(M8模拟USB……
2、改了一个TTL下载器,引出复位线,让其自动下载。

其实就是引出CH340C的DTR或RTS脚。这里将5线排针换策划6排针,并增加了三个排针用于3V3和5V的选择。换好后发现不能下载程序了。查了半天,原来是TDX的线断了,只好飞线。
IMG20190601100358.jpg
IMG20190601095506.jpg
IMG20190601095534.jpg
IMG20190601100336.jpg

最后,被锁的芯片使用有源晶振没有搞好,外接时钟从1M到4M都不行。
谢谢欣赏!!

打赏

参与人数 24家元 +438 收起 理由
亲爱的混蛋 + 16
moontree + 20 謝謝分享
ynqjzzh + 20 謝謝分享
miqi328 + 20 謝謝分享
10655188 + 16 謝謝分享
hover_730 + 16 謝謝分享
aacyxjz + 20 優秀文章
沙漠臭屁虫 + 20
snowrose2000 + 20 謝謝分享
hfsp + 20 謝謝分享

查看全部打赏

发表于 2019-7-24 16:47:31 | 显示全部楼层
围观大婶相互伤害:titter:
等牙膏ing

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2019-7-24 16:56:27 | 显示全部楼层
arduino下用USBASP烧过吗?
悄悄的说一下,USBASP换个驱动就可以,zdig试试驱动

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2019-7-24 17:43:15 | 显示全部楼层
谢谢楼主分享经验

打赏

参与人数 2家元 +22 收起 理由
wska + 20
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-7-24 20:17:54 | 显示全部楼层
不懂,强力围观
回复 支持 反对

使用道具 举报

发表于 2019-7-24 20:23:11 | 显示全部楼层
谢谢分享。。。。。。围观大婶折腾。。。。。

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-7-30 23:17:34 | 显示全部楼层
不懂不懂,围观大佬

打赏

参与人数 1家元 +2 收起 理由
jf201006 + 2 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-10-12 18:48:10 | 显示全部楼层
升级328p的用什么下载器,能不能使用usb-ttl?
回复 支持 反对

使用道具 举报

发表于 2019-10-18 16:34:36 来自手机浏览器 | 显示全部楼层
bg4rff 发表于 2019-7-24 16:56
arduino下用USBASP烧过吗?
悄悄的说一下,USBASP换个驱动就可以,zdig试试驱动

这个值得一试。
回复 支持 反对

使用道具 举报

发表于 2019-10-18 16:35:42 来自手机浏览器 | 显示全部楼层
duckyer1 发表于 2019-10-12 18:48
升级328p的用什么下载器,能不能使用usb-ttl?

usBαsp,USBⅠSP
回复 支持 反对

使用道具 举报

发表于 2020-2-1 23:30:14 | 显示全部楼层
学习了   回头把放下的 328p 再折腾起来
回复 支持 反对

使用道具 举报

发表于 2022-8-28 09:10:00 | 显示全部楼层
bg4rff 发表于 2019-7-24 16:56
arduino下用USBASP烧过吗?
悄悄的说一下,USBASP换个驱动就可以,zdig试试驱动

很好,这个可以有
回复 支持 反对

使用道具 举报

发表于 2024-3-5 11:50:06 | 显示全部楼层
使用原版arduino uno 作为isp 给 atmega328p-au刷bootloader,最后提示验证错误:>>>: avrdude.exe
Loaded 145 programmers and 347 MCUs
truSDX-initial_Bootloader.hex: 32,366 / 32,768 Bytes (98.77%)
>>>: avrdude.exe -c arduino -P COM4 -b 115200 -p m8
侦测到 1e950f = ATmega328P
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
>>>: avrdude.exe -c arduino -p m328p -P COM4 -b 115200 -e -U flash:w:"E:\truSDX-initial_Bootloader.hex":a -U lfuse:w:0xff:m -U hfuse:w:0xd6:m -U efuse:w:0xfd:m
avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x1e950f (probably m328p)
avrdude: erasing chip

avrdude: processing -U flash:w:E:\truSDX-initial_Bootloader.hex:i
avrdude: reading input file E:\truSDX-initial_Bootloader.hex for flash
         with 32366 bytes in 3 sections within [0, 0x7fff]
         using 253 pages and 18 pad bytes
avrdude: writing 32366 bytes flash ...
Writing | ################################################## | 100% 5.25s
avrdude: 32366 bytes of flash written
avrdude: verifying flash memory against E:\truSDX-initial_Bootloader.hex
Reading | ################################################## | 100% 4.10s
avrdude warning: verification mismatch
        device 0x11 != input 0x01 at addr 0x7e00 (error)
avrdude error: verification mismatch

avrdude done.  Thank you.

楼主能帮忙看看是怎么回事么?
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-3-29 03:11 , Processed in 0.171600 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表