Uboot之關閉看門狗、設置主機頻率、關閉中斷

目的:熟悉cpu初始化過程細節
題目:關閉看門狗、設置主機頻率、關閉中斷。
明細:
@ turn off the watchdog

#if defined(CONFIG_S3C2400)
# define pWTCON  0x15300000
# define INTMSK 0x14400008
# define CLKDIVN 0x14800014
#elif defined(CONFIG_S3C2410)
# define pWTCON  0x53000000
# define INTMSK  0x4A000008
# define INTSUBMSK 0x4A00001C
# define CLKDIVN 0x4C000014
#endif
@ 宏定義以S3C2410的SOC爲例:
@ pWTCON定義爲:看門狗計數器控制寄存器.
@ INTMSK定義爲:中斷控制寄存器.
@ INTSUBMSK定義爲:子中斷控制寄存器.
@ CLKDIVN定義爲:時鐘分頻控制寄存器.

#if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410)
ldr     r0, =pWTCON  @ 僞指令,(注:=號後邊跟的是立即數),把看門狗計數器控制寄存器地址存於r0
mov     r1, #0x0     @ r1 寫0,mov指令與ldr指令實現的功能相當,它們之間的區別是於尋址方式梢有差異
str     r1, [r0]     @ 非使能看門狗計數器,pWTCON中的最後一比特寫0表示不會輸出復位信號


@   mask all IRQs by setting all bits in the INTMR - default
 
mov r1, #0xffffffff  @ r1寫全1
ldr r0, =INTMSK      @ 中斷控制器的基址存於r1
str r1, [r0]         @ 注:因爲INTMSK是立即數,故不能寫成"str r1, INTMSK",關閉所有中斷源.(1表示非使能)
# if defined(CONFIG_S3C2410)
ldr r1, =0x3ff
ldr r0, =INTSUBMSK
str r1, [r0]
@ 分析同上.另外,子中斷有11箇中斷源,INTSUBMSK寫成0x3ff(0011 1111 1111).bit10對應的中斷源爲INT_ADC,此處寫爲0爲使能狀態,個人認爲應該最好寫爲0x7ff.*/


# endif

@ FCLK:HCLK:PCLK = 1:2:4 
@ default FCLK is 120 MHz !
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
@ 分析同上.時鐘分頻控制寄存器bit1(HDIVN)寫1表示HCLK=FCLK/2;寫0表示HCLK=FCLK.bit0(PDIVN)寫1表示PCLK=HCLK/2;寫0表示PCLK=HCLK.


#endif @ CONFIG_S3C2400 || CONFIG_S3C2410

發佈了31 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章