亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 44b0init.s

?? 44B0啟動原代碼
?? S
?? 第 1 頁 / 共 2 頁
字號:
    ;*  change BDMACON reset value for BDMA *   
    ;****************************************
    ldr     r0,=BDIDES0       
    ldr     r1,=0x40000000   ;BDIDESn reset value should be 0x40000000  
    str     r1,[r0]
    ldr     r0,=BDIDES1      
    ldr     r1,=0x40000000   ;BDIDESn reset value should be 0x40000000  
    str     r1,[r0]
    ;****************************************************
    ;* Set memory control registers     *  
    ;****************************************************
    ldr     r0,=SMRDATA
    ldmia   r0,{r1-r13}
    ldr     r0,=0x01c80000  ;BWSCON Address
    stmia   r0,{r1-r13}
    ;****************************************************
    ;* Initialize stacks        * 
    ;****************************************************
    ldr     sp, =SVCStack ;
    bl     InitStacks
    
    ;****************************************************
    ;* Setup IRQ handler        *
    ;****************************************************
 ;Setup IRQ handler 主體就是將0x0處的異常表搬運到_IRQ_BASEADDRESS,并設置irq服務(none vector mode)
 ;為什么要這么做?中斷發生時不是自動轉到0x0處的中斷異常表嗎?
 ;莫非日后,再修改此表使他指向_IRQ_BASEADDRESS處?這樣都在ram中,加快速度???
 ;————不是的!!!看一下分析即可知道。
 
 
 ;下面這段代碼看似將_IRQ_BASEADDRESS + 0x100之后的0x100全部初始化為_IRQ_BASEADDRESS
 ;事實上,結合44b.h中的isr部分就清楚了,那里是安裝isr的地方,而起始地址正是_IRQ_BASEADDRESS + 0x100!
 ;當irq到來時,無論是非vector mode還是vector mode,都要跳轉到HandleXXX處,
 ;而HandleXXX的首地址正是(_IRQ_BASEADDRESS+0x100)!
 
 ;再回顧一下中斷或異常到來后的行為:
 ; 1,異常發生
 ; 2,轉到0x0為首地址的異常表
 ; 3,根據異常類型,轉入某個項,比如SWI
 ;  ldr    pc, =(_IRQ_BASEADDRESS + 0x08)    ;    HandlerSWI
 ; 4,那么(_IRQ_BASEADDRESS + 0x08)處放的是什么呢?
 ;  見下表
 ;    ^ (_IRQ_BASEADDRESS)
 ;    HandleReset     # 4
 ;    HandleUndef     # 4
 ;    HandleSWI       # 4
 ;    ...
 ; 由此可知HandleSWI是位于_IRQ_BASEADDRESS + 0x08處的,而44b.h中定義:
 ;  #define pISR_SWI (*(unsigned *)(_IRQ_BASEADDRESS+0x8))
 ; 我們可以安裝這個異常處理函數!
 
 ; irq到來時,情況差不多。
 ; A) 如果是vector mode
 ;  那么直接載入0x20開始的指令,比如ldr pc,=HandlerEINT4567 ;
 ;  HandlerEINT4567的定義可知:
 ;        ^ (_IRQ_BASEADDRESS+0x100)
 ;     HandleADC     # 4
 ;     HandleRTC     # 4
 ;     ...
 ;     HandleEINT4567  # 4
 ;  他位于_IRQ_BASEADDRESS+0x154處,而44b.h中定義:
 ;   #define pISR_EINT4567 (*(unsigned *)(_IRQ_BASEADDRESS+0x154))//0x74))
 ;  于是我們可以安裝處理函數。
 ;
 ; B) 如果是none vector mode
 ;  那么僅在裝入HandlerEINT4567時方法不同,它是通過判斷程序來完成的,剩下的步驟還是相同的。
 
 
    ldr     r0,=(_IRQ_BASEADDRESS + 0x100)
    ldr     r2,=_IRQ_BASEADDRESS
    add     r3,r0, #0x100            ;r3指向_IRQ_BASEADDRESS+0x200處
0    
    CMP     r0, r3      ;do what?  <- 哈哈,我知道了,居然你們立宇泰的人不知道!!!
    STRCC   r2, [r0], #4;cc:Carry clear;save R2 to R0 address, R0 + 4=R0。
    BCC     %B0
    
 ;----------------------------------------------------------------------------------------
 ;將0x0處的vector table 拷貝到 _IRQ_BASEADDRESS(0xc000000)
    ldr     r1,=_IRQ_BASEADDRESS            
    ldr     r0,=ExceptionHanlderBegin ;if there isn't 'subs pc,lr,#4' at 0x18, 0x1c
    ldr     r3,=ExceptionHanlderEnd
