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

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

?? 44b0init.s

?? 44B0啟動原代碼
?? S
?? 第 1 頁 / 共 2 頁
字號:
;-----------------------------------------------------------------------------------------------------------------
 
; *******************************************************
; * NAME    : 44BINIT.S         *
; * Version : 10.April.2000        *
; * Description:          *
; * C start up codes         *
; * Configure memory, Initialize ISR ,stacks   *
; * Initialize C-variables        *
; * Fill zeros into zero-initialized C-variables  *
; *******************************************************
 
    ;GET option.a
    ;GET memcfg.a
    GET memcfg.s
;Memory Area
;GCS6 64M 16bit(8MB) DRAM/SDRAM(0xc000000-0xc7fffff)
;APP    RAM=0xc000000~0xc7effff 
;44BMON RAM=0xc7f0000-0xc7fffff
;STACK    =0xc7ffa00     
;Interrupt Control
INTPND     EQU 0x01e00004  ;指示中斷請求狀態寄存器,每一位代變一種中斷請求
INTMOD     EQU 0x01e00008  ;中斷模式寄存器,有兩種中斷模式對應位為:1代表fip mode ,0代表riq mode 
INTMSK     EQU 0x01e0000c  ;確定哪個中斷源被屏蔽 屏蔽的中斷源將不被服務
I_ISPR     EQU 0x01e00020  ;中斷服務掛起寄存器 
I_CMST     EQU 0x01e0001c  ;當前主寄存器irq優先級 
;Watchdog timer
WTCON     EQU 0x01d30000  ;看門狗定時器控制寄存器 
;Clock Controller
PLLCON     EQU 0x01d80000  ;pll控制寄存器
CLKCON     EQU 0x01d80004  ;時鐘控制寄存器 
LOCKTIME    EQU 0x01d8000c  ;鎖定時間計數值寄存器
 
;Memory Controller
REFRESH     EQU 0x01c80024  ;Dram/sdram刷新控制寄存器
;BDMA destination register
BDIDES0     EQU 0x1f80008  ;???DMA???
BDIDES1     EQU 0x1f80028  ;???DMA???
;Pre-defined constants
USERMODE    EQU 0x10   ;0b10000 用戶模式
FIQMODE     EQU 0x11   ;0b10001 FIQ模式
IRQMODE     EQU 0x12   ;0b10010 IRQ模式
SVCMODE     EQU 0x13   ;0b10011 管理模式
ABORTMODE   EQU 0x17   ;0b10111 中止模式
UNDEFMODE   EQU 0x1b   ;0b11011 未定義
MODEMASK    EQU 0x1f   ;0b11111 mode mask
NOINT     EQU 0xc0   ;0b1100 0000 ???關中斷???
;=========================================================================================================================
;check if tasm.exe is used. 
;arm處理器有兩種工作狀態 1.arm:32位 這種工作狀態下執行字對準的arm指令 2.Thumb:16位 這種工作狀態執行半字對準的Thumb指令 
;因為處理器分為16位 32位兩種工作狀態 程序的編譯器也是分16位和32兩種編譯方式 所以下面的程序用于根據處理器工作狀態確定編譯器編譯方式 
;code16偽指令指示匯編編譯器后面的指令為16位的thumb指令 
;code32偽指令指示匯編編譯器后面的指令為32位的arm指令 
;這段是為了統一目前的處理器工作狀態和軟件編譯方式(16位編譯環境使用tasm.exe編譯) 
    GBLL    THUMBCODE    ;global logical variable, init. to {false}
    [ {CONFIG} = 16      ;[=if,{CONFIG}:build-in variable defined by ARM assembler,16=assembing Thumbcode.
THUMBCODE SETL {TRUE}   ;SETL:set the logic variable
    CODE32               ;changing from Thumb state to Arm state
    |                    ;|=else
THUMBCODE SETL {FALSE}
    ]                    ;]=endif
    [ THUMBCODE
    CODE32               ;for start-up code for Thumb mode???
    ]
