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

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

?? os_cpu_a.s

?? ucos porting source for ep7209
?? S
字號:
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                                                             ;
;                                                                             ;
;                        u C / O S - II  EP7209  P O R T		      ;
;									      ;
;	                      FILE : os_cpu_a.s				      ;
;									      ;
;                Ported By zartoven@zuguri.org January 29, 2001		      ;
;									      ;
;                 This port is tested on NANOWIT EP7209 Board		      ;
;									      ;
;            To get information about NANOWIT, Visit www.nanowit.com          ;
;									      ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;	Stack Area Definition						;
;.......................................................................;

RAMLimit		EQU		0x00109600	; Internal Sram end

SVCStackSize		EQU		0x1000
IRQStackSize		EQU		0x100
FIQStackSize		EQU		0x100

SVCStackEnd		EQU     	RAMLimit
IRQStackEnd		EQU     	SVCStackEnd-SVCStackSize
FIQStackEnd		EQU     	IRQStackEnd-IRQStackSize

;.......................................................................;
;	EP7209 Internal Register Definition				;
;.......................................................................;
REGISTER_BASE		EQU     	0x00200000

HwControl               EQU     	0x00000100	
HwControlUartEnable     EQU     	0x00000100	
HwStatus2               EQU     	0x00001140

CLKMOD                  EQU     	0x40
UartValue               EQU     	0x00060001
UartValue_13            EQU     	0x00060000
HwUartData              EQU     	0x00000480
HwUartData2             EQU     	0x00001480
HwUartControl           EQU     	0x000004c0
HwUartControl2          EQU     	0x000014c0
CLKCTL_73               EQU     	0x6

SYSCON1			EQU		0x00000100
TC1D			EQU		0x00000300
INTSR1			EQU		0x00000240
INTMR1			EQU		0x00000280
TC1EOI			EQU		0x000006c0
	

;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;	Program Start!!! 						;
;.......................................................................;
	AREA    |Assembly$$code|, CODE, READONLY

	ENTRY

;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;	Vector Table	 						;
;.......................................................................;
	b	ResetHandler
	ldr     pc, UndefV
	ldr     pc, SWIV
	ldr     pc, PAbortV
	ldr     pc, DAbortV
	ldr     pc, UnusedV
	ldr     pc, IRQV
	ldr	pc, FIQV

UndefV
	DCD     UndefHandler
SWIV
	DCD     SWIHandler
PAbortV
	DCD     PAbortHandler
DAbortV
	DCD     DAbortHandler
UnusedV
	DCD     UnusedHandler
IRQV
	DCD     IRQHandler
FIQV
	DCD     FIQHandler

UndefHandler
	movs    pc, lr
SWIHandler
	movs    pc, lr
PAbortHandler
	subs    pc, lr, #4
DAbortHandler
	subs    pc, lr, #8
UnusedHandler
	movs    pc, lr
FIQHandler
	subs    pc, lr, #4

;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;	IRQHandler is very important					;
;.......................................................................;
IRQHandler
	stmfd	sp!,{r0-r3}

	mov	r1,#REGISTER_BASE
	ldr	r2,=INTSR1
	ldr	r0,[r1,r2]
	tst	r0,#0x100
	bne	TimerIRQ		; Check Timer IRQ
;
;	if use other IRQ, follow Timer IRQ type...
;	

	ldmfd	sp!,{r0-r3}		
        subs    pc,lr,#4

;------------------------------------------------------------------------
;	Timer IRQ Header Part..
;
TimerIRQ
	ldr	r2,=TC1EOI		; Timer 1 Interrupt Clear
	str	r0,[r1,r2]
	
	mov	r2,sp			; copy IRQ's sp -> r2
	add	sp,sp,#16		; recover IRQ's sp 
	sub	r3,lr,#4		; copy return address -> r3

	LDR	r0,=IRQ_2
	MOVS	pc,r0
IRQ_2
	stmfd	sp!,{r3}		; push SVC's pc
	stmfd	sp!,{r4-r12,lr}		; push SVC's r14, r12-r4
	mov	r4,r2
	ldmfd	r4!,{r0-r3}		
	stmfd	sp!,{r0-r3}		; push SVC's r3-r0
	mrs	r5,cpsr
	stmfd	sp!,{r5}		; push SVC's PSR
