首页 > 编程语言 >AVR汇编(二):AVR架构介绍

AVR汇编(二):AVR架构介绍

时间:2023-08-09 19:46:13浏览次数:33  
标签:汇编 架构 AVR ATmega328P 寻址 指令 寄存器 空间

AVR汇编(二):AVR架构介绍

ATmega328P介绍

ATmega328P是Atmel公司(现Microchip公司)推出的一个基于AVR架构的高性能低功耗单片机,拥有32KB的Flash、1KB的EEPROM以及2KB的SRAM等资源,具体如下表:

资源 主要特征
Flash 32KB
频率 16MHz
EEPROM 1024B
定时器 2个8bit,1个16bit
PWM 6通道
ADC 8通道10bit
比较器 1
GPIO 23
USART 1
SPI 1
TWI 1
看门狗 1
RTC 1
电压 0~8MHz @ 2.7~5.5V
0~16MHz @ 4.5~5.5V

如下图所示,ATmega328P的AVR核心通过数据总线与各个外设相连,另外也可以发现AVR采用的是哈佛架构,Flash和SRAM相互独立,通过不同的总线与AVR核心相连。

image.png

AVR内存空间

AVR内核包含两块内存空间:数据空间(data memory)和程序空间(program memory),另外,ATmega328P还包含额外用于数据存储的EEPROM空间(EEPROM memory)。

Program Memory

ATmega328P的程序指令存储在片上的32KB Flash中,由于AVR指令都是16位或32位的,因此Flash是以16位(1个字)为单元组织的,即16Kx16bit,地址空间为0x0000~0x3FFF。

ATmega328P的程序空间分为两个部分:Application和Bootloader。Bootloader存放在高地址处,大小可以通过fuse相关位进行配置,有256/512/1024/2048字4种选择。

可以通过 LPM 指令访问整个程序空间。

image.png

Data Memory

ATmega328P的数据空间大小为2303字节,由4个部分组成:

  • 寄存器堆:包含32个通用寄存器。
    • 通过 MOV / MOVW 指令访问,地址为0x00~0x1F。
  • I/O空间:包含64个I/O寄存器。
    • 通过 IN / OUT 指令访问时,I/O空间独立编址到0x00~0x3F;
    • 通过 LD / LDS / LDD / ST / STS / STD 访问时,地址为I/O地址+0x20;
    • I/O地址为0x00~0x1F的寄存器支持位寻址,可以通过 SBI / CBI / SBIS / SBIC 指令访问。
  • 扩展I/O空间:包含160个扩展I/O寄存器。
    • 只能通过 LD / LDS / LDD / ST / STS / STD 指令访问。
  • SRAM空间:2KB,地址从0x0100开始。

数据空间支持5种寻址方式:

  • 直接寻址(direct);
  • 间接寻址(indirect);
  • 带偏移的间接寻址(indirect with displacement);
  • 带前自减的间接寻址(indirect with pre-decrement);
  • 带后自增的间接寻址(indirect with post-increment)。

image.png

对SRAM的访问需要耗费2个CPU周期。

image.png

EEPROM Memory

ATmega328P拥有1KB的EEPROM空间,能够对其进行单字节的读写操作,需要通过 EEARHEEARLEEDREECR 寄存器进行访问。

AVR内核

如下图所示,AVR内核采用哈佛架构,程序空间和数据空间相互独立。指令以单级流水线方式执行,执行一条指令的同时预取出下一条指令。

image.png

AVR内核由ALU(算术逻辑单元)、 SREG (状态寄存器)、通用寄存器堆、 SP (最栈指针)、 PC (程序计数器)构成。

ALU能够以单周期的时间对32个通用寄存器进行算术、逻辑、位操作,一些实现中还支持乘法运算。

通用寄存器堆支持以下4种操作:

  • 1个8位操作数,1个8位结果;
  • 2个8位操作数,1个8位结果;
  • 2个8位操作数,1个16位结果;
  • 1个16位操作数,1个16位结果。

其中,只有 r16r31 支持立即数寻址,r26r31 可以两两组合为索引寄存器 XYZ ,供间接寻址时使用。

image.png

SREG (状态寄存器)包含8个标志位:

image.png

标志位 名称 描述
I 中断使能位 置位使能中断,使用 SEL / CLI 指令访问
T 传输位 使用 BLD / BST 指令访问
H 半进位标志 当bit 3向bit 4进位时置位
S 符号位 S = N xor V
V 溢出标志 结果超过符号数范围时置位
N 负数标志 结果是负数时置位
Z 零标志 结果为0时置位
C 进位标志 结果超过无符号数范围时置位

