shaoziyang 发表于 2008-3-2 17:25:55

AVR通用Bootloader

(目前最新版本是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写入校验
* 可以自定义用户程序区大小
* ...

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


* 增加了安全升级模式

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



* 增加了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)


* 修正了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/


* 增加了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)



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)



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/

linyu0395 发表于 2008-3-2 17:37:00

这个不错啊   多谢分享

armok 发表于 2008-3-2 18:25:59

谢谢。顶!

ghosthd 发表于 2008-3-2 22:08:27

好东西啊,谢谢楼主

longjunyi 发表于 2008-3-2 22:10:54

非常感谢,我正在找这方面的资料。

bozai 发表于 2008-3-2 22:16:51

不错!

admvip 发表于 2008-3-3 20:05:45

好东西!需要好好看看!

ilikemcu 发表于 2008-3-4 19:10:48

哇赛,天底下还有这么好的东东啊:)

一定要顶!感谢楼主啦!

zxq6 发表于 2008-3-4 19:18:02

顶,昨天刚刚测试通过了m16,在楼主帮助文件的指导下,2次通过。

ghost2 发表于 2008-3-4 19:27:54

计划用在产品中,谢谢楼主!

wanghm35 发表于 2008-3-4 19:28:12

好东西

eng5025 发表于 2008-3-13 08:27:43

下了3.5,顶一下

jsjh 发表于 2008-3-13 09:39:29

顶!m32中已使用

顺便问问,大家Boot 锁定位是怎么编程的?
我一般是BLB1模式3(0.0),BLB0模式4(0.1)。

zhoukun 发表于 2008-3-14 10:45:25

我需要1280 2560的啊

our_avr 发表于 2008-3-14 11:14:00

顶啊

fangmcu 发表于 2008-3-14 15:09:40

好东西,留个记号!!

chp1669 发表于 2008-3-14 16:05:14

好东西,谢谢分享!

wangxiaoacc 发表于 2008-3-19 17:09:25

记号,谢谢分享

D138138 发表于 2008-3-19 23:14:21

非常好,正在找,准备用到我们的一个产品中.谢谢楼主.

njyzp 发表于 2008-3-20 10:03:45

一直跟进中....,谢了

spy2008 发表于 2008-3-20 10:16:29

mark

AAVVRR 发表于 2008-3-20 11:45:04

太好,谢谢!

cndongj 发表于 2008-3-25 08:35:37

太好了,谢谢。

hmqxj 发表于 2008-3-26 23:48:26

算然已经工作了,但在bootloader方面了解的并不多,謝謝shaoziyang ,只从有了网络我就认为网上的东西只是索取,付出与否并不重要,但在我发现了ouravr以后,这种观点渐渐有了改变,到现在,我感觉自己已经成为了我们网站的一个成员,就好像是一家人一样,只要是在电脑旁我都会每天浏览我们的论坛,无论是业界高手还是稚嫩的新手,能在这样一方空间相互交流,单单这种做法就是一种享受!在每天的工作之后,轻松的浏览我们的网页,似乎这都成了习惯!谢谢站长,也谢谢shaoziyang ,我代表喜欢我们这个家园的所有主人说声:我爱你Ouravr!

shaoziyang 发表于 2008-3-28 10:16:14

谢谢hmqxj的支持。在技术飞速更新的时代,保守只会使自己固步自封,交流才会使大家一起提高。

XUEPENGBIN 发表于 2008-4-18 11:51:12

好东东,顶一下!!

hebj 发表于 2008-4-18 12:42:28

谢谢

eddia2000 发表于 2008-4-26 11:55:57

好用,谢谢!

weiwgml 发表于 2008-4-26 12:30:10

留着了

mcu5i51 发表于 2008-4-26 12:31:40

顶,收藏了

yongjie_luo 发表于 2008-4-29 13:52:36

谢谢楼主

halloween 发表于 2008-4-29 14:16:57

留个记号

sciencehero 发表于 2008-4-29 14:31:11

收藏,谢谢!

guoyuhuaxie 发表于 2008-4-30 09:27:54

好好研究一下

zhuzi1441 发表于 2008-5-8 23:18:22

好东西,又更新了,顶

linjpxt 发表于 2008-5-8 23:40:25

