极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 114373|回复: 58

arduino学习笔记25 - 给ATmega8使用新版arduino bootloader

  [复制链接]
发表于 2011-11-9 16:15:52 | 显示全部楼层 |阅读模式
arduino uno相对于duemilanove的一个显著变化就是其bootloader,uno使用了新版的bootloader后,同样是328P芯片,使用空间有32256字节,而duemilanove只有30720字节。

新版的bootloader叫做Optiboot,是国外某位大侠觉得老版bootloader太过古董了,小宇宙爆发,就写了出来。。。

新版bootloader的主要特点
1,可用空间大了,比起原来2K的体积,减少了接近1.5KB。(对于NG的古董bootloader也缩小了0.5K)
2,上传程序速度更快,新版的bootloader波特率是115200。
3,对代码进行了优化,提高了运行效率,而且无看门狗问题。
4,支持使用ATMEGA8 168 328芯片的arduino,未来可能会支持更多芯片。

可是现在的arduino IDE中,不管是ng,nano等老于uno的板子,还是一成不变的默认下载老bootloader,跟不上时代了。

自己动手丰衣足食,先解决最古董的ATmega8芯片,其他的就好说了。
先到http://code.google.com/p/optiboot/下载回来最新版本的optiboot。

以arduino 0022为例,为了更接近官方的那么简单的下载方法,我们先把解压缩出来的两个文件optiboot_atmega8.hex与optiboot_atmega8.lst放入
arduino-0022\hardware\arduino\bootloaders\optiboot中。




然后打开arduino-0022\hardware\arduino\boards.txt文件,在文件末尾下上下面代码。
  1. ##############################################################

  2. opti8.name=Arduino Optiboot8
  3. opti8.upload.protocol=stk500
  4. opti8.upload.maximum_size=7680
  5. opti8.upload.speed=115200
  6. opti8.bootloader.low_fuses=0xbf
  7. opti8.bootloader.high_fuses=0xcc
  8. opti8.bootloader.path=optiboot
  9. opti8.bootloader.file=optiboot_atmega8.hex
  10. opti8.bootloader.unlock_bits=0x3F
  11. opti8.bootloader.lock_bits=0x0F
  12. opti8.build.mcu=atmega8
  13. opti8.build.f_cpu=16000000L
  14. opti8.build.core=arduino
复制代码
重新启动arduino IDE,就可以在Board菜单中,看到新的板子Arduino Optiboot8了。

补充:1.0 IDE使用的boards代码
  1. ##############################################################

  2. opti8.name=Arduino Optiboot8
  3. opti8.upload.protocol=stk500
  4. opti8.upload.maximum_size=7680
  5. opti8.upload.speed=115200
  6. opti8.bootloader.low_fuses=0xbf
  7. opti8.bootloader.high_fuses=0xcc
  8. opti8.bootloader.path=optiboot
  9. opti8.bootloader.file=optiboot_atmega8.hex
  10. opti8.bootloader.unlock_bits=0x3F
  11. opti8.bootloader.lock_bits=0x0F
  12. opti8.build.mcu=atmega8
  13. opti8.build.f_cpu=16000000L
  14. opti8.build.core=arduino
  15. opti8.build.variant=standard

  16. ##############################################################
复制代码


我为了方便,用arduino duemilanove作为载体,给ATmega8下载bootloader,接线图如下,大家通过其他方法也都可以的。



我是用的是USBtinyISP,所以就在菜单中按照这个点击,开始下载bootloader。



同样是USBtinyISP,还可以使用avrdude gui进行下载,这种下载方式,对于下载器的支持更多。arduino的IDE也是avrdude下载的。

打开avrdude gui,以ATmega8为例,下载程序的设置界面如下。对于ATmega8,熔丝位hFuse为CC,IFuse为BF,lock Bit为0F。下载的bootloader文件为optiboot_atmega8.hex,点击Erase - Write - Verify进行下载。