;=========================================================================================================================
;注意下面這段程序是個宏定義,下面包含的HandlerXXX HANDLER HandleXXX將都被下面這段程序展開
;這段程序用于把中斷服務程序的首地址裝載到pc中
;本初始化程序定義了一個數據區(在文件最后),34個字空間,存放相應中斷服務程序的首地址。
;每個字空間都有一個標號,以Handle***命名。

    MACRO
$HandlerLabel HANDLER $HandleLabel
$HandlerLabel
    sub     sp,sp,#4     ;decrement sp(to store jump address)
    stmfd   sp!,{r0}     ;PUSH the work register to stack(lr does't push because it return to original address)
    ldr     r0,=$HandleLabel;load the address of HandleXXX to r0
    ldr     r0,[r0]         ;load the contents(service routine start address) of HandleXXX
    str     r0,[sp,#4]     ;store the contents(ISR) of HandleXXX to stack
    ldmfd   sp!,{r0,pc}     ;POP the work register and pc(jump to ISR)
    MEND
 
;=========================================================================================================================
;一個arm程序由RO,RW,ZI三個斷組成 其中RO為代碼段,RW是已經初始化的全局變量,ZI是未初始化的全局變量(對于GNU工具 對應的概念是TEXT ,DATA,BSS)
;bootloader要將RW段復制到ram中并將ZI段清零 編譯器使用下列段來記錄各段的起始和結束地址 
; |Image$$RO$$Base| ; RO段起始地址 
; |Image$$RO$$Limit| ; RO段結束地址加1 
; |Image$$RW$$Base| ; RW段起始地址 
; |Image$$RW$$Limit| ; RW段結束地址加1 
; |Image$$ZI$$Base| ; ZI段起始地址 
; |Image$$ZI$$Limit| ; ZI段結束地址加1 
;這些標號的值是通過編譯器的設定來確定的 如編譯軟件中對ro-base和rw-base的設定,例如 ro-base=0xc000000 rw-base=0xc5f0000 
    IMPORT |Image$$RO$$Limit|  ; End of ROM code (=start of ROM data)
    IMPORT |Image$$RW$$Base|   ; Base of RAM to initialise
    IMPORT |Image$$ZI$$Base|   ; Base and limit of area
    IMPORT |Image$$ZI$$Limit|  ; to zero initialise;
    IMPORT  Main    ; The main entry of mon program 
;=========================================================================================================================
;下面為代碼段 
    AREA    Init,CODE,READONLY
    ENTRY 
;****************************************************************************
;異常表
 ;上電和復位后,程序開始從位于0x0處開始執行.程序從這里開始執行跳轉到標號為ResetHandler處執行
    b      ResetHandler                      ;    Reset        
    ldr    pc, =(_IRQ_BASEADDRESS + 0x04)    ;    HandlerUndef 
    ldr    pc, =(_IRQ_BASEADDRESS + 0x08)    ;    HandlerSWI 
    ldr    pc, =(_IRQ_BASEADDRESS + 0x0C)    ;    HandlerPabort 
    ldr    pc, =(_IRQ_BASEADDRESS + 0x10)    ;    HandlerDAbort
    ldr    pc, =(_IRQ_BASEADDRESS + 0x14)    ;    HandlerReserved
    ldr    pc, =(_IRQ_BASEADDRESS + 0x18)    ;    HandlerIRQ
    ldr    pc, =(_IRQ_BASEADDRESS + 0x1C)    ;    HandlerFIQ
;***************************************************************************    
 ;***IMPORTANT NOTE***
 ;If the H/W vectored interrutp mode is enabled, The above two instructions should
 ;be changed like below, to work-around with H/W bug of S3C44B0X interrupt controller. 
 ; b HandlerIRQ  ->  subs pc,lr,#4
 ; b HandlerIRQ  ->  subs pc,lr,#4
;中斷表
 ;向量中斷模式和非向量中斷模式的概念
 ;A)  向量中斷模式是當cpu讀取位于0x18處的IRQ中斷指令的時候,系統自動讀取對應于該中斷源確定地址上的指令取代0x18處的指令,
 ;    通過跳轉指令系統就直接跳轉到對應地址.ADC中斷的向量地址為0xC0,則在0xC0處放如下代碼:ldr PC,=HandlerADC ,
 ;    當ADC中斷產生的時候系統會自動跳轉到HandlerADC函數中
 
 ;B)  向量中斷模式處理方式是一種傳統的中斷處理方法,當系統產生中斷的時候,系統將interrupt pending寄存器中對應標志位置位,
 ;    然后跳轉到位于0x18處的統一中斷函數中,該函數通過讀取interrupt pending寄存器中對應標志位,來判斷中斷源,
 ;    并根據優先級關系再跳到對應中斷源的處理代碼中
 
