三星arm的菜鸟问题

wtzmax 2008-06-05 08:24:10
三星4510b的代码定义中为啥地址有个基址?3ff0000

#define SFR_BASE 0x3FF8000
#define INTPND (*((volatile unsigned long *) (SFR_BASE + 0x4004)))
手册上如 INTPND写的是 0x4004

另外在初始化内存时下列代码是啥意思。能帮我注释并解释一下不?
;*******************************************************
; SDRAM System Initialize Data
;*******************************************************
LDR R0, =0x3FF0000 + 0x3010
LDR R1, =0x05503003
LDR R2, =0x04000060
LDR R3, =0x60
LDR R4, =0x60
LDR R5, =0x60
LDR R6, =0x60
LDR R7, =0x60
LDR R8, =0x14010380
LDR R9, =0x0
LDR R10,=0x0
LDR R11,=0x0
LDR R12,=0xce3383f0
STMIA R0, {R1-R12}

LDR R0,=0x3FF300C
LDR R2,=0x3FF3008
LDR R1,=0x0fffffff
STR R1,[R0]
STR R1,[R2]
LDR R3,=0x3ff5000
LDR R4,=0xff
STR R4,[R3]
...全文
224 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujinqiang 2008-06-27
  • 打赏
  • 举报
回复
帮顶,大家都是从菜鸟过来的。
graduated 2008-06-27
  • 打赏
  • 举报
回复
同意3楼和4楼
三星的手册上喜欢使用偏移量来表示地址,你得仔细看DATASHEET
此段程序就是对从0x3FF3010地址的特殊功能寄存器,什么功能查DATASHEET,然后利用STMIA多寄存器存储指令对这一段寄存器进行初始化配置。
samping 2008-06-26
  • 打赏
  • 举报
回复
/////////////////////////////
LDR R0, =0x3FF0000 + 0x3010
LDR R1, =0x05503003
LDR R2, =0x04000060
LDR R3, =0x60
LDR R4, =0x60
LDR R5, =0x60
LDR R6, =0x60
LDR R7, =0x60
LDR R8, =0x14010380
LDR R9, =0x0
LDR R10,=0x0
LDR R11,=0x0
LDR R12,=0xce3383f0
STMIA R0, {R1-R12}
/////////////////////////////
这段代码的主要意思是对寄存初始化
需要设置寄存值,按顺序排好R1-R12
然后利用类似压栈的方法,把R1-R12的值,设置到对应的寄存中,R0就是第一个寄存器的地址
samping 2008-06-26
  • 打赏
  • 举报
回复
三星的手册喜欢把寄存器用偏移地址表示,所以定义的时候需要把基址也写上
yqm_ll 2008-06-14
  • 打赏
  • 举报
回复
初始化寄存器的地址
sherlock_lai 2008-06-05
  • 打赏
  • 举报
回复
你这个INTPND是不是寄存器? 他的地址是不是0x3FF8000+0x004? 你查下手册
下面那段代码可能是入栈,或者保存东西,最后面的应该是对某寄存器读写吧,没弄过4510,不清楚,你查下手册这些地址是什么东西就清楚了

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