0    
    CMP     r0, r3              ;put the vector table at _IRQ_BASEADDRESS(0xc000000)
    LDRCC   r2, [r0], #4  
    STRCC   r2, [r1], #4
    BCC     %B0
            
 ;----------------------------------------------------------------------------------------
 ;下面代碼將非向量模式下的中斷判斷處理函數拷貝到_IRQ_BASEADDRESS+0x80(0xc000080)
    ldr     r1,=DIsrIRQ     ;put the IRQ judge program at _IRQ_BASEADDRESS+0x80(0xc000080)       
    ldr     r0,=IsrIRQ      ;if there isn't 'subs pc,lr,#4' at 0x18, 0x1c
    ldr     r3,=IsrIRQEnd
0    
    CMP     r0, r3
    LDRCC   r2, [r0], #4
    STRCC   r2, [r1], #4
    BCC     %B0
 ;----------------------------------------------------------------------------------------
 ;將非向量模式的中斷處理函數裝入_IRQ_BASEADDRESS處的HandleIRQ
    ldr     r1, =MyHandleIRQ   ;MyHandleIRQ point to DIsrIRQ
    ldr     r0, =ExceptionHanlderBegin
    ldr     r4, =_IRQ_BASEADDRESS;////
    sub     r0, r1, r0   ;計算MyHandleIRQ在ExceptionHanlderBegin這個中斷表中的偏移
    ;add     r0, r0, #_IRQ_BASEADDRESS
    add     r0, r0,r4   ;r0指向_IRQ_BASEADDRESS+(MyHandleIRQ的偏移),即0xc000000處的HandleIRQ
    ldr     r1, =DIsrIRQ     ;將非向量模式的中斷處理函數裝入0xc000000處的HandleIRQ
    str     r1, [r0]    
;    ldr     r0,=HandleIRQ  ;This routine is needed
;    ldr     r1,=IsrIRQ   ;if there isn't 'subs pc,lr,#4' at 0x18, 0x1c
;    str     r1,[r0]
 ;-----------------------------------------------------------------------------------------
; --- Initialise memory required by C code
    ;********************************************************
    ;* Copy and paste RW data/zero initialized data     *
    ;********************************************************
    LDR     r0, =|Image$$RO$$Limit| ; Get pointer to ROM data
    LDR     r1, =|Image$$RW$$Base| ; and RAM copy
    LDR     r3, =|Image$$ZI$$Base| 
 ;Zero init base => top of initialised data
   
    CMP     r0, r1     ; Check that they are different 確保數據段就是代碼段的后面,如果已經是了,就跳過下面搬運
    BEQ     %F1
0  
    CMP     r1, r3     ; Copy init data 將數據段搬運到代碼段的后面
    LDRCC   r2, [r0], #4    ;--> LDRCC r2, [r0] + ADD r0, r0, #4   
    STRCC   r2, [r1], #4    ;--> STRCC r2, [r1] + ADD r1, r1, #4
    BCC     %B0
1  
    LDR     r1, =|Image$$ZI$$Limit| ; Top of zero init segment
    MOV     r2, #0
2  
    CMP     r3, r1     ; Zero init 初始化bss段
    STRCC   r2, [r3], #4
    BCC     %B2
    
;--------Now we enter the C code
    [ :LNOT:THUMBCODE   ;if(!thumbcode) arm state;
 BL Main         ;Don't use main() because ...... 為什么呢?
 B .      
    ];
    [ THUMBCODE      ;for start-up code for Thumb mode;
 orr     lr,pc,#1
 bx      lr
 CODE16
 bl      Main     ;Don't use main() because ......
 b       .
 CODE32
   ]
