📄 led_common.s
字号:
;******************************************************************************
; TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
;
; Property of Texas Instruments. For Unrestricted Internal Use Only.
; Unauthorized reproduction and/or distribution is strictly prohibited.
; This product is protected under copyright law and trade secret law as
; an unpublished work.
;
; Created 2002, (C) Copyright 2002 Texas Instruments. All rights reserved.
;
; Created : 29th of July, 2002, 4.00pm
;
; Filename : led_common.s
;
; Description : Common LED ARM926EJS assembler programs in HELEN2 project
;
; Project : HELEN2, OMAP1610
;
; Author : Dayo Adeyeye
;
; Note :
;*******************************************************************************
; EXPORTED DATA/LABEL DECLARATION
EXPORT DumpStop_LED
EXPORT SetARM_WFI_sleep
CODE16 ; CPU in Thumb state & supervisor mode for code density
AREA |.text|,CODE,READONLY; Named sections for code area
;===============================================================================
; SetARM_WFI_sleep(gpio_base_addr, execpin)
; gpio_base_addr ------> R0
; execpin ------> R1
;
; Input : r0 = gpio base address. r1 = gpio exec pin.
; Output : None.
;===============================================================================
; DESCRIPTION :
;===============================================================================
SetARM_WFI_sleep
push {r0-r7,lr}
;; Switch to supervisor mode, stack is no longer in use while in assembler.
swi 0xFA ; 0xFA : Enable INT_Swi, Supervisor mode
mov r6, #0x1
mov r7, r0
lsl r6, r1 ; set GPIO bit position, 0x1 << r1 (position)
mov r0, #0x0 ; SBZ for ARM wait for int operation
adr r1, to32state
bx r1
CODE32 ; Change to ARM State 32 bit
to32state
strh r6, [r7, #0xB0] ; Clear gpio exec pin to 0
mov r5, #0x0
mcr p15, 0, r5, c7, c10, 4 ; Drain Dcache Write buffer, r5
tci_loop
mrc p15, 0, pc, c7, c14, 3 ; Test, clean Invalidate Dcache
bne tci_loop
nop
nop
;; Put ARM9 in idle === Wait for Interrupt after Write Buffers ==================
mcr p15, 0, r0, c7, c0, 4
nop ; 3 no ops to clear the address bus and pipeline
adr r1, to16state + 1
bx r1
CODE16 ; Change to Thumb state 16 bits
to16state
swi 0xFB ; 0xFB : Enable INT_Swi, User mode
pop {r0-r7,pc}
CODE16 ; CPU in Thumb state & supervisor mode for code density
AREA |.text|,CODE,READONLY ; Named sections for code area
;===============================================================================
; DumpStop_LED(UWORD16 ledsig)
; LED FAILED DUMP Signature ------> R0
;
; Input : None.
; Output : None.
;===============================================================================
; DESCRIPTION :
;===============================================================================
DumpStop_LED
ldr r4, SPY_OUTPUT ; 0x05000000
ldr r1, SPY_DATA0 ; 0x5555
mvn r2, r1 ; 0xFFFFAAAA
mov r3, #0x1 ; Error Count = 0x1
ldr r5, SPY_FAIL ; 0xDEAD
ldr r6, SPY_END ; 0xF1F1
strh r1, [r4]
strh r2, [r4, #0x2]
strh r3, [r4, #0x4]
strh r0, [r4, #0x6]
strh r5, [r4, #0x8]
strh r6, [r4, #0xA]
ldr r0, SPY_ENDSPACE; To stop simulation in Vhdl
ldr r1, SPY_STOP ; 0xFFFF
strh r1, [r0] ; Actually writes 0xFFFF
loop_forever
b loop_forever
SPY_OUTPUT DCD 0x05000000
SPY_ENDSPACE DCD 0x050000FE
SPY_DATA0 DCD 0x5555
SPY_FAIL DCD 0xDEAD
SPY_END DCD 0xF1F1
SPY_STOP DCD 0xFFFF
END ; Terminate assembly
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -