uboot-step 4 關(guān)閉看門狗和中斷
什么是看門狗
在嵌入式系統(tǒng)中镊叁,不可避免的會(huì)碰到系統(tǒng)運(yùn)行時(shí)出錯(cuò)的問題尘颓,有時(shí)候?yàn)榱耸瓜到y(tǒng)能夠自動(dòng)的進(jìn)行復(fù)位,就引入了看門狗的概念意系,實(shí)際上它就是一個(gè)計(jì)數(shù)器泥耀,到了一定的值后就會(huì)復(fù)位cpu,在程序中我們需要在計(jì)數(shù)器增加到這個(gè)值之前對(duì)這個(gè)計(jì)數(shù)器做一個(gè)復(fù)位清零的工作蛔添,俗稱喂狗痰催,使程序繼續(xù)運(yùn)行
為什么關(guān)閉看門狗
在系統(tǒng)初始化的時(shí)候,由于我們并沒有進(jìn)行喂狗的工作迎瞧,為了防止看門狗一直復(fù)位cpu夸溶,因此我們需要先將其關(guān)閉
如何關(guān)閉看門狗
通過查詢芯片手冊(cè),我們很容易的可以找到看門狗(watchdog)的控制方法凶硅,如下圖:
#define pWTCON 0x7e004000
disable_watchdog:
ldr r0, =pWTCON
mov r1, #0x0
str r1, [r0]
mov pc, lr
關(guān)閉中斷
當(dāng)系統(tǒng)初始化未完成的時(shí)候缝裁,開啟中斷也沒有什么用,因?yàn)槲覀儾]有中斷處理程序足绅,因此我們需要關(guān)閉中斷捷绑,防止中斷影響系統(tǒng)的初始化
中斷的關(guān)閉是通過向中斷使能清零寄存器寫1來完成的,具體如下圖:
disable_interrupt:
mvn r1,#0x0
ldr r0,=0x71200014
str r1,[r0]
ldr r0,=0x71300014
str r1,[r0]
mov pc, lr
August 1, 2016