;****************************************************
;* The function for initializing stack    *
;****************************************************
;4.初始化各模式下的棧指針 
InitStacks
 ;Don't use DRAM,such as stmfd,ldmfd......
 ;SVCstack is initialized before
 ;Under toolkit ver 2.50, 'msr cpsr,r1' can be used instead of 'msr cpsr_cxsf,r1'
    mrs     r0,cpsr
    bic     r0,r0,#MODEMASK
    orr     r1,r0,#UNDEFMODE|NOINT
    msr     cpsr_cxsf,r1  ;UndefMode
    ldr     sp,=UndefStack
 
    orr     r1,r0,#ABORTMODE|NOINT
    msr     cpsr_cxsf,r1       ;AbortMode
    ldr     sp,=AbortStack
    orr     r1,r0,#IRQMODE|NOINT
    msr     cpsr_cxsf,r1       ;IRQMode
    ldr     sp,=IRQStack
 
    orr     r1,r0,#FIQMODE|NOINT
    msr     cpsr_cxsf,r1       ;FIQMode
    ldr     sp,=FIQStack
    bic     r0,r0,#MODEMASK|NOINT
    orr     r1,r0,#SVCMODE
    msr     cpsr_cxsf,r1       ;SVCMode
    ldr     sp,=SVCStack
 ;USER mode is not initialized.
    mov     pc,lr ;The LR register may be not valid for the mode changes.
;****************************************************
;* The function for entering power down mode  *
;****************************************************
;void EnterPWDN(int CLKCON);
EnterPWDN
    mov     r2,r0               ;r0=CLKCON
    ldr     r0,=REFRESH  
    ldr     r3,[r0]
    mov     r1, r3
    orr     r1, r1, #0x400000   ;self-refresh enable
    str     r1, [r0]
    nop     ;Wait until self-refresh is issued. May not be needed.
    nop     ;If the other bus master holds the bus, ...
    nop     ; mov r0, r0
    nop
    nop
    nop
    nop
;enter POWERDN mode
    ldr     r0,=CLKCON
    str     r2,[r0]
;wait until enter SL_IDLE,STOP mode and until wake-up
    ldr     r0,=0x10
0   subs    r0,r0,#1
    bne     %B0
;exit from DRAM/SDRAM self refresh mode.
    ldr     r0,=REFRESH
    str     r3,[r0]
    mov     pc,lr
    ;LTORG
SMRDATA DATA
;*****************************************************************
;* Memory configuration has to be optimized for best performance *
;* The following parameter is not optimized.                     *
;*****************************************************************
;*** memory access cycle parameter strategy ***
; 1) Even FP-DRAM, EDO setting has more late fetch point by half-clock
; 2) The memory settings,here, are made the safe parameters even at 66Mhz.
; 3) FP-DRAM Parameters:tRCD=3 for tRAC, tcas=2 for pad delay, tcp=2 for bus load.
; 4) DRAM refresh rate is for 40Mhz. 
;bank0 16bit BOOT ROM
;bank1 8bit NandFlash
;bank2 16bit IDE
;bank3 8bit UDB
;bank4 rtl8019
;bank5 8bit usb host
;bank6 16bit SDRAM
;bank7 16bit SDRAM
    [ BUSWIDTH=16
    DCD 0x11010101 ;Bank0=16bit BootRom(AT29C010A*2) :0x0 8bit usb host![20:23]=0
    | ;BUSWIDTH=32
 DCD 0x22222220 ;Bank0=OM[1:0], Bank1~Bank7=32bit
    ]
 DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) ;GCS0
 DCD ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) ;GCS1 
 DCD ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) ;GCS2
 DCD ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) ;GCS3
 DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) ;GCS4
 DCD ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) ;GCS5
 [ BDRAMTYPE="DRAM" 
     DCD ((B6_MT<<15)+(B6_Trcd<<4)+(B6_Tcas<<3)+(B6_Tcp<<2)+(B6_CAN)) ;GCS6 check the MT value in parameter.a
     DCD ((B7_MT<<15)+(B7_Trcd<<4)+(B7_Tcas<<3)+(B7_Tcp<<2)+(B7_CAN)) ;GCS7
 | ;"SDRAM"
  DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) ;GCS6
  DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) ;GCS7
 ]
 DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT) ;REFRESH RFEN=1, TREFMD=0, trp=3clk, trc=5clk, tchr=3clk,count=1019
 DCD 0x10   ;SCLK power down mode, BANKSIZE 32M/32M
 DCD 0x20   ;MRSR6 CL=2clk
 DCD 0x20   ;MRSR7
 ALIGN               ;?