谢谢

benladn911 发表于 2008-5-9 01:02:22

都下载下来了。谢谢!

bubbyyby 发表于 2008-5-9 17:13:30

顶啊!
希望能有更多人来用

hanlin 发表于 2008-5-12 17:53:55

正好用上,谢谢lz

wanghu1232001 发表于 2008-5-20 18:00:06

楼主牛B!多谢了。。

knight_avr 发表于 2008-5-24 21:51:17

不错
收藏了
谢谢楼主!!!

taishandadi 发表于 2008-6-5 19:25:46

站位,

duqinglin 发表于 2008-6-13 14:54:12

good

jszhouchao 发表于 2008-6-13 21:29:22

谢谢,学习

cgbabc 发表于 2008-6-13 23:06:02

顶一个,呵呵

bjj9217 发表于 2008-6-14 00:19:37

顶一个!

microyao 发表于 2008-6-14 16:30:56

标记

525133174 发表于 2008-6-15 11:44:06

太好了,很方便,谢谢LZ

yaogang 发表于 2008-6-15 20:42:53

mark

foooboy 发表于 2008-6-19 15:33:52

4.1 版本放在哪里呢???

shawn_17 发表于 2008-6-20 09:41:18

好东东,不要沉下去

shalixi 发表于 2008-6-23 09:28:59

正好要用,谢谢lz

aysyjgw 发表于 2008-6-23 12:09:34

顶一下

caiyu 发表于 2008-6-28 23:20:52

不错,下了备用,谢谢

bjj9217 发表于 2008-7-15 12:19:59

顶!

rkfch 发表于 2008-7-25 09:45:46

sjzd 发表于 2008-7-27 16:47:36

问下

//Bootloader触发模式0:串口1:电平
#define LEVELMODE          0

#define LEVELPORT          D
#define LEVELPIN         PD7
//触发电平 1:高0:低
#define PINLEVEL         0



//这个是干嘛的 ?看了几个版本 都不一样啊

#define LEVELPORT          D
#define LEVELPIN         PD7
//触发电平 1:高0:低
#define PINLEVEL         0

sjzd 发表于 2008-7-27 19:01:03

OK了

avrdasm 发表于 2008-7-27 19:43:39

带AES256bit的编译后占多大ROM?

huanxian 发表于 2008-7-27 21:08:17

留个记号!!

rkfch 发表于 2008-7-27 21:38:26

反映一个问题:当使用4.2版的上位机软件AVRUBD时发现一个问题,当需下载的程序量很小时会报Floating point divison by zero!错误。而下比较的程序时却没有这个问题,我使用的是MEGA128,RS485方式。

shaoziyang 发表于 2008-7-28 09:07:16

To 58楼,编译后的大小与芯片的型号、编译器的版本有关。但是肯定在4KB之内。使用AES时,winavr20071221编译器编译的代码比winavr20080610小200多字节。如果希望AES编译后小于2KB,需要去掉中断向量表。

To 60楼,这个问题我在仔细检查一下,最好可以提供一个参考的文件。

blueroy 发表于 2008-7-31 17:43:07

发现上位机源代码4.2版的在DELPHI里面加载后缺东西啊。
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_364533.jpg
(原文件名:tt1.jpg)
请教如何在DELPHI7里面能成功编译那个源代码?

yayongzhang 发表于 2008-8-1 11:00:40

留个记号

lcqqcl 发表于 2008-8-1 16:27:17

今天在M128上的小程序已经通过,感谢感谢
但是大的程序还没通过
我有一个问题想请教一下:
假如我用bootloader下栽程序正在运行,怎么样才能用bootloader更新程序?
需要在我的应用程序里加什么语句吗?

knight_avr 发表于 2008-8-1 16:53:21

LS
我用在M8力也通过了,非常不错
我的思路是:自动更新时在我的程序里如果收到联机密码(联机密码需要复杂点) 马上就自动进入死循环(开启看门狗 1s钟定时),然后看门狗溢出复位,进入bootloader(还没试验过,正在改程序,还不知道看门狗复位会不会进入bootloader),
然后bootloader程序收到联机密码 就可以自动升级咯

shaoziyang 发表于 2008-8-1 20:37:20

