ok6410裸机代码:mcr p15,0,r0,c15,c2,4的解释

来源:互联网 发布:sql insert 编辑:程序博客网 时间:2024/04/28 16:36

google吧,耗费了半天时间,一点线索都没有,无奈之下,还是对比源程序仔细读手册吧,不过这时换成读arm1176jzf-s的文档了。 终于,在inticpu.s中看到这个指令: 

 ldr     r0, =(Peripheral_base+0x13)     

mcr     p15,0,r0,c15,c2,4 

这两条指令是把外设寄存器的地址告诉cpu的,难道是这里出了问题?于是把闪灯程序挪到这两条指令后面,再试,OK,令人激动的蓝色LED,终于像我的脉搏一样,欢快地跳动起来了。 原来,arm1176jzf-s把memory和Peripheral接口分开了,你需要在初始化时告诉cpu,哪些地址范围是属于Peripheral的,否则它就当memory访问,当然就访问不到属于Peripheral 区间的IO口寄存器了,所以灯也就不闪了。 这个问题,看似短短几句话就说完了,却着实为难了我好几天。


Google到上面的一段话后下载arm1176jzfs_r0p7_trm.pdf打开一看就明白了 

原创粉丝点击