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请求,采用该指令内部的处理方 ...
随机推荐
- ASP.NET MVC- Controllers and Routing- Routing
二.Creating Custom Routes In this tutorial, you learn how to add a custom route to an ASP.NET MVC ap ...
- NIO组件Selector工作机制详解(下)
转自:http://blog.csdn.net/haoel/article/details/2224069 五. 迷惑不解 : 为什么要自己消耗资源? 令人不解的是为什么我们的Java的New I/ ...
- QTableWidget 导出到表格
跳槽到了新的公司.開始苦逼的出差现场开发.接触到了新的应用.有非常多应用须要将Table导出成表格,能够把table导出成csv格式的文件. 跟大伙分享一下: lass TableToExcle : ...
- Android开发具体解释之ListView具体解释一
列表ListView介绍和实例 1.ListView -- ListActivity -- ListAdapter 2.ArrayAdapter结合ListView进行显示 3.SimpleA ...
- vim的全局替换
本文出自 http://blog.csdn.net/shuangde800 本文是在学习<使用vi编辑器, Lamb & Robbins编著>时在所记的笔记. 本文内容: 基本 ...
- android之TabWidget选项卡
1 概览 l TabWidget与TabHost.tab组件一般包括TabHost和TabWidget.FrameLayout,且TabWidget.FrameLayout属于TabHost. l ...
- android 68 单元测试
package com.itheima.junit; import android.os.Bundle; import android.app.Activity; import android.vie ...
- App升级时数据库的迁移更新
前一段时间在进行App升级的时候,由于一开始版本初期没有考虑完善,导致走了很多弯路,后来经过自己的一些思考,总结出了一些在app升级的时候,数据库内文件同步保持更新的经验,希望能给大家带来帮助. 总体 ...
- VC++判断是否连网
在开发中,需要判断是否有网络连接,于是写了个函数,实现代码如下: //判断是否有网络连接 static BOOL DoHaveInternetConnection() { BOOL bRet = FA ...
- plupload使用指南(转)
转自http://www.cnblogs.com/2050/p/3913184.html 现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SWFUpload显然就有点过时了,毕 ...