M16_BL_232_11.0592M

所属分类:单片机开发
开发工具:C/C++
文件大小:21KB
下载次数:10
上传日期:2011-11-06 21:38:28
上 传 者cbighawk
说明:  AvrStudio环境下,Atmega16单片机的BootLoad程序,使用RS232接口,晶振为11.0592Mhz.
(AvrStudio environment, Atmega16 microcontroller BootLoad program, using the RS232 interface, the crystal is 11.0592Mhz.)

文件列表:
AVR_BL\default\dep\bootldr.o.d (1415, 2007-11-29)
AVR_BL\default\Makefile (1868, 2007-11-29)
AVR_BL\default\bootldr.o (9260, 2007-11-29)
AVR_BL\default\testBL.elf (8272, 2007-11-29)
AVR_BL\default\testBL.hex (4310, 2007-11-29)
AVR_BL\testBL.aps (3491, 2007-11-29)
AVR_BL\testbl.aws (473, 2007-11-29)
AVR_BL\bootldr.h (4750, 2007-10-14)
AVR_BL\bootldr.c (8358, 2007-10-15)
AVR_BL\bootcfg.h (1349, 2007-11-29)
AVR_BL\default\dep (0, 2007-10-15)
AVR_BL\default (0, 2007-10-15)
AVR_BL (0, 2007-10-15)

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆ ☆ ☆ AVR 通用 Bootloader 使用说明 ☆ ☆ AVR Universal 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写入校验 * 可以自定义用户程序区大小 * ... 程序版本 ======== v3.0 2007.Jun 修正了ATmega162中一个错误。 修改串口号的设定 通过了AVR GCC 4.1.2(WinAVR20070525)版本的测试 v2.0 2007.Apr.10 增加Flash写入校验功能,极大的提高了Bootloader的可靠性。 v1.2 2007.Apr.02 修正了串口寄存器计算中的一个隐含错误(这个错误很常见, 包括在很多书中和网上的程序中都能见到),造成部分波特率的 计算会出错。 同时修正了波特率误差判断。 v1.0 2007.Mar.22 第一版,实现全部基本功能,并扩展了XModem协议以适合不同的 应用(可变缓冲区长度和多种校验方式)。 开发环境 ======== 本项目的开发环境是:WinAVR + AVR Studio WinAVR版本: 20070525 AVR Studio版本: 4.13.528 本项目通过了WinAVR的多个版本的测试,但是早期的版本在编译某些型号的单片机中存 在一些Bug。 本项目中所有文件都以AVR Studio作为IDE进行调试,可以使用JTAG mk-II仿真器或其他 仿真工具进行调试。使用AVR Studio的好处是可以不用手工修改makefile文件,不容易 出错,降低了初学者上手的难度。当然也可以使用其他工具软件,如KamAVR、AtmanAVR、 PN等代替AVR Studio进行开发。 项目文件 ======== 整个Bootloader主要由以下几个文件组成: bootldr.c 主程序 bootldr.h 主程序的头文件 bootcfg.h 主程序的用户配置文件 bootldr.aps 主程序的AVR Studio的项目文件 test.c 串口通信的测试程序 testcfg.h test.c的配置文件 test.aps test的项目文件 readme.txt 本说明文件 readme.htm 本说明文件的HTML版本 因为很多人都有AVR Butterfly试验板,所以这里的项目文件都以AVR Butterfly为例。 如果使用了其它的硬件环境,只需要简单的修改配置参数。 使用方法 ======== 1. 建立一个新的项目,并将上面的文件复制到新项目所在的文件夹中; 2. 添加bootldr.c、bootldr.h、bootcfg.h三个文件到项目中; 3. 在bootcfg.h中修改配置参数,参数的含义见下面小节; 4. 设置项目的Flash段地址为Bootloader的起始地址,设置时注意地址是按照字(word) 计算的。同时还要设置单片机型号等相关参数(如果使用AVR Studio或KamAVR,可以 直接在IDE中设置;否则需要自行修改makefile文件); 5. 编译项目,产生最终的目标文件; 6. 使用编程器烧录Bootloader的目标文件到单片机; 7. 通过设置相应的加密位和熔丝位来选择Boot区大小和使能Boot Reset向量,以及配置 时钟信号; 8. 通过串口联机,进行升级测试。 主要参数 ======== 下面的参数很重要,请按照用户系统的要求仔细设置: BUFFERSIZE 串口缓冲区大小,使用超级终端时必须等于128。这个参数应当是单片机 页面大小SPM_PAGESIZE的倍数或约数 F_CPU 系统时钟频率(Hz) BAUDRATE 串口通信使用的波特率(bps) LEVELMODE Bootloader触发模式(0=串口 1=电平) timeclk 基本时间间隔(ms) TimeOutCnt Bootloader启动超时计数(<=255) TimeOutCntC 等待接收文件的超时计数(<=255) CONNECTCNT 联机密码长度 KEY 联机密码,任意16进制或字符串 COMPORTNo 串口号。单串口的单片机设置为0,多串口的单片机是使用的串口号,第 一个串口是0,第二个是1,以此类推 WDGEn 使能看门狗 RS485 使能RS485/RS422 RS485PORT RS485/RS422发送的控制端口(A/B/C/D...) RS485TXEn RS485/RS422发送控制的引脚(PC0/PC1/PC2...) LEDEn LED状态指示使能 LEDPORT LED使用的端口 LEDPORTNo LED使用的引脚 InitDelay 额外的延时(某些型号的单片机需要,如ATmega8) VERBOSE 提示模式,显示更多的提示信息,方便超级终端下的交互输入 CRCMODE 通信校验模式(0=XMODEM的CRC校验 1=简单的累加和) BootStart Boot区起始地址: 按字节计算 ChipCheck 校验写入的数据。这个参数必须和BootStart联合使用 支持型号 ======== AVR通用Bootloader已经在多种型号的AVR单片机中测试通过,下面是我测试过的型号: ATmega8 ATmeag*** ATmega128 ATmega168 ATmega169(Bufferfly) 下面是其他网友测试过的型号: ATmega16 ATmega32 ATmega162 如果你成功使用了不在上面列表中型号,请给我发EMail,以便及时添加到列表中。 常见问题 ======== 1.问:怎样保护Bootloader区? 答:为了保护Bootloader区本身不被意外改写,需要设置Bootloader区的保护。通常 是将BLB1锁定位设置成模2或3,禁止对Bootloader区写操作。此外设置BootStart 也可以保护Bootloader区,超过BootStart的数据将被Bootloader所忽略,不会写 入到Flash中。 2.问:为什么需要在bootloader中使用看门狗? 答:为了增加系统的稳定性,通常应当允许看门狗,这样在意外情况下可以由看门狗 将系统复位,防止在升级过程中进入死循环。 3.问:怎样使用超级终端作为上位机软件进行升级? 答:这个程序支持使用超级终端作为上位机软件进行下载。如果使用超级终端下载, 那么串口缓冲区的大小必须定义为128,同时要将等待密码和等待文件的超时时间 设置大一些(TimeOutCnt/TimeOutCntC和timeclk的乘积),避免来不及输入而超 时造成不能进入Bootloader模式;否则可以设置小一些,缩短启动带来的延时。 使用超级终端时,注意密码不要设置得太长,一般以1-3个字符为好,不然很难输 入成功。此外校验方式CRCMODE需要设置为 0,下载前还需要将用户的HEX目标文 件转换为BIN格式。下载时,在超级终端中输入联机密码后,在发送文件时选择标 准XMODEM协议就可以下载BIN 格式的用户程序了。 其实本项目中带的专用上位机下载软件也不错的,支持HEX和BIN文件格式,下载 时只需要按一下鼠标,适合于批量下载,推荐使用。 4.问:怎样判断串口通信是否正常(硬件连接是否正常)? 答:示例程序test.c可以用于测试系统的串口通信是否正常。程序运行时不断向串口 发送数据(默认是一个">"),同时检测串口是否收到数据。如果接收到数据,就 将发送的数据改为新收到的数据。可以用超级终端联机调试。如果在调试 Bootloader遇到问题,无法通信时可以先试试这个程序是否可以正常运行。如果 test可以正常运行,那么一般就没有太大的问题了。 5.问:为什么升级完后不能跳转到用户程序? 答:如果不能正确跳转到用户程序,一般有两种情况:一是使用的GCC编译器存在bug, 造成某些型号的单片机不能正确跳转。可以尝试升级GCC到新版本,也可以查看反 汇编代码进行分析(在AVR Studio的仿真模式下查看Disassemble,软件仿真或硬 件仿真模式都可以)。再就是某些型号的AVR单片机需要设置特定熔丝位。有的时 候,因为使用的编程器的问题造成没有正确设置熔丝位,造成无法跳转到用户程 序。 6.问:怎样裁剪掉不用的功能? 答:在bootcfg.h文件中有很多宏定义,将宏设置为0,或者设置为空就可以将其对应 的功能裁剪。比如不使用LED指示状态的功能,可以将宏LEDEn设置为0。 7.问:怎样减少Bootloader目标代码的大小,留出更多空间给用户程序? 答:可以裁减掉不必要的功能,如冗余的提示信息、LED状态指示、将CRC校验改为累 加和校验等。还可以打开程序的优化选项,选择代码大小优化。不同版本的GCC之 间的优化效果是不同的。此外C语言优化时具有一定的不确定性,选用代码大小优 化得到的最终代码有时并不是最小的。 8.问:是否可以支持其它C编译器? 答:本项目使用了WinAVR带有的GCC编译器,其它编译器目前没有试验过。IAR C编译 器和GCC最为接近,我想只要做很小的修改就可以了(AVR USB就是可以同时GCC和 IAR C编译器);其它编译器应当也可以,因为我在编写代码时,是尽量按照ANSI C的规范编写。可能需要修改的地方应该在头文件部分,以及一些寄存器的名称上 。不同的C编译器在声明同样的寄存器或参数时存在一些差异。 9.问:在什么地方可以下载本程序的最新版本? 答:在 http://shaoziyang.googlepages.com 或 http://shaoziyang.bloger.com.cn 上可以下载到最新版本。一般情况下我也会在OURAVR上提供最新的版本。如果有 任何建议,或者上述地址无法访问时,可以发EMail到 shaoziyang@gmail.com。 特别感谢 ======== 在此特别感谢下面这些为此程序做出贡献的人: 刘海涛 在程序编写和调试时提供了很多帮助和资料 tda1552 测试了ATmega32 徐延康 发现HEX文件转换中错误 倪恩伟 提出许多有用的建议 程翔 帮助翻译此文档成英文 以及很多没有留下姓名但提出宝贵建议或进行了测试的网友。 使用许可 ======== 本项目基于GPL协议。 邵子扬 2007.6 于武汉 e Y8b Y8b YV3.08P888 88e d8b Y8b Y8b Y888P 888 888D d888b Y8b Y8b Y8P 888 88" d888WuHan8b Y8b Y 888 b, d8888888b Y8b Y8P 888 88b, 8888 8888 ,e, 888 8888 888820078e " Y8b Y888P ,e e, 888,8, dP"Y ,"Y88b888 8888 8888888 88b888 Y8b Y8P d88 88b888 " C88b "8" 888888 8888 8888888 888888 Y8b " 888 ,888 Y88D,ee 888888 'Y88 88P'888 888888 Y8P "YeeP"888 d,dP "88 888888 888 88b, d8 888 888 888 88P' e88 88e e88 88e d88 888 e88 88e ,"Y88b e88 888 ,e e, 888,8, 888 8K d888 888bd888 8Shaoziyang88d888 888b"8" 888d888 888d88 88b888 " 888 88b,Y888 888PY888 888P 888 888Y888 888P,ee 888Y888 888888 ,888 888 88P' "88 88" "88 88" 888 888 "88 88" "88 888 "88 888 "YeeP"888 __ / _) /(_)(/ __ / (_ |_ _. _ _ o _.._ _ __)| |(_|(_) /_|\/(_|| |(_| / _|

近期下载者

相关文件


收藏者