烧录好bootloader以后。。该怎么用就怎么用,记得编译完程序后下载,板子要选择Arduino Optiboot8

附件为这次用到的新版bootloader,avrdude与其gui。







本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2011-11-11 08:07:49 | 显示全部楼层
这个启动后还会有8-9秒的延时吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-11 08:42:56 | 显示全部楼层
悠然小调 发表于 2011-11-11 08:07
这个启动后还会有8-9秒的延时吗?


我测试的好像没有这么长时间延时,你试试看~~~应该是有不少改善的。
回复 支持 反对

使用道具 举报

发表于 2011-11-12 17:43:50 | 显示全部楼层
请教“
avrdude gui,以ATmega8为例,下载程序的设置界面如下。对于ATmega8,熔丝位hFuse为CC,IFuse为BF,lock Bit为0F
这个是针对多少内部还是外部晶振的设置?如果是8M和16M外部晶振的话,要怎么设置?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-12 21:41:00 | 显示全部楼层
悠然小调 发表于 2011-11-12 17:43
请教“这个是针对多少内部还是外部晶振的设置?如果是8M和16M外部晶振的话,要怎么设置?

这个目前只能用在16M的。。。8M的还不支持。我目前是直接接在duemilanove板子上进行测试,理论上做16M晶振的最小系统也肯定没问题。
回复 支持 反对

使用道具 举报

发表于 2011-11-13 08:17:23 | 显示全部楼层
打开avrdude gui,以ATmega8为例,下载程序的设置界面如下。对于ATmega8,熔丝位hFuse为CC,IFuse为BF,lock Bit为0F。下载的bootloader文件为optiboot_atmega8.hex,点击Erase - Write - Verify进行下载。

用这样的方法下载完固件,然后可用同样的方法下载HEX的程序?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-13 10:05:48 | 显示全部楼层
悠然小调 发表于 2011-11-13 08:17
用这样的方法下载完固件,然后可用同样的方法下载HEX的程序?

下载程序就和以前最小系统用usb转串口下载程序方法米有区别了
回复 支持 反对

使用道具 举报

发表于 2011-11-15 08:01:43 | 显示全部楼层
avrdude gui,给最小系统下载HEX时,点击Erase - Write - Verify后显示avrdude成功,是不是表示下载成功的意思?不过最小系统没反应,放回arduino控制板,也是没反应,好像没下载成功饿样子。
回复 支持 反对

使用道具 举报

发表于 2011-11-15 08:05:09 | 显示全部楼层

avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.


avrdude.exe done.  Thank you.

显示这个信息是表示下载成功吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-15 08:43:05 | 显示全部楼层
悠然小调 发表于 2011-11-15 08:05
avrdude.exe: initialization failed, rc=-1
             Double check connections and try again, or ...

{:3_41:}我用gui下载时,都没有信息提示。。。。。要不你试试用arduino IDE下载的那个方法。。
回复 支持 反对

使用道具 举报

发表于 2011-11-15 22:03:27 | 显示全部楼层
终于用AVRDUDE-GUI下载程序成功了,这样就可以不用固件,省点空间,也没有启动时间的等待了。
回复 支持 反对

使用道具 举报

发表于 2011-12-16 19:55:17 | 显示全部楼层
今天终于试用了,果然比老版的启动快多了。
回复 支持 反对

使用道具 举报

发表于 2012-3-3 20:25:12 | 显示全部楼层
楼主 mega8 这个下载线可以自己做么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-3 20:31:46 | 显示全部楼层
xlsss 发表于 2012-3-3 20:25
楼主 mega8 这个下载线可以自己做么?

可以的。。网上有全套资料
回复 支持 反对

使用道具 举报

发表于 2012-3-8 12:03:16 | 显示全部楼层
我问一下,这个BT是只能给atmega8烧写?
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 03:10 , Processed in 0.043456 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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