SP (堆栈指针)位于I/O空间,用于存储局部变量、中断和子程序的返回地址。堆栈从地址高处往低处增长, SP 指向下一个可用的位置(即空减栈)。

image.png

PC (程序计数器)指向下一条执行指令的地址。ATmega328P的 PC 为14位宽度,由于Flash存储单元是16位宽,所以可以寻址2^14=16K个字(即32KB)。上电时, PC 的值为0x0000。

参考资料

  1. ATmega328P Datasheet
  2. Programming and Interfacing ATMEL's AVRs

标签:汇编,架构,AVR,ATmega328P,寻址,指令,寄存器,空间
From: https://www.cnblogs.com/chinjinyu/p/17617636.html

相关文章

  • 全球优秀的架构师都在关注什么?
    随着云计算、大数据、移动化、人工智能等新技术的推动,企业架构也在不断向着更优化的方向演变。企业架构是一套庞大复杂的体系,涉及到数据如何流转,系统之间如何关联,底层数据如何打通等问题。企业需要一个“技术实现者”,那就是“架构师”。在数智化时代,企业要思考如何把核心竞争力和新......
  • AVR汇编(一):搭建交叉编译环境
    AVR汇编(一):搭建交叉编译环境几年间,陆陆续续接触了很多热门的单片机,如STC、STM8S、STM32、ESP32等。但一直都是抱着急功近利的心态去学习他们,基本上都是基于库函数和第三方组件进行开发,很少静下心来去研究这些不同内核单片机的底层工作原理。因此我打算接下来一段时间好好研究一番,......
  • 领域驱动设计(DDD)——架构设计
    系统与子系统系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能独立完成的工作能力的群体。子系统:也是由一群关联的个体组成的系统,多半是在更大的系统中的一部分。例如:汽车与发动机模块与组件都是系统的组成部分,从不同角度拆分系统而已。模块是逻辑单元,组件......
  • Bert Pytorch 源码分析:五、模型架构简图 REV1
    注意力FFNTF块整体架构......
  • 数据挖掘(五) -----基于Spark的可伸缩基因数据分析平台开源存储运算架构hail全面了解
    hail简介hail是一个开源的、通用的、面向python数据类型的处理基因数据专用的分析库和方法解决方案。hail的存在是为了支持多维度的复杂的数据结构,比如全基因组关联数据研究(GWAS).GWASTutorialhail的底层是通过python,scala,java和apachespark来实现的。hail官网gitlab官方文......
  • 云存储---ceph简介架构原理和一些基本概念
    Ceph简介Ceph是一个分布式存储系统,提供对象,块和文件存储,是一个免费开源软件的存储解决方案,可以部署于普通的x86兼容服务器上,可用于解决统一存储的io问题。Ceph诞生于2004年,最早是SageWeil一项关于存储系统的PhD研究项目,致力于开发下一代高性能分布式文件系统的项目。随着云计算的发......
  • 汇编-xor异或
     XOR指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作如果两个位值相同(同为0或同为1),则结果位等于0;否则结果位等于1【相同为0,不同为1】      ......
  • 深入浅出关于微服务架构实战指南:分布式系统的设计与部署技巧
    深入浅出关于微服务架构实战指南:分布式系统的设计与部署技巧微服务架构实战指南:分布式系统的设计与部署技巧摘要:随着互联网应用的快速发展,传统的单体应用架构已经无法满足高可用、可扩展、快速迭代等需求。微服务架构的出现为解决这些问题提供了一种新的思路。本文将深入探讨微......
  • nmon源码安装使用鲲鹏ARM架构下
     需要在信创环境使用nmon查看系统版本 安装依赖yuminstallwgetncurses-devel-y在准备放置nmon的位置创建一个新的文件夹并进入该文件mkdirnmoncdnmon下载源码相关文件wgethttp://sourceforge.net/projects/nmon/files/lmon16j.cwgethttp://sourceforge.......
  • RISC-V架构的演变
    随着苹果基于ARM的硅和新的RISC-VCPU的推出,对于CPU开发来说,这是一个令人兴奋的时刻,尽管开发人员的旅程目前对后者来说有点坎坷。我最喜欢的理论是,没有发生是孤独的,而只是重复了以前发生过的事情,也许经常发生过。马克·吐温认为,生活有重演的倾向。我们可以在苹果Macintosh的CPU......