ARM设置时钟开关的方法(使用PLL)
第一步:观察下面代码中r2=0x10001111
ldr r1, 0xE0100200
ldr r2, =0x10001111
orr r1, r1, r2 //orr用于将r1中一些位置1
str r1, [r0, #CLK_SRC0_OFFSET]
第二步:将0x10001111转换为二进制
第三步:结合数据手册中寄存器的用法,如下图,根据上图可知将bit28、bit12、bit8、bit4、bit0设置为1;将bit24、bit20、bit16设置为0.(在下图中用红色笔将要设置的数值勾出来)。
第四步:根据上图中以蓝笔画出来的各种MUX开关,在下图的时钟系统图中找到对应的MUX。然后根据设置的(bit28、bit12、bit8、bit4、bit0设置为1;将bit24、bit20、bit16设置为0)对MUX开关进行选择。如下图所示,用红线连接了时钟的选择流向。这样就设置了时钟的MUX开关。
【补充】S5pv210各时钟的典型值:
freq(ARMCLK) = 1000 MHz
freq(HCLK_MSYS) = 200 MHz
freq(HCLK_IMEM) = 100 MHz
freq(PCLK_MSYS) = 100 MHz
freq(HCLK_DSYS) = 166 MHz
freq(PCLK_DSYS) = 83 MHz
freq(HCLK_PSYS) = 133 MHz
freq(PCLK_PSYS) = 66 MHz
freq(SCLK_ONENAND) = 133 MHz, 166 MHz