• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

内部寄存器、外设寄存器和内存的区别

内部寄存器:指的是CPU内核里的寄存器,如r0,r1等;

外设寄存器:一般是指一些某一特殊功能的物理地址,外设寄存器的物理地址都在0x4800_0000~0x5FFF_FFFF,比如STM32中,GPIO、I²C、SPI、CAN都叫做外设寄存器。嵌入式通过编程来控制外设寄存器从而控制芯片外部的外设。

内存:内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。如RAM,SDRAM,Flash等。
物理地址:操作系统会给每一个内存单元编上一个绝对的号,计算机系统就通过这个编号来定为每一个内存单元的物理位置,这个编号称为内存的物理地址

s3c2440(CPU:ARM920t)是32位操作系统,可达4GB(0x0000_00000xFFFF_FFFF)的地址范围。但实际的内存可能用不了这么多内存,如,片内RAM的物理地址在0x0000_00000x0000_7FFF,SDRAM的物理地址在0x3000_00000x33fF_FFFF,外设寄存器的物理地址都在0x4800_00000x5FFF_FFFF。
mov指令:只能用于CPU内核寄存器(如r0,r1等)之间的数据传输;
ldr指令:用于从内存中读取数据至CPU内核寄存器里;
str指令:用于从CPU内核寄存器中读取数据至内存里。

外设内存映射机制
说到映射大家可能就会想到函数映射,其实外围设备的内存映射原理是一样的,只不过左边的集体变成了CPU,右边的集合变成了外围设备,那条带箭头的线就是连接CPU和外设地址引脚的地址总线。
要知道,一个开发板的CPU地址引脚并不是所有的都与内存元器件相连的,如果该板上有外设(如一块独立显卡),那么CPU就需要分出一些引脚来与该外设的地址引脚相连,相当于将一部分内存寻址的空间分给了外设,那不相当于CPU分出去地址寻址空间为空?非也,一般的外设为了加快处理速度都有自己的片内RAM(比如说显存,你也知道显存对显卡性能的重要性),分出去的地址空间也就与片内RAM物理连接起来,这样CPU就能像访问内存一样去访问外设的片内RAM,这也就是所谓的内存映射。

posted on 2021-11-14 19:48  SOC验证工程师  阅读(1973)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3