惭愧,很久没看书,居然忘了大半。哎,看样子得努力哦,不然真要全忘完了。
我们在移植程序时要考虑CPU的频率,在S3C2410中,支持200~266MHz,当然,频率越高速度是会快的,功耗也会越高,不过至少要保证兼容性的前提下做。
在程序中,经常看到如下代码:
#define FCLK_SPEED 1
#if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
#define M_MDIV 0xC3
#define M_PDIV 0x4
#define M_SDIV 0x1
#elif FCLK_SPEED==1 /* Fout = 200MHz */
#define M_MDIV 0x5c
#define M_PDIV 0x4
#define M_SDIV 0x0
#endif
其实就是设置的MPLL控制寄存器(MPLLCON)以200MHz为例,即MPLLCON=0x5c040。
查看数据手册便知,MPLLCON寄存器位【12:19】为MDIV设置值,位【4:9】为PDIV设置值,位【0:1】为SDIV设置值。
Fout=((MDIV+8)*Fin)/((PDIV+2)*2^SDIV) 即 0x5c=92 计算为((92+8)*12)/((4+2)*2^0)=1200/6=200MHz
与时钟电源有关的寄存器有6组:
LOCKTIME PLL锁定时间寄存器
MPLLCON MPLL配置寄存器
UPLLCON MPLL配置寄存器
CLKCON 时钟控制寄存器
CLKSLOW 慢时钟控制寄存器
CLKDIVN 时钟比控制寄存器