VECTOR_BRANCH
    ldr pc,=HandlerEINT0    ;mGA    H/W interrupt vector table
    ldr pc,=HandlerEINT1    ; 
    ldr pc,=HandlerEINT2    ;
    ldr pc,=HandlerEINT3    ;
    ldr pc,=HandlerEINT4567 ;
    ldr pc,=HandlerTICK     ;mGA
    b .
    b .
    ldr pc,=HandlerZDMA0    ;mGB
    ldr pc,=HandlerZDMA1    ;
    ldr pc,=HandlerBDMA0    ;
    ldr pc,=HandlerBDMA1    ;
    ldr pc,=HandlerWDT     ;
    ldr pc,=HandlerUERR01   ;mGB
    b .
    b .
    ldr pc,=HandlerTIMER0   ;mGC
    ldr pc,=HandlerTIMER1   ;
    ldr pc,=HandlerTIMER2   ;
    ldr pc,=HandlerTIMER3   ;
    ldr pc,=HandlerTIMER4   ;
    ldr pc,=HandlerTIMER5   ;mGC
    b .
    b .
    ldr pc,=HandlerURXD0    ;mGD
    ldr pc,=HandlerURXD1    ;
    ldr pc,=HandlerIIC     ;
    ldr pc,=HandlerSIO     ;
    ldr pc,=HandlerUTXD0    ;
    ldr pc,=HandlerUTXD1    ;mGD
    b .
    b .
    ldr pc,=HandlerRTC     ;mGKA
    b .      ;
    b .      ;
    b .      ;
    b .      ;
    b .      ;mGKA
    b .
    b .
    ldr pc,=HandlerADC     ;mGKB
    b .      ;
    b .      ;
    b .      ;
    b .      ;
    b .      ;mGKB
    b .
    b .
;0xe0=EnterPWDN
    ldr pc,=EnterPWDN
;=============================================================================================================================
;下面是具體的中斷處理函數跳轉的宏,通過上面的$HandlerLabel的宏定義展開后跳轉到對應的中斷處理函數(對于向量中斷)
    LTORG 
HandlerFIQ HANDLER HandleFIQ
HandlerIRQ HANDLER HandleIRQ
HandlerUndef HANDLER HandleUndef
HandlerSWI HANDLER HandleSWI
HandlerDabort HANDLER HandleDabort
HandlerPabort HANDLER HandlePabort
HandlerADC HANDLER HandleADC
HandlerRTC HANDLER HandleRTC
HandlerUTXD1 HANDLER HandleUTXD1
HandlerUTXD0 HANDLER HandleUTXD0
HandlerSIO HANDLER HandleSIO
HandlerIIC HANDLER HandleIIC
HandlerURXD1 HANDLER HandleURXD1
HandlerURXD0 HANDLER HandleURXD0
HandlerTIMER5 HANDLER HandleTIMER5
HandlerTIMER4 HANDLER HandleTIMER4
HandlerTIMER3 HANDLER HandleTIMER3
HandlerTIMER2 HANDLER HandleTIMER2
HandlerTIMER1 HANDLER HandleTIMER1
HandlerTIMER0 HANDLER HandleTIMER0
HandlerUERR01 HANDLER HandleUERR01
HandlerWDT HANDLER HandleWDT
HandlerBDMA1 HANDLER HandleBDMA1
HandlerBDMA0 HANDLER HandleBDMA0
HandlerZDMA1 HANDLER HandleZDMA1
HandlerZDMA0 HANDLER HandleZDMA0
HandlerTICK HANDLER HandleTICK
HandlerEINT4567 HANDLER HandleEINT4567
HandlerEINT3 HANDLER HandleEINT3
HandlerEINT2 HANDLER HandleEINT2
HandlerEINT1 HANDLER HandleEINT1
HandlerEINT0 HANDLER HandleEINT0
;*************************************************************************
;IRQ  ==the program put this phrase to 0xc000000
;???可能是給用戶程序使用的異常表???
ExceptionHanlderBegin
    b      .
    ldr    pc, MyHandleUndef            ;    HandlerUndef 
    ldr    pc, MyHandleSWI              ;    HandlerSWI 
    ldr    pc, MyHandlePabort           ;    HandlerPabort 
    ldr    pc, MyHandleDabort           ;    HandlerDAbort
    b .                                 ;    HandlerReserved
    ldr    pc, MyHandleIRQ              ;    HandlerIRQ
    ldr    pc, MyHandleFIQ              ;    HandlerFIQ
    