To 62 楼:TGauge是标准的Delphi控件,在Sample组下面,对应的控件文件是dclsmp70.bpl。可能你安装的是简化版,完整版中包含有这个文件。

To 64楼:65楼的思路是正确的,我一般也是这么做的。使能BOOTRST熔丝位后,单片机复位时就会先进入Bootloader。在avrubd中有一个选项,就是在发送联机密码前先发送复位命令,就是干这个用的。也可以不等待看门狗复位,直接跳转到Bootloader程序。比如:

(*((void(*)(void))BootStart))();

上面BootStart就是Bootloader程序的入口地址,比如0x3800.

lcqqcl 发表于 2008-8-2 10:56:24

感谢楼主,BOOTLOADER,调试过了
请教,假如联机密码修了,在单片机程序怎样修改联机密码?

knight_avr 发表于 2008-8-2 16:54:40

to 【66楼】 shaoziyang
您好!
问一下 BOOTLOADER 上位机软件编译问题 我所有的组件都装好了,打开也没有提示哪个组件找不到
编译也成功了 但是运行的时候 出现如下错误提示:

注:程序代码没有任何更改

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_366693.JPG
(原文件名:ERROR1.JPG)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_366694.JPG
(原文件名:ERROR2.JPG)

经过设置断点跟踪,发现主界面的创建出现问题,好像式 mmoHEX这个控件创建出了问题
但是组件TsnyMemo 安装应该是没有问题的,应为我从新创建一个应用程序 ,放上此控件,编译和运行式正常的

出现上面的错误提示后 点击确定,然后强制再次接着运行,又出现如下错误提示,然后自动关闭了
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_366695.jpg
(原文件名:ERROR3.jpg)

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_366696.jpg
(原文件名:ERROR4.jpg)

knight_avr 发表于 2008-8-2 17:02:01

不从DELPHI7运行,而直接打开编译出来的执行文件,也会出现最后一个错误提示。
后来发现,自己编译的程序有1.18M 而 邵老师那里下载来的程序文件却只有349KB.

shaoziyang 发表于 2008-8-2 20:28:24

To 【67楼】 lcqqcl,计算机的联机密码必须是和单片机中一致的。一般是先确定单片机程序的参数,然后再设置计算机的通信参数。反过来当然也行,但是参数必须是对应一致的,不如就会产生错误。


不知道是不是HEX控件版本的问题。不同版本的控件有时因为缺少一些属性造成问题。下面是我使用的HEX控件,已经在Delphi7中编译。

我编译的文件也有1M多,为了减少下载的时间,用upx进行了压缩,所以看起来比较小。

HexEdit控件ourdev_366813.zip(文件大小:93K) (原文件名:HexEdit.zip)

knight_avr 发表于 2008-8-3 14:57:38

根据错误提示 右问题的是名字为   memohex控件 它是属于TsnyMemo   而不是 HexEdit
按提示所说是可能memohex的 rightedge 属性不存在;我下载的是http://synedit.sourceforge.net上的最新版本SynEdit-2_0_6.zipMirror

knight_avr 发表于 2008-8-3 15:14:32

在家里电脑上已编译通过 可以运行了 发图庆贺 以下是运行效果图
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_367357.JPG
(原文件名:未命名.JPG)


一样控件 就是不知道为什么 在公司的电脑上编译后运行就是出错

shaoziyang 发表于 2008-8-3 21:17:20

需要将原有控件完全删除后,再次安装才能成功。否则可能还是旧文件,造成编译失败。

li2587 发表于 2008-8-6 09:38:07

请问搂主有关AES 的问题,我有试用你的软件,发现同样的 明文数据块 经过你的程序加密后出来不同的 密文数据块,而这个特点非常有利于MCU 中未使用数据空间的填充数据 或 相同数据块 的隐蔽操作,但我很是困惑,因为我的程序只调用MCU 厂家写的标准AES 程序(我拿来与AES 规格资料上的程序对比过,发现是程序写法功能是一样的),其执行结果是:同样的 明文数据块 经过你的程序加密后而是出来相同的 密文数据块,而你的程序中使用了PC1, AES 两种加解密算法,是否你的程序结果是两种加密算法的结合出来的,而单独使用AES 算法就是出我的程序的结果。AES 算法的资料也找了一些来看,但还未理解到上述问题的原因,还望楼主指教!
另外如果真是PC1 算法加入的贡献,请问哪里有这个算法的介绍吗?我现在只找到了其代码,而像AES 那样的算法说明文件没有找到。
心里在想,AES 的算法这么高深,如果真是同样的 明文数据块 出 同样的密文,那不是相当于一个复杂化了的 XOR 运算了。
看到资料上有个 密钥调度表 的概念,是否在加解密过程中,每个数据块使用的密钥是按一定的顺序性取得 扩展密钥中的一部分,而解密就利用逆序 取得密钥?

