s3c2440a包含两个时钟模块, mpll和upll,mpll提供FCLK,HCLK和PCLK,upll是一个专用于USB模块。是时钟频率Fin经过pll电路提升频率后的两个时钟频率,
int main(int argc,char **argv)
{
int i;
uchar key;
uint mpll_val=0;
i=2;
switch(i){
case 0: //200
key=12;
mpll_val=(92<<12)|(4<<4)|(1); //mpll=200MHz的计算方法:mpll二进制值为0101 1100 0000 0100 0001即MDIV=0x92,PDIV=4,SDIV=1
//mpll=(2*m*Fin)/(p*2s) m=MDIV+8,p=PDIV+2,s=SDIV
//m=100,p=6,s=1,Fin默认为12MHz,所以mpll=(2*100*12)/(6*2)=200MHz
break;
case 1:
key=13;//300
mpll_val=(67<<12)|(1<<4)|(1);
break;
case 2://400
key=14;
mpll_val=(92<<12)|(1<<4)|(1);
break;
case 3:
key=14;
mpll_val=(92<<12)|(1<<4)|(1);
break;
default:
key=14;
mpll_val=(92<<12)|(1<<4)|(1);
break;
再cpu刚上电的时候不存在mpll和upll,当pll电路工作了一个lock time之后才产生,上电之初,FCLK=Fin,lock time之后,FCLK=mpll