/***************************************************************************************************************************
AVR 通用 Bootloader这个程序提供一个具有通用性的 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写入校验
- 可以自定义用户程序区大小
***********************************************************************************************/
我自己做了一个Atmega32的板子,在Atmega32中我使用了bootloder 。首先我下载了avr 通用 bootloader
的源代码和AVRUBD的windows PC端程序。编译avr universal bootloader的程序有两种方式:
1.可以通过AVRUBD的自动配置功能进行编译。
2.对程序的源代码的配置文件进行修改,手动编译。
这里我只对自动编译进行主要的阐述:
首先打开avrubd.exe 应用程序,对源程序进行自动配置编译:进入【操作】---->【》》自动生成配置代码】
(或者按F11),弹出自动配置对话框如下图。在这里我选择我的单片机Atmega32,选择时钟晶振7.3728Mhz,
波特率选择115200,然后单击【创建】保存配置文件在源程序的目录,然后立即选择编译bootloader,这样
bootloader就被编译完成。
通过ISP或者JTAG ICE将bootloader程序下载Atemga32的bootloader区,在这里要注意AVR单片机的
熔丝位的设置 ,boot区大小的设置。
熔丝位设置好以后,就烧写程序到flash的boot区。
然后打开AVRUBD.exe进入【选项】---》【AVR】并选择
进入【选项】---》【系统】并选择
进入【选项】---》【串口】并选择
在选项都配置好以后,打开编译好的bin文件或者hex文件,按黑色的【dn】
按钮进行下载。
最后会提示升级成功的提示。这样就算bootloader升级成功。
注意:在使用bootloder的烧写时要特别注意熔丝位的设置,要不然会导致升级失败。