<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>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于S3C44B0X的Bootloader設計與實(shí)現

基于S3C44B0X的Bootloader設計與實(shí)現

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

BootLoader的stage1通常包括以下步驟(以執行的先后順序):

1) 硬件設備初始化。

2) 為加載BootLoader的stage2準備RAM空間。

3) 拷貝BootLoader的stage2到RAM空間

4) 設置堆棧

5) 跳轉到stage2的C程序入口點(diǎn)

BootLoader的stage2通常包括以下步驟(以執行的先后順序):

1) 初始化本階段要使用到的硬件設備

2) 檢測系統內存映射

3) 將內核映像和根文件系統映像從Flash讀到RAM

4) 為內核設置啟動(dòng)參數

5) 調用內核

4.的代碼

的Stage1初始化流程圖如圖3所示. Stage1部分主要內容及其代碼

30.jpg

/*中斷向量表用于處理異常情況,當發(fā)生異常情況時(shí),首先要保存當前程序的返回地址和CPSR寄存器的值,然后進(jìn)入到相應的異常向量地址。一般來(lái)說(shuō),在異常向量地址處放置無(wú)條件跳轉指令,使程序進(jìn)入相應的異常處理過(guò)程。*/
_ENTRY
B ResetHandler ;reset vector
B UndefinedHandler ;Undefined instruction
B SWIHandler ;SWI
B PrefetchHandler ;Prefetch abort
B AbortHandler ;Data abort
B. ;Address exception
B IRQHandler ;IRQ
B FIQHandler ;FIQ
……

/*復位入口,切換到超級模式并禁止中斷。在整個(gè)Boot Loader的初始化過(guò)程中我們都不必響應中斷,因此首先禁止系統的中斷。*/
MRS a1,CPSR
BIC a1,a1,#MODE_MASK
ORR a1,a1,#SUP_MODE
ORR a1,a1,#LOCKOUT ;關(guān)閉IRQ、FIQ中斷
MSR CPSR_cxsf,a1
LDR r0,=INTCON ;設置中斷模式,非向量中斷模式
LDR r1,=0x07 ;IRQ、FIQ中斷禁止
STR r1,[r0]
LDR r0,=INTMSK ;關(guān)閉所有中斷
LDR r1,=0x07ffffff
STR r1,[r0]
LDR r0,=SYSCFG ;使能回寫(xiě)buffer和Cache
LDR r1,=0xE
STR r1,[r0]
……
/*當必要的硬件初始化設置完畢后,接下來(lái)為核心代碼貯備RAM空間,包括RO、RW、ZI這3個(gè)段設置相應的內存映射向量,先將ZI段請零,然后將RO段復制到RW段中。由于在我們采用的微處理器里對于FLASH和RAM地址空間是使用的統一編址的,因此我們可以直接使用一個(gè)簡(jiǎn)單循環(huán)來(lái)完成拷貝。*/
move_data :
LDR a1,=Image_RW_Base ;RW段運行時(shí)的起始地址
LDR a2,=Image_RO_Limit ;RO段運行時(shí)的存儲區域界限
LDR a3,=Image_ZI_Base ;ZI段運行時(shí)的起始地址
CMP a1,a3
BEQ goto_main ;跳轉到C入口函數
move_loop : ;將RO段復制到RW段
LDR a4,[a2],#4
STR a4,[a1],#4
CMP a1,a3
BNE move_loop

存儲器相關(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>