eboot中MMU_SetAsyncBusMode函数的实现原理

chinesedragon2010 2010-09-26 08:08:01
MMU_SetAsyncBusMode被eboot中的startup调用用于把CPU的总线模式设置为同步模式,下面是其函数体,但我不是很清楚这个函数是怎么实现这个功能的,麻烦大家逐句分析一下,谢谢!

R1_iA EQU (1<<31)
R1_nF EQU (1<<30)

MMU_SetAsyncBusMode

mrc p15,0,r0,c1,c0,0
orr r0,r0,#R1_nF:OR:R1_iA//重点分析这一句
mcr p15,0,r0,c1,c0,0
mov pc, lr//这句就不用分析了。
...全文
226 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
l013269594 2011-08-13
  • 打赏
  • 举报
回复
顶,wo qu
tczp999 2011-07-22
  • 打赏
  • 举报
回复
ding
iwillbeback008 2011-07-04
  • 打赏
  • 举报
回复
严重的学习了
w22net 2010-09-28
  • 打赏
  • 举报
回复
ARM920T有三种时钟模式:FastBus(快总线模式),synchronous(同步模式), asynchronous(异步模式)
FastBus(快总线模式)
该模式将时钟BCLK作为时钟GCLK的源,时钟FCLK被忽略。主要用于带有高速存储器的系统。
synchronous(同步模式)
该模式主要用于带有低速存储器的系统。时钟BCLK和时钟FCLK作为时钟GCLK的源,BCLK用于控制AMBA存储接口,FCLK用于控制内部的ARM9TDMI处理器核和任何cache缓存的操作。 FCLK的频率必须比BCLK高且是其整数陪,且在FCLK是高电平时BCLK才跳变。
asynchronous(异步模式)
该模式主要用于带有低速存储器的系统。时钟BCLK和时钟FCLK作为时钟GCLK的源,BCLK用于控制AMBA存储接口,FCLK用于控制内部的ARM9TDMI处理器核和任何cache缓存的操作。FCLK的频率只需比BCLK高。

从上面的描述可以看出同步模式和异步模式的区别在于时钟BCLK和时钟FCLK的同步关系,在同步模式里FCLK必须比BCLK高且是其整倍数,且在FCLK高时BCLK才跳变,而异步模式则只要
FCLK比BCLK高就行了,对于FCLK与BCLK是否成倍数,是否有跳变的同步没有约束。

参考资料:1)2410.pdf 2)arm920.pdf 。
chinesedragon2010 2010-09-28
  • 打赏
  • 举报
回复
谢谢,学习了!
chinesedragon2010 2010-09-27
  • 打赏
  • 举报
回复
怎么就没有人回了呢?
凉拌菜 2010-09-27
  • 打赏
  • 举报
回复
以前看到这里的时候也不懂,顶一下
chinesedragon2010 2010-09-26
  • 打赏
  • 举报
回复
大家知道同步模式和快速模式之间的差别是什么?体现在哪里?
w22net 2010-09-26
  • 打赏
  • 举报
回复
orr r0,r0,#R1_nF:OR:R1_iA//重点分析这一句
这个只是通过或指令把协处理器15的寄存器c1的相关位置1 啊。置上1了就是同步模式啊。

mrc p15,0,r0,c1,c0,0 这是读协处理器的寄存器到r0

mcr p15,0,r0,c1,c0,0 这是把r0的值写回协处理器的寄存器


mov pc, lr//这句就不用分析了。

19,500

社区成员

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

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