<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 嵌入式系統快速重啟的研究

嵌入式系統快速重啟的研究

作者: 時(shí)間:2010-12-21 來(lái)源:網(wǎng)絡(luò ) 收藏

啟動(dòng)流程

① 上電,復位完成;② 嵌入式ARM核自動(dòng)把flash里面最低的4k啟動(dòng)代碼復制到SRAM里面,并從SRAM的0x0000_0000地址開(kāi)始執行;③ 完成一些必要的初始化工作,將FLASH中的代碼拷貝到SDRAM中;④ 跳轉到SDRAM中運行;通過(guò)以上步驟,就進(jìn)入了我們的應用程序,或者是操作系統。

在我們需要復位的時(shí)候, 即nRESET管腳出現一個(gè)向下的脈沖,即出現復位。當nRESET信號為低電平時(shí),ARM處理器放棄任何指令的執行,并從增加的字地址處取指令;當 nRESET信號變?yōu)楦唠娖綍r(shí),ARM處理器進(jìn)行如下操作:1.將當前的PC值和CPSR值寫(xiě)入R14_svc和SPSR_svc,已經(jīng)保存的PC和 SPSR的值是未知的;2.強制M[4:0]為10011(超級用戶(hù)模式),將CPSR中的“I”和“F”位設為1,并將T位清零;3.強制PC從0x00地址取下一條指令。4.恢復為ARM狀態(tài)開(kāi)始執行。即程序會(huì )跳到0x0000_0000這個(gè)地址位置,開(kāi)始執行上面所述的第三步和第四步。

我們知道從flash里面讀取數據比起SDRAM是想當慢的,而這里又要進(jìn)行一次代碼的拷貝工作,這也是一個(gè)相當長(cháng)的時(shí)間。不過(guò)這個(gè)時(shí)候我們可以發(fā)現,我們并沒(méi)有斷電,SDRAM里面放的數據還是我們代碼,我們沒(méi)有必要重新拷貝這些代碼了,在下次啟動(dòng)的時(shí)候,只需直接跳轉到SDRAM中運行,做一些初始化工作就可以了。這樣重新啟動(dòng)速度就相當迅速了。

思想

核心思想:在Bootloader里面,程序執行到復制程序的一塊,可以判斷PC當前計數在哪個(gè)存儲器里面,如果在SRAM中,就把代碼復制到SDRAM里面,如果在SDRAM中,就直接跳過(guò)復制程序這一段,然后繼續執行。

根據上面這個(gè)思想, 可以先將地址為0x0000_0000這里的跳轉指令直接改成跳轉到SDRAM存儲器,如LDR PC,=0x3000_0000。

這樣在Reset的時(shí)候,我們就可以直接從0x0000_0000地址跳到0x3000_0000開(kāi)始運行。這樣我們就達到了快速啟動(dòng)的目的。

如圖2 所示, 在系統加電的時(shí)候,程序從地址為 0x0000_0000開(kāi)始的SRAM處運行,如上圖1所示。


然后,程序在SRAM中將代碼自身復制到地址為0x3000_0000開(kāi)始處,如圖2中2所示。


關(guān)鍵詞: 嵌入式系統 快速重啟

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>