MyHandleUndef  DCD  HandleUndef         ;reserve a word(32bit)
MyHandleSWI    DCD  HandleSWI 
MyHandlePabort DCD  HandlePabort
MyHandleDabort DCD  HandleDabort
MyHandleIRQ    DCD  HandleIRQ
MyHandleFIQ    DCD  HandleFIQ
ExceptionHanlderEnd
;*************************************************************************
;============================================================================================================================
;以下兩個例程都可以用來處理非向量中斷
;具體判斷I_ISPR中各位是否置1 :置1表示目前此中斷等待響應(每次只能有一位置1),從最高優先級中斷位開始判斷,檢測到等待服務
;One of the following two routines can be used for non-vectored interrupt.
IsrIRQ ;using I_ISPR register.
    sub     sp,sp,#4       ;reserved for PC
    stmfd   sp!,{r8-r9}   
 ;IMPORTANT CAUTION
 ;if I_ISPC isn't used properly, I_ISPR can be 0 in this routine.
    ldr     r9,AddrISPR;=I_ISPR       <=> ldr r9,=I_ISPR 
    ldr     r9,[r9]
 cmp  r9, #0x0 ;If the IDLE mode work-around is used,
      ;r9 may be 0 sometimes.
 beq  %F2
    mov     r8,#0x0
0
    movs    r9,r9,lsr #1  ;將最低位送入C
    bcs     %F1
    add     r8,r8,#4   ;r8充當索引
    b     %B0
