打印

ARM7 CM-3关于内存操作指令的疑问

[复制链接]
1456|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
e08610318|  楼主 | 2013-3-5 11:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  小弟初学ARM相关指令。有些问题请前辈指教下哈
  看资料说RAM范围在0x20000000~0x3FFFFFFF,之前自己写指令向SRAM写一个数至0x20000000,发现值没变,一直都是0XAA(SRAM那一片全部是0XAA)。下一条指令
  加入偏移量,向0x2000000F写数据,这条指令执行完后就进异常了,是hardware fault
  小弟的第一个疑问是:这个范围内存的访问应该不受限制的,而且代码模式下的高权限访问也同样进入异常。

后来我自己用C写,通过看反汇编来看看编译器是怎么处理的。我发现全局变量好像都是从0x000003D8这个地址开始的,位于CODE区,而且使用指令
0x0000033A 4827      LDR      r0,[pc,#156]  ; @0x000003D8
小弟的第二个疑问是:这个指令有什么玄机啊?是怎么一个原理。 此外,CODE区编译器对于代码部分和数据部分(全局变量)是怎么分配的,有没有一些官方的资料说明?
另外,SRAM这个部分一般在什么情况下才用得到啊?

相关帖子

沙发
xinzha| | 2013-3-5 16:32 | 只看该作者
编译在什么位置由scatter loading文件来控制,相当于gcc中的lds,在arm的官方网站上可以找到。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:你可能不知道今天所做的事情会对未来有多大的干预能力!

67

主题

310

帖子

12

粉丝