Atmel AVR

title: 发展简史.
content: AVR架构最早由两名挪威理工学院(Norwegian Institute of Technology,NTH)的学生Alf-Egil Bogen和Vegard Wollan共同构思出来。  原始的AVR微控制单元由当地Trondheim的一所特殊应用积体电路(ASIC)工作室Nordic VLSI(现为北欧半导体)负责开发。当时它被称作μRISC(Micro RISC),还可使用Nordic VLSI的硅晶圆等基础材料来制作其芯片。当这些技术被Nordic VLSI卖给Atmel后,其内部架构被当时任职于Atmel挪威子公司的Bogen以及Wollan进一步发展。架构设计者们和来自IAR系统公司的编译器编写者们紧密合作,来确保指令集提供更高效率的高阶程序语言编译。  而在命名上,Atmel解释『AVR』这个名称不是某几个单词的缩写,也不代表任何特别的事物。AVR的创造者们也没有给出明确的关于『AVR』之表意的答案。然而,一般认为,『AVR』表示Alf (Egil Bogen) and Vegard (Wollan)'s RISC processor。而本文里用的『AVR』一般指8位元RISC的Atmel AVR微控制器的产品线。  首个AVR微控制器的产品线是AT90S8515,拥有和英特尔8051微控制器相同的40针双列直插封装(DIP),包括外部多路位址和资料总线。但RESET线和英特尔8051相反,8051的是高电平有效RESET,而AVR是低电平有效RESET,但除此以外,其它针脚是完全一致的。
title: 装置概览.
content: AVR是一个修改过的哈佛架构计算机,程序和资料分别储存在各自的拥有不同寻址空间的物理内存系统上,但有能力使用特殊的指令可从程序存储器内读取资料项。
title: 基本家族系列.
content: AVR分为六大家族系列:
title: 存储器架构.
content: 闪存、电子抹除式可复写只读内存(EEPROM)、以及静态随机存取内存(SRAM)都内建于一颗芯片上,在大部分应用中尽可能无需外部内存。一些装置拥有并列的外部总线选择以允许加入额外的资料内存或内存对映装置。几乎所有的装置(除最小规模TinyAVR芯片以外)拥有串行总线,可以用来连接更大的串行EEPROM或闪存。
title: 程序内存.
content: 程序指令被存储于非易失性的闪存上。尽管微控制器只有8位元,但每指令可以存取1至2个16位元的字节。  程序内存的容量大小常用于装置命名(如ATmega64x产品线拥有64KB的闪存,ATmega32x产品线拥有32KB的闪存)  不支援扩充程序内存,所有由AVR核心执行的程序码皆需要储存于内部的内存。然而AT94 FPSLIC AVR/FPGA芯片没有这种限制。
title: 内部资料内存.
content: 资料寻址空间由暂存器档案、输出/输入暂存器、和SRAM组成。
title: 内部暂存器.
content: AVR拥有32个的暂存器,分别为( R0 到 R31 )并被归类为8位元RISC装置。  在大部分AVR架构上,工作暂存器被对映为首位的32个内存位址(0000–001F)接着是64个输出/输入(I/O)暂存器(0020–005F)。  实际上SRAM是在这些暂存器分段(寻址为0060)后开启。(注意输出/输入暂存器空间在一些扩展装置上或许更大,使得加载内存对映I/O暂存器将占用一部分SRAM的寻址空间)  虽然有这些分开的寻址解决方案和最佳化的暂存器档案和I/O暂存器存取操作码,但它们全部都可以被加以处理和操作,就像它们都在SRAM上。  在XMEGA系列上,工作暂存器档案并没有对映到资料寻址空间上;正因为如此,不能将XMEGA的工作暂存器像是在SRAM上那样对待。作为替代,I/O暂存器被对映到资料寻址空间内非常靠前的位置上。另外,资料寻址空间中用作I/O暂存器的总数上大幅增加,容量达到4096字节(0000–0FFF)。然而,正如前代产品一样,快速I/O操作指令只可到达首先的64个I/O暂存器位置(首位的32个位置是给位元运算指令使用的)。往后的I/O暂存器,XMEGA系列预留了一个4096位元宽度位址空间范围,可被选作将内建EEPROM对映至资料寻址空间上(1000–1FFF)。实际可用的SRAM位于这些被占用的寻址空间以后,从2000开始。
title: EEPROM.
content: 几乎所有的AVR微控制器都拥有内建的EEPROM,用来提供半永久的资料存储。和闪存一样,EEPROM可在断电以后维持其内存储的资料。  在大部分的AVR架构中,内部EEPROM内存并没有对映到微控制单元的可寻址内存空间上。它只可和外挂的外围装置一样使用特别的指针暂存器和读/写指令来存取,这使得EEPROM的存取速度要比其它内建的随机存取内存(RAM)要慢不少。  然而,某些SecureAVR(AT90SC)家族系列的装置使用了一种特殊的EEPROM根据相关配置设定对映至资料或程序内存。XMEGA家族系列也允许EEPROM对映至西辽寻址空间上。  因EEPROM的擦写次数不是无限的——Atmel的技术细明规格表上标明是100,000次擦写周期——一个设计精良的EEPROM擦写常程序应比较EEPROM位址上的内容和请求写入的内容并在需要进行改变的位置处才真正执行写入操作。  注意,在很多情况下擦除和写入是分开执行的,以字节为单位进行,这有助于延长其使用寿命,因位元仅需全被设定为『1』(擦除)或选择性地置『0』(写入)。
title: 程序执行.
content: Atmel的AVR核心拥有二阶单级管线设计。这意味着处理器可以在执行现在的指令同时将下一个指令读取。绝大部分的指令执行仅需一到两个时钟周期,使AVR核心在众多8位元微控制器中是最快的。  AVR核心被设计为能够高效运行经编译的C语言程序,还内建了数个指针指令与之相适配。
title: 指令集系统.
content: AVR指令集系统相比其它大多数的位元微控制器的,正交指令集要多出不少,尤其是AVR当下的竞争对手英特尔8051以及其仿制品和PIC微控制器。然而,这不完全是固定的:  此外,一些芯片差异会影响代码的生成。代码指针(包括在堆叠上的返回位址)在芯片上是两个字节长度以及有高达128KB的闪存,但在一些更大的芯片上变成3个字节长度;并不是所有的芯片都有硬件乘法器;拥有超过8KB闪存的芯片拥有分支和附带更大范围的传唤指令;或者四者都有。  通常的规则指令集使得可直接使用C(或者甚至Ada)编译器来对AVR进行编程。GCC也在离目前相当长的时间以前就支援包括AVR在内的多种微控制器,而且还被广泛使用。事实上,Atmel也从为小型微控制器用的编译器的主要开发者当中征集并导入他们的作品。以确定高阶程序语言编译器中最常用的指令集特性。
title: MCU速度.
content: AVR系列可以很好地支援0～20MHz的时脉,某些装置更达到32MHz。更低功耗的作业一般需要一个较低的时脉。所有最近的AVR装置(Tiny、Mega、以及Xmega,但90年代的产品除外)有内建石英振荡器、可以不需要外接时钟或共鸣器电路。一些AVR装置还有一个系统时钟预定标器,提升系统时钟至1024。这个预定标器可以被软件执行时重新配置,允许对时脉进行最佳化作业。  因所有在暂存器R0至R31位址的运算作业仅需一个时脉,AVR可以拥有每兆赫(MHz)最高每秒一百万指令(MIPS),换言之一颗8MHz的AVR处理器拥有8MIPS的效能。从内存加载和储存资料需要两个时脉,分支也需要两个时脉。在一些较新的『3字节PC』上,像是ATmega2560的装置,分支操作会比之前的装置慢上一个时脉。
title: 开发.
content: AVR由于开发工具可轻易免费或低价获得,包括一些合适价格的开发板装置和免费的开发软件,而拥有庞大的开发群体。AVR也以众多不同的名义贩售,但它们都使用相同的基本核心,只是周边设备和内存的搭配不一样。每个系列的不同芯片之间的相容性相当好,尽管输出输入控制器的搭配会有所不同。  更多可参见#外部链接一节中与AVR开发的相关站点。
title: 编程界面.
content: 有多种方法可将程序加载至AVR芯片上。不同AVR家族系列的程序写入方法都各有不同。
title: 高电压平行.
content: 高电压平行编程(High voltage parallel programming,HVPP)是作为『最后手段』来使用,亦可能是以坏熔丝设定修复AVR芯片的唯一方法。
title: 开机加载程序(Bootloader).
content: 大部分的AVR型号可以保留一个开机加载程序区域,有256字节至4KB的大小,可储存多次编程的程序码。在复位后,首先执行bootloader,然后终止一些使用者运行的程序,当需要重新变成或跳转至主程序时。在任何界面可用时,程序码便可以进行重新编程,像PXE(预启动执行环境)一样,透过以太网适配器能读取加密处理的二进制资料。Atmel有关于许多总线接口的应用程序注释及源码。
title: ROM.
content: AT90SC系列的AVR芯片可以使用原厂掩模ROM而不使用闪存来作为程序内存。 因为在大批量生产基于AVR的特定功能控制器时,比起在开发阶段使用价格较高的闪存,在生产阶段使用掩模ROM可以有效提高成本效益。
title: aWire.
content: aWire是一种新的单线除错界面,可用于新版UC3L AVR32装置上。

Summary: Atmel AVR系列是一种基于改进的哈佛结构、8位元～32位元精简指令集(英语:Reduced Instruction Set Computing,RISC)的微控制器,由Atmel公司于1996年研发。AVR系列是首次采用闪存(英语:Flash Memory)作为数据存储介质的单芯片微控制器之一,同时代的其它微控制器多采用一次写入可编程ROM、EPROM或是EEPROM。

AVR microcontrollers: AVR is a family of microcontrollers developed since 1996 by Atmel, acquired by Microchip Technology in 2016. These are modified Harvard architecture 8-bit RISC single-chip microcontrollers. AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other microcontrollers at the time.