.AVR Boot Loader
文件名称:
文件编号: 第 1 页 共 5 页
修订历史记录
A - 增加 M - 修订 D - 删除
文件编号 日期 变更类型
(A*M*D
)
修改人 摘 要 备注
文件名称:
文件编号: 第 2 页 共 5 页
目 录
1 概述.................................................................................................................................................4
2 Atmega128 FLASH 程序区............................................................................................................4
3 自引导加载编程过程.....................................................................................................................7
4 自引导控制寄存器 SPMCSR........................................................................................................8
5 Boot loader 配置参数.....................................................................................................................8
6 AVR Studio 程序烧写使用方法.....................................................................................................9
7 AVR ATmega128 升级过程..........................................................................................................18
文件名称:
文件编号: 第 3 页 共 5 页
1 概述
设备在使用过程,需不断更新控制程序。即程序升级。AVR 单片机提供了引导加载自
编程功能,如 Atmega32、64、128 等单片机。应用 ATMEGA 系列单片机很容易实现程序
的远程下载升级,避免以往尚需外加一系列实现远程升级的外围芯片。
对 AVR ATMEGA 单片机引导加载自编程功能的描述,莫过于产品样本中的这段话:
ATMEGA 系列单机具备引导加载支持的用户程序自编程功能,可以由 MCU 本身来下载和
上载程序代码,实现系统程序自编制的更新机制。系统可以在 MCU 的控制下,通过驻留
于 Flash 程序存储器的 Boot Loader 程序,灵活地进行应用软件升级。Boot Loader 可以使用
该器件具有的数据接口和相关协议获得程序代码,并把程序代码写入 Flash,或者从程序储
存器读取代码。Boot Loader 区的程序可以写整个 Flash,包括 Boot Loader 区本身。因而
Boot Loader 可以对其自身进行修改,甚至将自己擦除。Boot Loader 存储器空间的大小可以
通过熔丝位进行配置。
对这段话的解读。就不得不从 At mega 单片机 Flash 程序区的结构讲起,详细论述其引
导加载自编程过程及引导程序。
2 Atmega128 FLASH 程序区
Flash 分成两个固定的区:可同时读写(RWW)区和非同时(NRWW)区。图 l 给出
了 RWW 和 NRWW 的分界。
文件名称:
文件编号: 第 4 页 共 5 页
RWW区
对RWW区内的某一页进行编程,可以从Flash中读取代码,但只限于NRWW区内的代码。
在Flash编程期间,必须保证没有对RWW区的读访问。如果在编程过程中试图读取位于
RWW区的代码(如果通过call/jmp指令或中断)。可能会终止于—个未知状态。为了避免这种
情况的发生,需要禁止中断或将其转移到Boot Loader区。Boot loader 总是位于NRWW存储
区。只要RWW区处于不能读访问的状态,存储程序存储器控制和状态寄存器(SPMCSR)的
RWW区忙标志位RWWSB置位。编程结束后。要在读取位于RWW区的代码之前清除
RWWSB。
NRWW区
在更新 RWW 区的某一页时,可以读取位于 NRWW 区的代码。
当 Boot Loader 代码更新 NRWW 区时,在整个页擦除或写操作过程中 CPU 被挂起。因
为通常自引导下载过程是调用自引导加载区的程序。由该程序对工作程序区进行代码写入
但如果要改变自引导加载程序自身,就有可能出现自引导程序改写自己,设想当引导程序
本身被毁掉了。因此 AVRATMEGA128 单片机对 NRWW 区进行改写时暂停 CPU 的工作,
但尚能将 Flash 缓冲区的代码写人到自引导加载区。
引导程序区和应用程序区。
Flash 分成两个区,应用程序区和引导程序区(Boot Loader 区)。两个区的存储空间大小
由 BOOTSZ 熔丝位配置。如表 l 所示。
文件名称:
文件编号: 第 5 页 共 5 页