;==========================================================================================================================================
;以下的數據段充分的說明了中斷處理程序的存儲結構
;分為3個區域
;   1,異常向量表(_IRQ_BASEADDRESS ~ _IRQ_BASEADDRESS+0x4*8)
;   2,none vector mode的判斷程序(_IRQ_BASEADDRESS+0x80~...)
;   3,isr表(中斷處理服務表)(_IRQ_BASEADDRESS+0x100~...)
;最后還有堆棧區域
 AREA RamData, DATA, READWRITE

    ^ (_IRQ_BASEADDRESS)
HandleReset     # 4
HandleUndef     # 4
HandleSWI       # 4
HandlePabort    # 4
HandleDabort    # 4
HandleReserved  # 4
HandleIRQ       # 4
HandleFIQ       # 4
  
  ^ (_IRQ_BASEADDRESS+0x80)
DIsrIRQ       # 4

;Don't use the label 'IntVectorTable',
;because armasm.exe cann't recognize this label correctly.
;the value is different with an address you think it may be.
;IntVectorTable
    ^ (_IRQ_BASEADDRESS+0x100)
HandleADC     # 4
HandleRTC     # 4
HandleUTXD1   # 4
HandleUTXD0   # 4
HandleSIO     # 4
HandleIIC     # 4
HandleURXD1   # 4
HandleURXD0   # 4
HandleTIMER5  # 4
HandleTIMER4  # 4
HandleTIMER3  # 4
HandleTIMER2  # 4
HandleTIMER1  # 4
HandleTIMER0  # 4
HandleUERR01  # 4
HandleWDT     # 4
HandleBDMA1   # 4
HandleBDMA0   # 4
HandleZDMA1   # 4
HandleZDMA0   # 4
HandleTICK    # 4
HandleEINT4567  # 4
HandleEINT3   # 4
HandleEINT2   # 4
HandleEINT1   # 4
HandleEINT0   # 4   
 ^ (_ISR_STARTADDRESS-0x1400)
    