;
; This IRQ Header is needed for other IRQ Handler
;------------------------------------------------------------------------
	B     	OSTickISR		; Real Body...




;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;	Starting Point!!!!						;
;.......................................................................;

ResetHandler

	ldr 	r0, =0x80002200		; Clock Speed Setting
	ldr 	r1, [r0]
	orr 	r1, r1, #CLKCTL_73
	strb 	r1, [r0] 

;------------------------------------------------------------------------
;	Stack Point Setting Each CPU Mode
;

	ldr     r0, =0x000000d2		; IRQ Mode sp Setting
        msr     cpsr_cf, r0
	ldr     r13, =IRQStackEnd

	ldr     r0, =0x000000d1		; FIQ Mode sp Setting
	msr     cpsr_cf, r0
	ldr     r13, =FIQStackEnd

	ldr     r0, =0x000000d3		; SVC Mode sp Setting
	msr     cpsr_cf, r0
	ldr     r13, =SVCStackEnd

;------------------------------------------------------------------------
;	MMU Configuration
;
	ldr     r0, =0x00000000
	mcr     p15, 0, r0, c5, c0
	mcr     p15, 0, r0, c7, c0

	ldr     r0, =0x55555555
	mcr     p15, 0, r0, c3, c0

    	IMPORT  PageTable

	ldr     r0, =PageTable
	mcr     p15, 0, r0, c2, c0

	ldr     r0, =0x0000007d
	mcr     p15, 0, r0, c1, c0

	;
	; There should always be two NOP instructions following the enable or
	; disable of the MMU.
	;
	mov     r0, r0
	mov     r0, r0
	
	;	
	; Delay for MMU
	;
	ldr 	r1, =0x0	
	ldr 	r2, =0x100																			
delay
	cmp    	r1, r2
	ldrne  	r3, [r1], #4
	bne    	delay

;------------------------------------------------------------------------
;	Variable Area Initialization
;

        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

        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     %1
0       cmp     r1, r3                  ; Copy init data
        ldrcc   r2, [r0], #4
        strcc   r2, [r1], #4
        bcc     %0
1       ldr     r1, =|Image$$ZI$$Limit| ; Top of zero init segment
        mov     r2, #0
2       cmp     r3, r1                  ; Zero init
        strcc   r2, [r3], #4
        bcc     %2

