bootloader系列四——時鐘初始化

2440的時鐘模塊如下圖(2440芯片手冊237頁) ,下載鏈接見上一篇博客。

S3C2440可以使用外部晶振(XTIpll)(默認爲12MHZ)
和外部時鐘(EXTCLK)兩種方式輸入時鐘信號。它由跳
線OM[3:2]決定。 S3C2440 默認的工作主頻爲12MHz
(晶振頻率),S3C2440有兩個PLL:MPLL和UPLL。通
過MPLL會產生三個部分的時鐘頻率:FCLK、HCLK、
PLCK。UPLL則負責產生USB所需時鐘UCLK。如下圖

 開發板上電後,時鐘初始化流程如下圖,剛通電時,FCLK爲晶振頻率12MHz,經過軟件配置及Lock Time之後,FCLK變爲高頻(本例中爲405MHz)。

 

從2440芯片手冊243頁可以看到下圖所示的信息

 

於是,可以總結出時鐘初始化的流程:

  配置Lock Time  —》 設置分頻係數  —》設置CPU總線模式爲異步模式  —》 設置FCLK

 

首先,

設置Lock Time的寄存器如下圖,(2440芯片手冊254頁)。但由於Lock Time一般取默認值,所以可以省去“配置Lock Time”這一步驟。

之後,

2440設置FCLK、PCLK、HCLK的比例關係如下圖所示,本例選1:4:8的比例。(2440芯片手冊242頁)。

設置分頻係數所使用的寄存器如下圖所示,(2440芯片手冊258頁) 

接下來, 

根據243頁的NOTES,將CPU總線模式設置爲異步模式。

最後,

設置FCLK的寄存器如下圖(2440芯片手冊第255頁)

 得到以上信息後,時鐘初始化的代碼如下

#define CLKDIVN 0x4c000014
#define MPLLCON 0x4c000004
#define MPLL_405MHZ ((127<<12)|(2<<4)|(1<<0))

init_clock:
	ldr r0, =CLKDIVN
	mov r1, #0x5
	str r1, [r0]
	
	mrc p15,0,r0,c1,c0,0
	orr r0,r0,#0xc0000000
	mcr p15,0,r0,c1,c0,0
	
	ldr r0, =MPLLCON
	ldr r1, =MPLL_405MHZ
	str r1, [r0]
	mov pc, lr

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章