jz2440 系統時鐘。時鐘控制邏輯給整個晶元提供了三種時鐘。
fclk:用於cpu核心
hclk:用於ahb匯流排上裝置,比如cpu核,儲存控制器,中斷控制器,lcd控制器,dma控制器,和usb主機模組,主要用於高效能模組
pclk:用於apb匯流排上裝置,比如watchdog,iis,i2c,pwm定時器,mmc介面,adc,uart,gpio,rtc和spi。
s3c2410 cpu 工作電壓1.8v 主頻200mhz
工作電壓2.0v 主頻266mhz
s3c2440 cpu 工作電壓1.2v 主頻300mhz
工作電壓1.3v 主頻400mhz
s3c2410/s3c2440外接的晶振頻率通常都很低,一般為12mhz。
通過時鐘控制邏輯的pll提高系統時鐘,s3c2410/s3c2440的pll有兩種
mpll(main pll):由於設定fclk,hclk,plck。
upll:專用於usb裝置
開發板上電時,由於pll並沒有啟動,故而fclk即等於外部的晶振時鐘,12mhz,要提高系統的時鐘,需要手動開啟pll。
mpll的三個暫存器:locktime、mpllcon、clkdivn.
(1)locktime:啟動mpll時,設定mpll的幾個暫存器後,需要等待一段時間,mpll的輸出才穩定,在這段時間內fclk停震,cpu停止工作。而停止時間由locktime設定
通常採取預設值即可,即使用時可不設定locktime暫存器。
(2)mpllcon:用於設定fclk和外部晶振fin的倍數。
[19:12]部分的值稱為mdiv
[9:4]部分的值稱為pdiv
[1:0]部分的值稱為sdiv
對於s3c2410來說
mpll(fclk)=(m*fin)/(p*2^s)
對於s3c2440來說
mpll(fclk)=(2*m*fin)/(p*2^s)
在兩種單板上均有 m=mdiv+8,p=pdiv+2,s=sdiv;
(3)clkdivn:用於設定fclk,hclk,pclk的比例
s3c2410
hdivn1 [2]位:0表示保留,此位通常設定為0,
1表示fclk:hclk:pclk=1:4:4,此時[1][0]必須為為00
hdivn [1]位:0表示hclk=fclk
1表示hclk=fclk/2
pdivn [0]位:0表示pclk=hclk
1表示pclk=hclk/2
s3c2440
hdivn1 [3]:通常為0
hdivn [2:1]:通常為01,hclk=fclk/2
pdivn [0]:通常為1,pclk=hclk/2
相比s3c2410開發板,s3c2440開發板還多了乙個camdivn暫存器,此暫存器用於提供攝像頭的時鐘控制。
常用設定**:
# define clkdivn 0x4c000014 /* clock divisor register */
ldr r0, =clkdivn
mov r1, #3 //[2][1][0]=011 fclk:hclk:pclk=1:2:4 ,對於s3c2410和s3c2440均成立
str r1, [r0]
當hdivn不為0時(通常情況下確實不為0),需將cpu匯流排模式從快速匯流排模式改為非同步匯流排模式,更改**如下
mrc p15,0,r0,c1,c0,0
orr r0,r0,#r1_nf:or:r1_ia
mcr p15,0,r0,c1,c0,0
如果在divn不為0時,沒有將cpu匯流排模式改為非同步匯流排模式,則cpu工作頻率自動變為hclk,而不是fclk。
jz2440的時鐘分析
s3c2440有兩個pll phase locked loop 乙個是mpll,乙個是upll。mpll用於cpu及其他外圍器件,upll用於usb。用於產生fclk,hclk,pclk三種頻率,這三種頻率分別有不同的用途 fclk是cpu提供的時鐘訊號。hclk是為ahb匯流排提供的時鐘訊號,ad...
Jz2440燒寫系統
linux 2.6.22 步驟 1 openjtag燒寫u boot oflash與檔案在同一目錄 oflash 0 1 00 0 u boot.bin 2 u boot下燒寫系統 tftp 關閉防火牆 tftp 30000000uimage 4.3 nand erase kernel nand w...
JZ2440學習筆記
1.easyopenjtag工具用於為目標板初次燒寫u boot再合適不過了。2.燒寫核心和檔案系統使用tftp nfs,速度是很快的哦。toc 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基...