;------------------------------------------------------------------------
;	Serial Port Initialization
;	115200 BPS, Data bit 8 Bit, No Parity, Stop Bit 1 Bit
;
	ldr     r12, =REGISTER_BASE
	mov     r0, #HwControlUartEnable
	str     r0, [r12, #HwControl]
	ldr     r1, =HwStatus2
	add     r1,r1,r12
	ldr     r2, [r1]
	tst     r2, #CLKMOD
	ldreq   r0, =UartValue
	ldrne   r0, =UartValue_13
	str     r0, [r12, #HwUartControl]


;------------------------------------------------------------------------
;	Timer1 Setting = 10ms period 
;
	mov	r1,#REGISTER_BASE
	ldr	r2,=SYSCON1
	ldr	r0,[r1,r2]
	bic	r0,r0,#0x20
	orr	r0,r0,#0x10
	str	r0,[r1,r2]

	ldr	r2,=TC1D
	ldr	r0,=21			; 2115 -> 1 Second, 21 -> 10ms
	str	r0,[r1,r2]
	
	ldr	r2,=INTMR1
	ldr	r0,[r1,r2]
	orr	r0,r0,#0x100
	str	r0,[r1,r2]

	ldr	r2,=TC1EOI
	mov	r0,#0
	str	r0,[r1,r2]

;------------------------------------------------------------------------
;	C Routine Entry Point
;
	IMPORT	C_Entry
	b	C_Entry


;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
;	Simple Subrutine						;
;.......................................................................;

;------------------------------------------------------------------------
;	void SendChar(char ch) // Put a character to UART
;

	EXPORT  SendChar
SendChar
	mov	r1, #REGISTER_BASE
WLoop
	ldr	r2, [r1, #0x0140]
	tst	r2, #0x00800000
	bne	WLoop
	str	r0, [r1, #0x0480]
	mov	pc, lr

;------------------------------------------------------------------------
;	int splx(int onoff) // IRQ On/Off
;			    // onoff : 1 -> IRQ Disable
;			    // onoff : 0 -> IRQ Enable
	EXPORT  splx
splx
        MRS     r1, cpsr        
        BIC     r2, r1, #0x80   
        CMP     r0, #1          
        ORREQ   r2, r2, #0x80   
        MSR     CPSR_cxsf, r2   
        MOVS    r1, r1, LSL #25 
        MOV     r0, #0          
        MOVCS   r0, #1          
        mov	pc,lr


;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----------------------------------------------------------------------------; 
;	uC/OS Porting Core Function : OSStartHighRdy                          ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

	IMPORT	OSTaskSwHook
	IMPORT	OSRunning
	IMPORT	OSTCBHighRdy

	EXPORT	OSStartHighRdy

OSStartHighRdy  

	BL	OSTaskSwHook			; Call user defined task switch hook

	LDR	r0,=OSRunning			; Indicate that multitasking has started
	MOV	r1,#1
	STRB	r1,[r0]

	LDR	r0,=OSTCBHighRdy		; r0 <= &OSTCBHighRdy
	LDR	r0,[r0]				; r0 <=  OSTCBHighRdy

	LDR	sp,[r0]				; sp <=  OSTCBHighRdy->OSTCBStkPtr

	LDMFD	sp!,{r0}			; restore SP...
	MSR	CPSR_xsf,r0
	LDMFD   sp!,{r0 - r12, lr , pc}		; Load task's context & Run task

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----------------------------------------------------------------------------; 
;	uC/OS Porting Core Function : OSCtxSw                                 ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

	IMPORT	OSTCBCur
	IMPORT	OSTaskSwHook
	IMPORT	OSTCBHighRdy
	IMPORT	OSPrioCur
	IMPORT	OSPrioHighRdy

	EXPORT	OSCtxSw

OSCtxSw	
	STMFD	sp!,{lr}			; push resume address
	STMFD	sp!,{r0 - r12, lr}		; push rest context
	MRS	r0,CPSR
	STMFD	sp!,{r0}			; push CPSR

	LDR	r0,=OSTCBCur			; r0 <= &OSTCBCur
	LDR	r0,[r0]				; r0 <=  OSTCBCur
	STR	sp,[r0]				; OSTCBCur->OSTCBStkPtr = sp

	BL	OSTaskSwHook			; Call user defined task switch hook

	LDR	r0,=OSTCBCur			; r0 <= &OSTCBCur
	LDR	r1,=OSTCBHighRdy		; r1 <= &OSTCBHighRdy
	
	LDR	r2,[r1]				; r2 <=  OSTCBHighRdy
	STR	r2,[r0]				; OSTCBCur = OSTCBHighRdy

	LDR	r0,=OSPrioCur			; r0 <= &OSPrioCur
	LDR	r1,=OSPrioHighRdy		; r1 <= &OSPrioHighRdy
	
	LDRB	r3,[r1]				; r3 <=  OSPrioHighRdy
	STRB	r3,[r0]				; OSPrioCur = OSPrioHighRdy

	LDR	sp,[r2]				; sp <=  OSTCBHighRdy->OSTCBStkPtr

	LDMFD	sp!,{r0}			; restore SP...
	MSR	CPSR_xsf,r0
	LDMFD   sp!,{r0 - r12, lr , pc}		; Load task's context & Run task


;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----------------------------------------------------------------------------; 
;	uC/OS Porting Core Function : OSIntCtxSw                              ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

	IMPORT	OSTCBCur
	IMPORT	OSTaskSwHook
	IMPORT	OSTCBHighRdy
	IMPORT	OSPrioCur
	IMPORT	OSPrioHighRdy

	EXPORT	OSIntCtxSw 

OSIntCtxSw 

	ADD	sp,sp,#8

	LDR	r0,=OSTCBCur			; r0 <= &OSCTBCur
	LDR	r0,[r0]				; r0 <=  OSCTBCur

	STR	sp,[r0]				; OSTCBCur->OSTCBStkPtr = sp
	
	BL	OSTaskSwHook			; Call user defined task switch hook

	LDR	r0,=OSTCBCur			; r0 <= &OSTCBCur
	LDR	r1,=OSTCBHighRdy		; r1 <= &OSTCBHighRdy
	
	LDR	r2,[r1]				; r2 <=  OSTCBHighRdy
	STR	r2,[r0]				; OSTCBCur = OSTCBHighRdy

	LDR	r0,=OSPrioCur			; r0 <= &OSPrioCur
	LDR	r1,=OSPrioHighRdy		; r1 <= &OSPrioHighRdy
	
	LDRB	r3,[r1]				; r3 <=  OSPrioHighRdy
	STRB	r3,[r0]				; OSPrioCur = OSPrioHighRdy

	LDR	sp,[r2]				; sp <=  OSTCBHighRdy->OSTCBStkPtr
	LDMFD	sp!,{r0}			; restore SP...
	MSR	CPSR_xsf,r0
	LDMFD   sp!,{r0 - r12, lr , pc}		; Load task's context & Run task

;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;-----------------------------------------------------------------------------; 
;	uC/OS Porting Core Function : OSTickISR                               ;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
	IMPORT	OSIntNesting
	IMPORT	OSTimeTick
	IMPORT	OSIntExit

OSTickISR  

	LDR	r0,=OSIntNesting		; Notify uC/OS-II of ISR
	LDRB	r1,[r0]
	ADD	r1,r1,#1
	STRB	r1,[r0]
	
	BL	OSTimeTick			; Process system tick
        BL	OSIntExit			; Notify uC/OS-II of end of ISR

	LDMFD	sp!,{r0}
	MSR	CPSR_xsf,r0
	LDMFD   sp!,{r0 - r12, lr , pc}      

	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区三区网站| 91国产丝袜在线播放| 99在线精品观看| 日韩欧美一级二级三级久久久| 国产精品美日韩| 国模娜娜一区二区三区| 欧美日韩国产一二三| 亚洲啪啪综合av一区二区三区| 精品亚洲国产成人av制服丝袜| 欧美日韩综合色| 国产欧美一区二区精品性色超碰 | 亚洲午夜精品网| 粉嫩av一区二区三区在线播放 | 亚洲成人三级小说| 99在线热播精品免费| 国产日韩欧美精品电影三级在线| 免费人成网站在线观看欧美高清| 欧美日韩一区视频| 亚洲另类春色国产| 91蝌蚪porny| 中文字幕一区不卡| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 色久综合一二码| 国产精品色噜噜| 不卡av免费在线观看| 欧美极品美女视频| 成人免费福利片| 国产精品卡一卡二卡三| 精品一区二区av| 久久久亚洲精品石原莉奈 | 日韩一区二区麻豆国产| 日韩精品欧美成人高清一区二区| 亚洲成a人片在线观看中文| 亚洲欧美成aⅴ人在线观看| 日韩电影在线一区二区| 国产老女人精品毛片久久| 色丁香久综合在线久综合在线观看 | 日韩中文字幕91| 丁香啪啪综合成人亚洲小说| 欧美色图在线观看| 国产欧美一区二区在线观看| 亚洲一区二区三区三| 国产精品一区一区三区| 欧美午夜精品久久久久久超碰 | 亚洲理论在线观看| 精品一区二区在线看| 91日韩一区二区三区| 精品国产免费人成在线观看| 亚洲一二三四在线观看| 成人午夜av在线| 26uuu另类欧美亚洲曰本| 亚洲国产精品久久久久秋霞影院 | 国产精品乱码人人做人人爱 | 欧美国产精品久久| 免费看精品久久片| 欧美日本视频在线| 亚洲欧美日韩精品久久久久| 丁香婷婷综合色啪| 久久丝袜美腿综合| 韩国三级中文字幕hd久久精品| 欧美三级电影精品| 亚洲另类春色校园小说| 91小视频免费看| 国产精品毛片无遮挡高清| 国内精品自线一区二区三区视频| 欧美视频一区二| 亚洲一区二区三区小说| 99国产精品久| 成人欧美一区二区三区在线播放| 国产成人在线视频网址| 国产亚洲欧美激情| 国产精品中文字幕欧美| 久久婷婷色综合| 国产电影一区在线| 亚洲国产精品传媒在线观看| 国产盗摄女厕一区二区三区| 精品福利一二区| 国产福利一区在线| 国产精品久久一级| 色偷偷88欧美精品久久久| 亚洲综合在线电影| 欧美日韩免费一区二区三区视频| 午夜一区二区三区视频| 91精品国产免费| 黄网站免费久久| 国产肉丝袜一区二区| www.亚洲色图| 亚洲一区二区视频在线| 欧美一区二区三区在线观看视频| 奇米影视一区二区三区| 久久久精品一品道一区| 9久草视频在线视频精品| 亚洲香蕉伊在人在线观| 在线成人免费观看| 国产精品一二三四| 亚洲天堂精品视频| 91精品国产手机| 国产精品一二三区| 亚洲欧美日韩国产另类专区| 91精品国产综合久久精品性色| 久久国产剧场电影| 亚洲日本欧美天堂| 日韩亚洲欧美成人一区| 成人免费黄色大片| 午夜精品久久久久久久99水蜜桃| 精品三级av在线| 91美女片黄在线| 麻豆精品精品国产自在97香蕉| 国产精品理伦片| 欧美精品丝袜中出| www.色综合.com| 日韩av中文字幕一区二区三区| 久久久天堂av| 欧美日韩在线直播| 成人黄色软件下载| 日本中文一区二区三区| 日本一区二区三区电影| 欧美精品在线一区二区三区| 国产sm精品调教视频网站| 婷婷久久综合九色综合绿巨人 | 狠狠色伊人亚洲综合成人| 亚洲男人电影天堂| 久久先锋影音av| 欧美巨大另类极品videosbest | 亚洲影视资源网| 国产欧美一区二区精品仙草咪 | 国产精品一卡二卡在线观看| 一个色在线综合| 中文一区在线播放| 欧美电视剧免费全集观看| 色欧美乱欧美15图片| 国产91高潮流白浆在线麻豆| 男人的天堂久久精品| 亚洲永久免费视频| 亚洲视频一区二区在线| 亚洲国产精品av| 久久日一线二线三线suv| 欧美一区三区二区| 精品视频在线免费看| 99久久综合国产精品| 国产黄色91视频| 经典三级一区二区| 久久99精品久久久久久国产越南 | 久久在线观看免费| 日韩片之四级片| 9191成人精品久久| 欧美艳星brazzers| 欧美天堂一区二区三区| 99久久国产综合色|国产精品| 国产乱人伦精品一区二区在线观看| 免费日韩伦理电影| 美女视频黄 久久| 美脚の诱脚舐め脚责91| 麻豆视频一区二区| 久草这里只有精品视频| 国模少妇一区二区三区| 国产麻豆日韩欧美久久| 国产乱国产乱300精品| 国产精品一区二区91| 高清不卡一区二区在线| 北条麻妃一区二区三区| 91在线观看免费视频| 色美美综合视频| 欧美三区在线观看| 91精品在线麻豆| 精品福利一二区| 中文字幕中文乱码欧美一区二区| 亚洲欧洲精品成人久久奇米网| 亚洲欧美国产三级| 日韩精品一二三区| 国产成人免费视频网站| av在线这里只有精品| 欧美三级中文字幕| 欧美成人三级在线| 欧美激情一区二区三区全黄| 亚洲精品中文在线观看| 日本午夜精品视频在线观看| 国内精品伊人久久久久av影院 | 日本sm残虐另类| 国产老女人精品毛片久久| 99国产欧美久久久精品| 91精品国产综合久久香蕉麻豆 | 欧美性受xxxx| 精品国产成人系列| 亚洲视频在线一区观看| 日韩二区三区四区| 成人app软件下载大全免费| 欧美精品自拍偷拍动漫精品| 久久蜜桃av一区精品变态类天堂| 中文字幕一区二区三区不卡| 日韩精品一级中文字幕精品视频免费观看| 久久99国内精品| 色久优优欧美色久优优| 2020日本不卡一区二区视频| 亚洲欧美激情一区二区| 国内精品久久久久影院一蜜桃| 一本高清dvd不卡在线观看| 26uuu亚洲综合色| 图片区小说区国产精品视频| 成人高清视频在线|