UserStack # 1024 ;c1(c7)fe600
SVCStack # 1024 ;c1(c7)feb00
UndefStack # 1024 ;c1(c7)ff000
AbortStack # 1024 ;c1(c7)ff500
IRQStack # 1024 ;c1(c7)ffa00
FIQStack # 0 ;c1(c7)fff00
  END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人激情av| 懂色av中文一区二区三区| 亚洲18女电影在线观看| 久久97超碰色| 99精品欧美一区| 91精品国产色综合久久不卡电影| 久久久精品免费免费| 亚洲美女免费视频| 国产一区二区三区精品欧美日韩一区二区三区 | www日韩大片| 亚洲日本一区二区| 美女国产一区二区三区| 日本久久精品电影| 国产精品水嫩水嫩| 黄色精品一二区| 3751色影院一区二区三区| 18成人在线视频| 国产91富婆露脸刺激对白| 日韩视频免费观看高清完整版在线观看 | 欧美一卡2卡3卡4卡| 国产精品大尺度| 国产成人免费xxxxxxxx| 欧美一卡在线观看| 亚洲精品国产第一综合99久久 | 国产福利91精品一区二区三区| 欧美老女人在线| 亚洲精品日产精品乱码不卡| 国产乱码精品一区二区三区五月婷| 欧美亚洲一区二区三区四区| 综合分类小说区另类春色亚洲小说欧美| 美腿丝袜在线亚洲一区| 欧美美女一区二区在线观看| 亚洲免费av网站| 成人精品免费看| 精品奇米国产一区二区三区| 日本亚洲最大的色成网站www| 在线视频国内自拍亚洲视频| 亚洲色图一区二区| 99久久综合精品| 中文字幕佐山爱一区二区免费| av影院午夜一区| 亚洲综合另类小说| 日本精品视频一区二区| 亚洲一区视频在线观看视频| 欧美影片第一页| 婷婷综合久久一区二区三区| 欧美老女人第四色| 日av在线不卡| 久久久久久久久久久久久女国产乱| 国内外精品视频| 国产精品乱码人人做人人爱| 色综合久久久久久久久久久| 亚洲综合丝袜美腿| 欧美图区在线视频| 男人的天堂久久精品| 久久久久久久久久久久久女国产乱 | 男男成人高潮片免费网站| 欧美电影免费提供在线观看| 国产露脸91国语对白| 国产精品久久久久久久久免费樱桃 | 欧美亚洲动漫精品| 美美哒免费高清在线观看视频一区二区| 日韩一区二区三区视频| 狠狠狠色丁香婷婷综合久久五月| 中文字幕一区日韩精品欧美| 精品视频色一区| 国内精品久久久久影院薰衣草 | 99久久99久久精品国产片果冻| 亚洲一二三四区不卡| 91精品国产综合久久久久久久 | 麻豆精品一二三| 国产欧美一区二区三区在线看蜜臀| www.在线成人| 日韩不卡一二三区| 国产欧美日韩视频一区二区| 欧美色图片你懂的| 国产一区不卡精品| 亚洲国产日韩一区二区| 2020国产成人综合网| 欧洲激情一区二区| 国产一区二三区好的| 一区二区三区高清在线| 2020国产精品久久精品美国| 欧美色视频在线观看| 国产成人av资源| 日韩av一区二区在线影视| 中文字幕不卡的av| 欧美大度的电影原声| 色视频成人在线观看免| 国产在线播放一区| 亚洲va欧美va人人爽| 中文幕一区二区三区久久蜜桃| 欧美一区二区二区| 91久久精品一区二区三| 国产精品亚洲午夜一区二区三区| 日韩不卡免费视频| 亚洲一区二区三区四区在线观看| 国产精品美女久久久久久| 日韩你懂的在线播放| 欧美系列一区二区| 91老司机福利 在线| 国产成人午夜精品5599 | 亚洲国产中文字幕在线视频综合 | 精品国产电影一区二区| 欧美主播一区二区三区| 成人性生交大片免费看视频在线| 国内精品免费**视频| 日韩在线卡一卡二| 亚洲国产视频直播| 伊人一区二区三区| 亚洲视频一区在线| 中文字幕亚洲电影| 国产精品视频一二三区| 日本一区二区在线不卡| 久久久久国产精品麻豆| 精品少妇一区二区三区在线播放 | 欧美日韩夫妻久久| 色老汉一区二区三区| 91麻豆免费观看| 色综合久久久久久久| 91农村精品一区二区在线| 不卡av免费在线观看| 岛国av在线一区| 91色视频在线| 色女孩综合影院| 欧美日韩亚洲丝袜制服| 在线免费观看一区| 欧美在线不卡视频| 欧美喷潮久久久xxxxx| 91麻豆精品国产91久久久 | 中文字幕色av一区二区三区| 国产精品对白交换视频| 中文字幕在线一区免费| 日韩理论片中文av| 亚洲一区二区欧美| 偷拍日韩校园综合在线| 免费在线看一区| 国产精品一二三四| 色婷婷av一区二区三区之一色屋| 欧美日本韩国一区| 日韩精品一区二区三区蜜臀 | 99精品黄色片免费大全| 99久久精品免费| 欧美视频中文一区二区三区在线观看| 在线不卡免费av| www国产精品av| 亚洲天堂免费看| 日本特黄久久久高潮| 黑人精品欧美一区二区蜜桃| 99久久久久久99| 91精品啪在线观看国产60岁| 国产日韩精品一区二区三区在线| 综合激情网...| 蓝色福利精品导航| 99re这里都是精品| 欧美福利视频导航| 久久久99精品免费观看不卡| 亚洲精品视频免费观看| 久久不见久久见免费视频1| 国产mv日韩mv欧美| 欧美男生操女生| 欧美激情综合网| 美女在线视频一区| 色婷婷综合激情| 久久久天堂av| 日韩成人一区二区| 91欧美激情一区二区三区成人| 精品乱人伦小说| 亚洲国产美女搞黄色| 成人免费看的视频| 正在播放一区二区| 亚洲乱码国产乱码精品精小说| 国产综合色产在线精品| 欧美色网一区二区| 亚洲桃色在线一区| 国产在线一区二区综合免费视频| 欧美精品自拍偷拍| 国产精品日产欧美久久久久| 久久99久久99| 欧美日韩国产小视频在线观看| 中文字幕一区二区三区在线不卡| 国产一区二区91| 日韩精品一区二区三区在线播放 | 日韩精品专区在线| 一区二区三区色| 99精品欧美一区二区三区综合在线| 日韩一区二区在线观看| 亚洲自拍偷拍网站| 91在线观看视频| 国产精品九色蝌蚪自拍| 国产精品中文字幕日韩精品| 2023国产精品自拍| 精品一二三四区| 精品日韩一区二区三区免费视频| 日韩黄色免费电影| 在线亚洲精品福利网址导航| 自拍视频在线观看一区二区| 99re在线视频这里只有精品| 亚洲免费伊人电影| 99久久婷婷国产综合精品 |