zcllsn 发表于 2008-8-6 10:05:27

谢谢楼主,收藏下!

ningmeng7294 发表于 2008-8-8 13:53:51

留个脚印

hahahou2008 发表于 2008-8-16 01:58:07

xk2yx 发表于 2008-8-26 19:40:01

MARK

rcengtian 发表于 2008-9-3 08:53:01

请问:bootloader下载到Boot Flash中的大小,最大为1K吗?如果超出1K怎么办?

shaoziyang 发表于 2008-9-5 22:49:13

Boot区的大小与单片机型号有关,Mega8有2K,Mega128有8K。同时在熔丝位中,可以选择4种不同大小的Boot区。

yxlcarter 发表于 2008-9-9 10:18:40

好东西啊,谢谢楼主

yxlcarter 发表于 2008-9-9 19:50:43

我怎么不行啊,晕死。
下面是我的操作步骤:
1、在AVR STUDION 新建工程,添加bootldr.c、bootldr.h、bootcfg.h三个文件到项目中。
2、打开AVRUBD,选择M8,点推荐,点创建。
3、在AVR STUDIO 窗口下,编译文件,用SLISP烧写程序。
然后就观察到,led闪烁。
4、AVRUBD载入HEX文件(选择一个简单的HEX文件,控制LED闪烁)。
在窗口看到;发送联机密码:64
发送10次后,联机失败。
是哪里有问题啊。搞很久了,是我哪里设置不对吗?

thoro_avr 发表于 2008-9-10 08:01:54

farmer 发表于 2008-12-5 16:19:31

好资料,下载研究研究后发现有个疑问:对于ATmega48的bootloader应该怎么处理?

shaoziyang 发表于 2008-12-9 08:44:32

ATmega48没有专门的boot区,不能直接使用avrub。

shanlei300 发表于 2008-12-9 09:08:35

得好好看看

em78p156 发表于 2008-12-20 13:31:20

能否将CPort, SynEdit传上来,谢谢!



本贴被 Joyce 编辑过,最后修改时间:2008-12-20,16:58:50.

zqljg 发表于 2008-12-21 17:10:45

已经将delphi写的上位机改成用VC写的,应用在我的LED点阵屏控制卡上了,非常好有,严重感谢楼主,另外程序中用到的CRC16的校验法很好,不但起到校验作用还起到检验通信是否正常,谢谢!

i387DX 发表于 2008-12-21 19:16:04

好东西……

wcm_e 发表于 2008-12-21 22:21:29

试一试

helloavr 发表于 2008-12-30 16:15:24

请问显示这个错误是怎么回事啊??http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_565244.JPG

 (原文件名:New Bitmap Image.JPG) 

shaoziyang 发表于 2008-12-31 21:28:05

你选择的单片机型号是Mega8,但是没有PORTA。默认LED使用了PA4,这是Mega169的设置,你需要修改一下。

wumei 发表于 2009-1-13 17:54:35

好东西正想学.

zqljg 发表于 2009-2-21 22:13:31

没有问题的,问题是你没有认真看源代码,看懂源代码就会解决问题,那来这么多问题啊!问题都是来源于自身!

wcm_e 发表于 2009-2-22 12:17:59

MARK

wanyou132 发表于 2009-3-3 14:37:55

mark

cgbabc 发表于 2009-3-3 15:55:51

支持一个,以后用得着,哈哈

snakey 发表于 2009-3-3 16:48:32

mark!

DeKaron 发表于 2009-3-3 17:29:46

这个要顶了
页: [1] 2 3 4 5 6 7
查看完整版本: AVR通用Bootloader