其實ARM9并沒有什么了不起的,和ARM7,6基本是一樣的,裸奔起來并沒有什么不同,個人感覺八錯!倒是那萬能的C語言卻是真的!
- U32 val;
- U8 m, p, s;
- val = rMPLLCON;
- m = (val>>12)&0xff;
- p = (val>>4)&0x3f;
- s = val&3;
- //(m+8)*FIN*2 不要超出32位數!
- FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;
- val = rCLKDIVN;
- m = (val>>1)&3;
- p = val&1;
- val = rCAMDIVN;
- s = val>>8;
- switch (m) {
- case 0:
- HCLK = FCLK;
- break;
- case 1:
- HCLK = FCLK>>1;
- break;
- case 2:
- if(s&2)
- HCLK = FCLK>>3;
- else
- HCLK = FCLK>>2;
- break;
- case 3:
- if(s&1)
- HCLK = FCLK/6;
- else
- HCLK = FCLK/3;
- break;
- }
- if(p)
- PCLK = HCLK>>1;
- else
- PCLK = HCLK;
- if(s&0x10)
- cpu_freq = HCLK;
- else
- cpu_freq = FCLK;
- val = rUPLLCON;
- m = (val>>12)&0xff;
- p = (val>>4)&0x3f;
- s = val&3;
- UPLL = ((m+8)*FIN)/((p+2)*(1<<s));
- UCLK = (rCLKDIVN&8)?(UPLL>>1):UPLL;
復制代碼
|