弘毅 发表于 2011-11-9 16:15:52

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

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文件,在文件末尾下上下面代码。##############################################################

opti8.name=Arduino Optiboot8
opti8.upload.protocol=stk500
opti8.upload.maximum_size=7680
opti8.upload.speed=115200
opti8.bootloader.low_fuses=0xbf
opti8.bootloader.high_fuses=0xcc
opti8.bootloader.path=optiboot
opti8.bootloader.file=optiboot_atmega8.hex
opti8.bootloader.unlock_bits=0x3F
opti8.bootloader.lock_bits=0x0F
opti8.build.mcu=atmega8
opti8.build.f_cpu=16000000L
opti8.build.core=arduino重新启动arduino IDE,就可以在Board菜单中,看到新的板子Arduino Optiboot8了。

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

opti8.name=Arduino Optiboot8
opti8.upload.protocol=stk500
opti8.upload.maximum_size=7680
opti8.upload.speed=115200
opti8.bootloader.low_fuses=0xbf
opti8.bootloader.high_fuses=0xcc
opti8.bootloader.path=optiboot
opti8.bootloader.file=optiboot_atmega8.hex
opti8.bootloader.unlock_bits=0x3F
opti8.bootloader.lock_bits=0x0F
opti8.build.mcu=atmega8
opti8.build.f_cpu=16000000L
opti8.build.core=arduino
opti8.build.variant=standard

##############################################################

我为了方便,用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。






悠然小调 发表于 2011-11-11 08:07:49

这个启动后还会有8-9秒的延时吗?

弘毅 发表于 2011-11-11 08:42:56

悠然小调 发表于 2011-11-11 08:07 static/image/common/back.gif
这个启动后还会有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 static/image/common/back.gif
请教“这个是针对多少内部还是外部晶振的设置?如果是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 static/image/common/back.gif
用这样的方法下载完固件,然后可用同样的方法下载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 static/image/common/back.gif
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

今天终于试用了,果然比老版的启动快多了。

xlsss 发表于 2012-3-3 20:25:12

楼主 mega8 这个下载线可以自己做么?

弘毅 发表于 2012-3-3 20:31:46

xlsss 发表于 2012-3-3 20:25 static/image/common/back.gif
楼主 mega8 这个下载线可以自己做么?

可以的。。网上有全套资料

Randy 发表于 2012-3-8 12:03:16

我问一下,这个BT是只能给atmega8烧写?
页: [1] 2 3 4
查看完整版本: arduino学习笔记25 - 给ATmega8使用新版arduino bootloader