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

📄 led_common.s

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 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 + -