系统时钟:MPLLCON设置
2016-06-02 01:16
253 查看
JZ2440开发板(ARM920T):
在做系统时钟实验时,发现在设置LOCKTIME、CLKDIVN、异步总线模式转换和MPLLCON之间要有足够的间隔时间,否则系统时钟不能正常倍频和分频。
void clock_init(void)
{
LOCKTIME = 0x02000200;
CLKDIVN = 0x03;
/*快速总线模式转到异步总线模式*/
__asm__(
"mrc p15, 0, r1, c1, c0, 0\n"
"orr r1, r1, #0xc0000000\n"
"mcr p15, 0, r1, c1, c0, 0\n"
);
MPLLCON = (0x5c << 12) | (0x01 << 4) | (0x02 << 0);
}
我尝试了2种解决办法:
1、中间加一句循环语句:“for (i = 0; i < 100; i++);”
void clock_init(void)
{
int i;
LOCKTIME = 0x02000200;
CLKDIVN = 0x03;
/*快速总线模式转到异步总线模式*/
__asm__(
"mrc p15, 0, r1, c1, c0, 0\n"
"orr r1, r1, #0xc0000000\n"
"mcr p15, 0, r1, c1, c0, 0\n"
);
for (i = 0; i < 100; i++);
MPLLCON = (0x5c << 12) | (0x01 << 4) | (0x02 << 0);
}
2、修改嵌入式汇编和MPLLCON设置的顺序
void clock_init(void)
{
LOCKTIME = 0x02000200;
CLKDIVN = 0x03;
MPLLCON = (0x5c << 12) | (0x01 << 4) | (0x02 << 0);
/*快速总线模式转到异步总线模式*/
__asm__(
"mrc p15, 0, r1, c1, c0, 0\n"
"orr r1, r1, #0xc0000000\n"
"mcr p15, 0, r1, c1, c0, 0\n"
);
}
在做系统时钟实验时,发现在设置LOCKTIME、CLKDIVN、异步总线模式转换和MPLLCON之间要有足够的间隔时间,否则系统时钟不能正常倍频和分频。
void clock_init(void)
{
LOCKTIME = 0x02000200;
CLKDIVN = 0x03;
/*快速总线模式转到异步总线模式*/
__asm__(
"mrc p15, 0, r1, c1, c0, 0\n"
"orr r1, r1, #0xc0000000\n"
"mcr p15, 0, r1, c1, c0, 0\n"
);
MPLLCON = (0x5c << 12) | (0x01 << 4) | (0x02 << 0);
}
我尝试了2种解决办法:
1、中间加一句循环语句:“for (i = 0; i < 100; i++);”
void clock_init(void)
{
int i;
LOCKTIME = 0x02000200;
CLKDIVN = 0x03;
/*快速总线模式转到异步总线模式*/
__asm__(
"mrc p15, 0, r1, c1, c0, 0\n"
"orr r1, r1, #0xc0000000\n"
"mcr p15, 0, r1, c1, c0, 0\n"
);
for (i = 0; i < 100; i++);
MPLLCON = (0x5c << 12) | (0x01 << 4) | (0x02 << 0);
}
2、修改嵌入式汇编和MPLLCON设置的顺序
void clock_init(void)
{
LOCKTIME = 0x02000200;
CLKDIVN = 0x03;
MPLLCON = (0x5c << 12) | (0x01 << 4) | (0x02 << 0);
/*快速总线模式转到异步总线模式*/
__asm__(
"mrc p15, 0, r1, c1, c0, 0\n"
"orr r1, r1, #0xc0000000\n"
"mcr p15, 0, r1, c1, c0, 0\n"
);
}
相关文章推荐
- 队列-循环队列
- 谈谈iOS网络编程之socket编程技术及应用
- Linux及安全实践三——程序破解
- 33 Spark worker原理与源码
- 抛弃EF,20分构建一个属于自己的ORM框架
- retain assign copy在@propeerty中的使用实际上是通过控制set方法进行内存管理
- Atom 编辑器 入门 快捷键 插件
- 人生的灯塔--写在25岁之后
- OC类的扩展总结
- Java设计模式——装饰者模式
- Ubuntu Server 14.04在VMware安装的一些事儿
- HUE的简单介绍
- SQL脚本
- [Java Concurrent] 并发访问共享资源的简单案例
- Python-Matplotlib安装及简单使用
- 跟我一起学习MySQL技术内幕(第五版):(第三章学习日记13)
- hdu1087
- 多线程下载并且实现断点下载
- Android_自定义View拖拽重绘
- leetcode 322. Coin Change