1
    ldr     r9,AddrHandleADC;=HandleADC 找到中斷表的首地址
    add     r9,r9,r8  ;首地址+索引 = 中斷服務地址
    ldr     r9,[r9]   ;加載中斷服務
    str     r9,[sp,#8]  ;放入事先預留的堆棧位置
    ldmfd   sp!,{r8-r9,pc} ;進入中斷服務
2
 ldmfd sp!,{r8-r9}  ;???IDLE MODE故不進行中斷服務,返回了事???
 add  sp,sp,#4
 subs pc,lr,#4
 
AddrISPR;There is no this phrases in original 44binit.s  為什么不直接寫ldr r9,=I_ISPR 和ldr r9,=HandleADC,而要這么做呢??? 
    DCD     I_ISPR
AddrHandleADC    
    DCD     HandleADC
IsrIRQEnd  
;****************************************************
;* START           *
;****************************************************
;上電和復位后 程序開始從位于0x0執行b ResetHandler 程序從跳轉到這里執行
ResetHandler
 ;1.禁止看門狗
    ldr     r0,=WTCON     ;watch dog disable 
    ldr     r1,=0x0   
    str     r1,[r0]
 ;屏蔽所有中斷 
    ldr     r0,=INTMSK
    ldr     r1,=0x07ffffff  ;all interrupt disable
    str     r1,[r0]
    ;****************************************************
    ;* Set clock control registers      *
    ;****************************************************
 ;2.根據工作頻率設置pll
  ;計算公式 
  ;Fpllo=(m*Fin)/(p*2^s) 
  ;m=MDIV+8,p=PDIV+2,s=SDIV 
  ;Fpllo必須大于20Mhz小于66Mhz 
  ;Fpllo*2^s必須小于170Mhz 
  ;如下面的PLLCON設定中的M_DIV P_DIV S_DIV是取自option.h中 
  ;#elif (MCLK==40000000) 
  ;#define PLL_M (0x48) 
  ;#define PLL_P (0x3) 
  ;#define PLL_S (0x2) 
  ;所以m=MDIV+8=80,p=PDIV+2=5,s=SDIV=2 
  ;硬件使用晶振為10Mhz,即Fin=10Mhz 
  ;Fpllo=80*10/5*2^2=40Mhz
    ldr r0,=LOCKTIME
    ldr r1,=0xfff
    str r1,[r0]
    [ PLLONSTART
 ldr r0,=PLLCON   ;temporary setting of PLL
 ldr r1,=((M_DIV<<12)+(P_DIV<<4)+S_DIV) ;Fin=10MHz,Fout=40MHz
 str r1,[r0]
    ]
    ldr     r0,=CLKCON   
    ldr     r1,=0x7ff8     ;All unit block CLK enable 
    str     r1,[r0]
    ;****************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久99| 国产欧美日韩亚州综合| 亚洲天堂成人网| 色综合天天做天天爱| 国产精品国产自产拍高清av | 精品久久久久久久久久久久久久久久久 | 国产精品亚洲视频| 精品美女一区二区三区| 极品少妇xxxx精品少妇| 久久久噜噜噜久久人人看| 国产一区二区在线看| 久久久精品tv| 一本久道中文字幕精品亚洲嫩| 一区二区三区四区在线| 3d动漫精品啪啪| 国产精品一线二线三线| 日韩理论片一区二区| 欧美性受xxxx黑人xyx| 麻豆精品一区二区| 国产精品天天摸av网| 色国产综合视频| 久久草av在线| 亚洲同性同志一二三专区| 欧美日韩美少妇| 国产麻豆日韩欧美久久| 136国产福利精品导航| 成人免费的视频| 亚洲天堂中文字幕| 在线观看91精品国产麻豆| 国产一区二区三区精品欧美日韩一区二区三区 | 久久99久久久欧美国产| 美女视频黄频大全不卡视频在线播放| 欧美一卡二卡三卡四卡| 成人午夜av电影| 天天影视网天天综合色在线播放| 久久久久久麻豆| 欧美日免费三级在线| 国产精品亚洲一区二区三区妖精| 亚洲一级在线观看| 国产精品嫩草影院av蜜臀| 欧美一级欧美三级| 色综合色综合色综合| 久久99久久精品欧美| 亚洲黄色av一区| 久久品道一品道久久精品| 在线观看www91| 高清不卡一区二区| 免费高清不卡av| 亚洲精品日产精品乱码不卡| 欧美精品一区二区三区蜜桃| 91传媒视频在线播放| 成人国产精品免费观看动漫| 蜜臂av日日欢夜夜爽一区| 亚洲乱码一区二区三区在线观看| 国产亚洲va综合人人澡精品 | 成人黄色电影在线| 日本不卡123| 亚洲乱码一区二区三区在线观看| 中文成人av在线| 国产亚洲一区二区在线观看| 91精品国产一区二区人妖| 欧洲亚洲精品在线| 99久久免费国产| 成人免费毛片嘿嘿连载视频| 国产一区二区三区四区五区入口| 日韩二区在线观看| 天天综合色天天| 亚洲chinese男男1069| 亚洲精品伦理在线| 日韩一区欧美小说| 国产清纯在线一区二区www| 日韩免费看的电影| 日韩午夜在线观看视频| 欧美精品日韩一本| 91精品国产手机| 欧美一区二区三区白人| 91精品国产一区二区三区| 91麻豆精品91久久久久久清纯 | 北条麻妃国产九九精品视频| 国产乱国产乱300精品| 国产一区二区精品在线观看| 国模冰冰炮一区二区| 精品中文字幕一区二区| 韩国三级中文字幕hd久久精品| 毛片不卡一区二区| 九九精品视频在线看| 国产一区二区女| 成人久久18免费网站麻豆| 欧美偷拍一区二区| 亚洲人妖av一区二区| 国产福利不卡视频| 成人欧美一区二区三区小说| 国产精品久久久久永久免费观看| 欧美经典一区二区三区| 国产精品欧美久久久久无广告| 国产精品免费aⅴ片在线观看| 亚洲色欲色欲www| 亚洲国产精品一区二区久久恐怖片 | 日韩免费一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产婷婷色一区二区三区四区| 中文字幕不卡在线| 亚洲精品va在线观看| 日韩成人精品在线观看| 久草精品在线观看| 懂色av一区二区三区蜜臀| 91美女视频网站| 欧美日韩亚洲综合在线| 欧美一区二区三区小说| 久久亚洲免费视频| 亚洲乱码中文字幕综合| 蜜桃一区二区三区四区| 高清国产一区二区三区| 欧洲精品在线观看| 久久综合九色综合97婷婷 | 一本大道av伊人久久综合| 777午夜精品视频在线播放| 久久久久久久久97黄色工厂| 最新久久zyz资源站| 日韩**一区毛片| 成人自拍视频在线观看| 在线观看三级视频欧美| 337p日本欧洲亚洲大胆色噜噜| 亚洲精品中文在线观看| 韩国午夜理伦三级不卡影院| 欧美影院一区二区| 国产视频911| 午夜不卡av免费| 成人久久18免费网站麻豆 | 久久精品一区蜜桃臀影院| 亚洲欧美日韩中文字幕一区二区三区| 视频一区二区欧美| 91理论电影在线观看| 精品美女在线播放| 午夜精品久久久久久久99樱桃| 韩国精品主播一区二区在线观看| 日本丶国产丶欧美色综合| 久久精品视频免费| 免费人成在线不卡| 91福利视频久久久久| 国产无遮挡一区二区三区毛片日本| 亚洲国产日韩在线一区模特| 成人性视频网站| 欧美α欧美αv大片| 天天综合天天做天天综合| 91麻豆6部合集magnet| 亚洲国产精品av| 国产麻豆视频一区| 日韩欧美电影一二三| 亚洲第一狼人社区| 日本高清成人免费播放| 综合av第一页| 91在线视频官网| 综合久久久久久| 高清国产一区二区三区| 久久久午夜精品理论片中文字幕| 蜜桃视频第一区免费观看| 欧美日韩日本视频| 亚洲一区精品在线| 欧美亚洲自拍偷拍| 亚洲一区中文日韩| 欧美午夜电影网| 亚洲成人自拍网| 欧美少妇bbb| 午夜国产不卡在线观看视频| 欧美性xxxxx极品少妇| 亚洲欧美日韩久久精品| 91在线无精精品入口| 综合在线观看色| 91啪在线观看| 一区二区欧美视频| 欧美视频在线不卡| 性做久久久久久免费观看 | 2021国产精品久久精品| 久久精品国产99| 久久午夜国产精品| 国产精品中文字幕欧美| 国产日韩欧美a| aaa欧美大片| 一区二区三区日韩欧美精品| 在线免费观看一区| 亚洲国产精品一区二区久久恐怖片 | 《视频一区视频二区| 色就色 综合激情| 视频一区二区中文字幕| 精品国产亚洲在线| fc2成人免费人成在线观看播放| 亚洲人成人一区二区在线观看 | 国产成人精品亚洲777人妖| 中文文精品字幕一区二区| av在线播放一区二区三区| 亚洲精品国产a久久久久久| 欧美日韩国产中文| 久久97超碰色| 日韩伦理电影网| 日韩视频在线你懂得| 国产伦精品一区二区三区免费 | 亚洲曰韩产成在线| 精品久久久久久亚洲综合网| 成人a区在线观看|