ARM的STRB和LDRB指令分析
一、SDRAM
1、存储结构
SDRAM的内部是一个存储阵列。阵列就如同表格一样,将数据“填”进去。在数据读写时和表格的检索原理一样,先指定一个行(Row),再指定一个列 (Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理

这个单元格(存储阵列)就叫逻辑 Bank(Logical Bank,下文简称 L-Bank)。 由于技术、成本等原因,不可能只做一个全容量的 L-Bank,而且最重要的是,由于 SDRAM的工作原理限制,单一的 L-Ban k将会造成非常严重的寻址冲突,大幅降低内存效率。所以人们在 SDRAM内部分割成多个 L-Bank,目前基本都是 4个(这也是SDRAM规范中的最高L-Bank数量),由此可见,在进行寻址时就要先确定是哪个 L-Bank,然后在这个选定的 L-Bank中选择相应的行与列进行寻址。
2、引脚说明

DQM可以阻塞其对应的空间长度(8位)的有效性。例如,当LDQM有效时,如果输出时,将输出的[7,0]位置成高阻态;如果输入,则阻碍[7,0]的输入,也就是不能修改[7,0]的数据。当UDQM有效时,如果输出时,将输出的[15,8]位置成高阻态;如果输入,则阻碍[15,8]的输入,也就是不能修改[15,8]的数据。
3、S3C2440与内存相关的硬件电路图
SDRAM以两片32M的K4S561632构成64M的RAM存储为例进行说明。


4、对SDRAM访问的步骤
(1) CPU发出片选信号nSCS0有效,选中SDRAM芯片
(2) SDRAM中有4个L-Bank,需要2根地址信号选中一个,利用的是ADDR24和ADDR25
(3) 先后发出行地址信号和列地址信号。K4S561632的行地址数是13,列地址数是9。所以,当nSRAS有效时,ADDR2~ADDR14上发出的是行地址信号,它对应32位地址空间的bit[23:11];当nSCAS有效时,ADDR2~ADDR10上发出的是列地址信号,它对应32位地址空间的bit[10:2]。由于BANK6以32位宽度外接SDRAM,ADDR0、ADDR1恒为0,不参与译码。
(4) 找到存储单元后,被选中的芯片就要进行统一的数据传输了。
二、分析ldrb/strb指令
1、S3C2440有关ldrb/strb指令的描述

2、LDRB
ldrb指令会根据提供的地址,从数据总线中选择需要的字节。例如:
ldrb r0,0x30000000取的是0x30000000这个字的[7,0]
ldrb r0,0x30000001取的是0x30000000这个字的[15,8]
ldrb r0,0x30000002取的是0x30000000这个字的[23,16]
ldrb r0,0x30000003取的是0x30000000这个字的[31,24]
也就是说ldrb指令会先把0x30000000这个地址的字取出来,然后根据ldrb指令提供的地址选择合适的字节。
ldrb指令接下来要把取到的数据放在目的寄存器的低8位,然后将高24位填充为0。
3、STRB
STRB指令首先数据总线(整个字的四个字节)都填充上要写入的一个字节的数据。然后,外部存储系统激活合适的字节存储子系统去存储这一个字节的数据。
“外部存储系统激活合适的字节存储子系统去存储这一个字节的数据”这句话,我是这样理解的,以"strb r3,[r4]"为例进行说明。
假设r3 = 0x12 ,r4 = 0x30000001
STRB指令首先数据总线上都填充上要写入的一个字节的数据,也就是数据总线为0x12121212,访问的字地址是0x30000000。因为要存储一个字节的数据到0x30000001,而0x30000000这个字的其他单元不能更改,所以就将DQM0、DQM2、DQM3都有效,而不屏蔽DQM。这样在写入的过程中,只将0x12写入到0x30000001单元中,而其他三个单元不修改,从而完成strb指令规定的任务。
参考资料:编译器对变量存储地址的处理
ARM的STRB和LDRB指令分析的更多相关文章
- ARM上电启动及Uboot代码分析
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27698707 注意:由于文档是去年 ...
- [转]ARM平台下独占访问指令LDREX和STREX
参考:ARM平台下独占访问指令LDREX和STREX的原理与使用详解 全文转载如下: 为了实现线程间同步,一般都要在执行关键代码段之前加互斥(Mutex)锁,且在执行完关键代码段之后解锁.为了实现所谓 ...
- 实践中的Git常用指令分析
从工作开始,一直都在使用为知笔记(作为程序员需要知道的内容很多---不需要很深入理解,一段时不使用的东西可能就会忘记).但本周一同步不同PC端时,了解到为知会在2017/1/1开始收费! 既然收费了, ...
- [转帖]Linux中的find(-atime、-ctime、-mtime)指令分析
Linux中的find(-atime.-ctime.-mtime)指令分析 https://www.cnblogs.com/zhangjinjin01/p/5505970.html https://w ...
- 浅析ARM协处理器CP15寄存器有关指令:MCR\MRC
ref:http://blog.csdn.net/gameit/article/details/13169405 背景: 在uboot中,start.s中涉及到了 CP15 的有关操作.查阅有关资料, ...
- Linux中的find(-atime、-ctime、-mtime)指令分析
本篇主要对find -atime(-ctime..mtime)指令的用法.参数.运行情况进行分析 用法: find . {-atime/-ctime/-mtime/-amin/-cmin/-mmin} ...
- linux性能指令分析进阶篇
作为刚刚走入测试领域的我来说,对性能测试了解的也不是很深,只不过自己平常一直在收集资料,性能测试也没有那么神秘,也请广大测试小白不要陷入误区,其实性能测试跟功能测试关系并不大,即使你做10年功能测试, ...
- ARM学习笔记7——乘法指令
ARM乘法指令完成两个数据的乘法,两个32位二进制数相乘的结果是64位的4积. 其中: 1.“RadHi:RdLo”是由RdHi(最高有效32位)和RdLo(最低有效32位)链接形成的64位数,“[3 ...
- Nginx源码研究七:nginx的location指令分析
在nginx的配置文件nginx.conf中,我们在配置server的时候,会配置一下location指令,这个location指令是提供给用户来配置对于符合指令的http请求,采用该指令内部的处理方 ...
随机推荐
- MongoDB 复制集(二) 选举 自动故障切换
一 复制集的高可用性简介 复制集通过故障自动切换来实现高可用性,当主节点出现故障的时候,从节点可以通过选举成为主节点,而这个过程在大多数当情况下是自动进行的,不需要手动干预.在某些情况 ...
- jetty之安装,配置,部署,运行
上篇文章中详解了关于什么是jetty,后续文章主要是介绍jetty的使用.本章介绍jetty环境的配置及部署war包. 1. 安装 1. 先下载一个jetty的压缩包,下载地址:http://www. ...
- .net互转java 转行必备
.net与java其实是差不多的语言,学习起来只需要弄清楚差异及查库的方法,转起来还是很快的 以下列出几点,希望能给正在转行的你一些帮助 1,java与c#语言超详细对比 http://www.har ...
- 验证码 jsp生成
<%@ page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.* ...
- linux系统编程:进程间通信-mmap
进程间通信-mmap #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, int flags, in ...
- OpenJDK和Sun/OracleJDK 区别 与联系
首先要先明确之间,以及OpenJDK 6.OpenJDK 7.OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支.从前面介绍的Java发展 ...
- Chapter 2 - How to Add a sprite
Chapter 2 - How to Add a sprite 1. Add image resources 1.1add resources on win32 2. Add a sprite TIP ...
- iOS 应用性能测试的相关方法、工具及技巧
用户不喜欢等待.他们不关心也不应该关心一个应用初始化的时候需要什么,他们只想尽快地完成他们的任务.你的应用应该几乎是瞬间启动的,其界面应当如丝般顺滑.在充满竞争的软件市场中,应用的性能是关键的优势之一 ...
- android开发之记录ListView滚动位置
这个问题本身不难,但是由于项目中的需求太过于复杂,结果导致这个问题变得不是那么容易实现.在网上一搜,结果如下: 我不知道是who copy who?反正介绍的所谓的三种方法,第一种都是无法运行的,很明 ...
- Base64算法
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/4288372.html ...