⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 startup.s

📁 Windows CE 6.0 BSP for the Beagle Board.
💻 S
字号:
;
; Copyright (c) Special Computing.  All rights reserved. 
; Copyright (c) Microsoft Corporation.  All rights reserved.
; Copyright (c) Texas Instruments.  All rights reserved. 
;
;------------------------------------------------------------------------------
;
;   File:  startup.s
;
;   Kernel startup routine for OMAP3530 BeagleBoard. We are using 
;   standard oal startup routine.
;
        INCLUDE kxarm.h
       
        IMPORT  KernelStart

        TEXTAREA
        
;-------------------------------------------------------------------------------
;
;  Function:  StartUp
;
;  This function is entry point to Windows CE OS. It should be called
;  in state with deactivated MMU and disabled caches.
;
;  Main system initialization is made in X-Loader (for NAND systems)
;  or IPL (for NOR systems without X-Loader).
;
        LEAF_ENTRY StartUp

        ;---------------------------------------------------------------
        ; Initialize cache
        ;---------------------------------------------------------------
;		b		flash_USER0_LED

;; turn off I/D-cache
;		mrc		p15, 0, r1, c1, c0, 0
;		bic		r1, r1, #0x1000
;		bic		r1, r1, #0x0004
;		mcr		p15, 0, r1, c1, c0, 0

; Invalidate TLB and I cache
		mov     r0, #0
		mcr		p15, 0, r0, c8, c7, 0  ; invalidate TLBs
		mcr		p15, 0, r0, c7, c5, 0  ; invalidate icache

;; turn off l2 cache
;; ES2 and up we can disable/enable L2
;		mrc		p15, 0, r1, c1, c0, 1
;		bic		r1, r1, #0x2
;		mcr		p15, 0, r1, c1, c0, 1

; Flush D cache
		mrc     p15, 1, r0, c0, c0, 1
		ands    r3, r0, #0x7000000   
		mov     r3, r3, lsr #23      
		beq     %F5             
		mov     r10, #0              
1 
        add     r2, r10, r10, lsr #1 
        mov     r1, r0, lsr r2       
        and     r1, r1, #7            
        cmp     r1, #2               
        blt     %F4                 
        mcr     p15, 2, r10, c0, c0, 0

;        isb                          
		mov		r1, #0
		mcr		p15, 0, r1, c7, c5, 4		; simulate isb


        mrc     p15, 1, r1, c0, c0, 0
        and     r2, r1, #7           
        add     r2, r2, #4           
        ldr     r4, =0x3ff 
        ands    r4, r4, r1, lsr #3   
        clz     r5, r4               
        ldr     r7, =0x7fff 
        ands    r7, r7, r1, lsr #13  
2 
        mov     r9, r4               
3 
        orr     r11, r10, r9, lsl r5 
        orr     r11, r11, r7, lsl r2 
        mcr     p15, 0, r11, c7, c14, 2
        subs    r9, r9, #1             
        bge     %B3 
        subs    r7, r7, #1             
        bge     %B2 
4 
        add     r10, r10, #2           
        cmp     r3, r10 
        bgt     %B1 
5 
        mov     r10, #0                
        mcr     p15, 2, r10, c0, c0, 0 
;		isb
		mov		r1, #0
		mcr		p15, 0, r1, c7, c5, 4	; simulate isb


        mov     r0, #0
		mcr		p15, 0, r0, c7, c10, 4	; mem barrier to sync up

;		; Set MMU options
;		mrc     p15, 0, r0, c1, c0, 0
;		orr     r0, r0, #(1 :SHL: 1)	; Set the A bit to enable alignment checking.
;		mcr     p15, 0, r0, c1, c0, 0

;		b		flash_USER0_LED

        ;---------------------------------------------------------------
        ; Jump to WinCE KernelStart
        ;---------------------------------------------------------------
        ; Compute the OEMAddressTable's physical address and 
        ; load it into r0. KernelStart expects r0 to contain
        ; the physical address of this table. The MMU isn't 
        ; turned on until well into KernelStart.  

        add     r0, pc, #g_oalAddressTable - (. + 8)
        bl      KernelStart
        b       .

flash_USER0_LED
		ldr		r0, =0x00400000			; USER1 LED on GPIO_149
		ldr		r1, =0x49056090			; clear bit location
		ldr		r2, =0x49056094			; set bit location
11		str 	r0, [r1]				; off
		ldr     r3, =0x03ffffff			; STALL
20		subs    r3, r3, #1
		bne     %B20
		str 	r0, [r2]				; on
		ldr     r3, =0x03ffffff			; STALL
25		subs    r3, r3, #1
		bne     %B25
		b		%b11


        ; Include memory configuration file with g_oalAddressTable
        INCLUDE addrtab_cfg.inc

        ENTRY_END 

        END

;------------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -