AVR通用Bootloader

http://bbs.ednchina.com/BLOG_ARTICLE_3004565.HTM
修正AVR通用Bootloader的两个bug发布时间:2012-06-03 21:33:08
技术类别:单片机 
 

最近在AVR通用Bootloader中发现了两个比较大的bug,在某些情况下会引起一些问题。因为完整的更新文件还没有整理,所以先发布一下错误修正:

Bug1:

 

在SafeMode下,跳转到Bootloader的地址计算错误。

解决方法

将文件Bootldr.c中的语句
  (*((void(*)(void))(BootStart)))();       //跳转到 bootloader
改为
  (*((void(*)(void))(BootStart/2)))();     //跳转到 bootloader
共有三处。
 

Bug2:

这个错误是国外网友Ben Wilson发现的,是一个比较严重的错误,在CRC校验错误时,将引起下载失败。在这种情况下,原来应该可以通过重新发送数据解决问题的,但因为这个bug,使得重发机制失效,容易出现“重试次数太多”。引起的原因是因为没有修正缓冲区指针,使得即使发送了新数据也没有保存到缓冲区的正确位置。

解决方法

在文件bootldr.c中,在第475和499行(V4.5版,其它版本行数可能不同),增加如下代码:

 

            bufptr -= BUFFERSIZE;             //修改缓冲区地址
 






















http://www.amobbs.com/thread-930003-1-1.html

(目前最新版本是v4.5)

基本介绍
========

这个程序的主要目的是为了提供一个具有通用性的 AVR Bootloader,不同型号的AVR单片机只需要修改一下几个简单的配置参数就可以直接使用了,不需要再修改主程序。因为现在网上流传的很多 Bootloader程序都是针对某个或几个特定型号的,在换用其它型号后,需要对程序进行较多的修改;而且很多Bootloader程序虽然实现了基本功能,但是存在着一些缺陷或隐患,或者使用起来不够方便,所以我写了这个程序。它是在网上流传的马潮老师的ATmega128 Bootloader程序的基础上,结合了我以前在PIC18单片机中使用Bootloader的一点经验,以及学习自AVR USB中一些使用宏定义的技巧,再经过多次优化和反复测试后得出的。

这个通用的Bootloader可以支持大部分具有自编程功能、带有Boot区和UART串口的AVR单片机(主要是Mega系列)。如果是多串口的单片机,可以任意选择使用其中的一个串口。程序支持RS232/RS485/RS422方式,如果程序稍加修改,也应当可以很容易的支持USI、SPI、I2C等接口。

整个Bootloader最大占用不到1K Word的空间。在最小情况下,占用的空间不到300 Word(具体占用空间的大小与单片机的型号、配置的参数、功能裁剪的多少以及程序的优化等级有关)。



主要特点
========
* 支持多种型号的AVR单片机
* 支持多串口的AVR单片机
* 支持RS232/RS485/RS422模式
* 支持多种通信波特率和时钟频率
* 自动计算波特率误差,如果波特率误差>2%,将给出错误提示
* 完全C语言编写,容易修改
* 代码高度优化,占用空间小
* 方便的功能裁剪,适应不同的要求
* 支持看门狗
* 支持使用LED指示升级状态
* 支持使用超级终端做为上位机下载软件
* 支持Flash写入校验
* 可以自定义用户程序区大小
* ...

更多内容请参考文件里带有的说明文档。

[4.5]
* 增加了安全升级模式

GCC源码
点击此处下载 ourdev_388493.zip(文件大小:27K) (原文件名:avrub_cn.zip) 
上位机软件(Win32)
点击此处下载 ourdev_388494.zip(文件大小:341K) (原文件名:avrubd.zip) 
上位机软件源码(Delphi7)
点击此处下载 ourdev_388495.zip(文件大小:139K) (原文件名:avrubd_src.zip) 


[4.2]
* 增加了128/256位AES加密解密算法
* 修正了看门狗初始化的宏定义笔误
* 修正了LED初始化在某些情况下造成RS485错误的问题
* 优化了部分代码,减少了代码大小

上位机软件(Win32)
点击此处下载 ourdev_325785.zip(文件大小:341K) (原文件名:avrubd_v42.zip) 

上位机软件源码(Delphi7)
点击此处下载 ourdev_325784.zip(文件大小:140K) (原文件名:avrubd_src_v42.zip)
(谢谢zxq6 小马哈帮助上传文件!)

GCC源码(中文版)
点击此处下载 ourdev_325322.zip(文件大小:26K) (原文件名:avrub_cn.zip) 

GCC源码(英文版)
点击此处下载 ourdev_325323.zip(文件大小:25K) (原文件名:avrub_en.zip)

[V4.1]
* 修正了MCUSR宏定义的问题
* AVRUBD中一处缓冲区调用的错误
感谢seu gab发现并解决了这个问题

上位机软件(Win32)
点击此处下载 ourdev_285382.zip(文件大小:338K) (原文件名:avrubd.zip) 
上位机软件源码(Delphi7)
点击此处下载 ourdev_285383.zip(文件大小:134K) (原文件名:avrubd_src.zip) 
GCC源码(中文版)
点击此处下载 ourdev_285384.zip(文件大小:23K) (原文件名:avrub_cn.zip) 
GCC源码(英文版)
点击此处下载 ourdev_285385.zip(文件大小:21K) (原文件名:avrub_en.zip) 

此外Jerry Jacobs建立了一个Linux下的上位机下载软件的项目, 因为我没有使用Linux, 所以请有条件的网友试用一下并提出意见.
http://code.google.com/p/avr-ub/

[V4.0]
* 增加了128/256位PC1加密解密算法
* 修正了一个下载大文件时出错的问题

GCC源码(中文版)ourdev_271222.zip(文件大小:23K) (原文件名:avrub_cn.zip) 
GCC源码(英文版)ourdev_271223.zip(文件大小:21K) (原文件名:avrub_en.zip) 
上位机软件ourdev_271224.zip(文件大小:338K) (原文件名:avrubd.zip) 
上位机软件源码(Delphi7)ourdev_271225.zip(文件大小:133K) (原文件名:avrubd_src.zip) 


[V3.5版]
AVR通用Bootloader中文版:点击此处下载ourdev_229535.zip(文件大小:21K)
AVR通用Bootloader英文版:点击此处下载ourdev_229436.zip(文件大小:19K)
AVR通用Bootloader上位机软件:点击此处下载ourdev_229437.zip(文件大小:330K)
AVR通用Bootloader上位机软件源代码(Delphi7):点击此处下载ourdev_229438.zip(文件大小:124K)


[V3.2版]
AVR通用Bootloader中文版:点击此处下载ourdev_222855.zip(文件大小:41K)
AVR通用Bootloader英文版:点击此处下载ourdev_222856.zip(文件大小:39K)
AVR通用Bootloader上位机软件(带有中文帮助):点击此处下载ourdev_222857.zip(文件大小:477K)
AVR通用Bootloader上位机软件源代码(Delphi7):点击此处下载ourdev_222858.zip(文件大小:239K)

AVR通用Bootloader中文使用教程:点击此处打开ourdev_222859.pdf(文件大小:405K)
特别感谢网友stephon1编写此中文教程


AVR通用Bootloader英文使用教程:
http://www.scienceprog.com/testing-avr-universal-bootloader-on-atmega128/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值