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

📄 lib_sdram_execute.s

📁 ARM AT9260的一段初始代码,主要是用来测试SDRAM
💻 S
字号:
;          ATMEL Microcontroller Software Support  -  ROUSSET  -
;  ----------------------------------------------------------------------------
;  DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
;  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
;  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
;  DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
;  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
;  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
;  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
;  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
;  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;-----------------------------------------------------------------------------
;- File source          : Execute.s
;- Object               : Execution code to allow consumption measurement
;- Translator           : ARM Software Development Toolkit V2.5
;-
;- Exported Resources   : ExecuteTest
;- Imported Resources   : None
;-
;- 1.0 2002/06/25 ED    : Creation
;------------------------------------------------------------------------------

                AREA        TEST, CODE, READONLY


NB_LOOP		EQU	16

;------------------------------------------------------------------------------
;- Function             : ExecuteTest
;- Treatments           :
;- Input Parameters     :
;-      r0 = address where to run the test function from
;-      r1 = 0 indicates to run the test in ARM, else in Thumb
;- Output Parameters    :
;-      r0 = copied assembler code length
;- Registers lost       : None
;- Called Functions     : None
;- Called Macros        : None
;------------------------------------------------------------------------------
            EXPORT      ExecuteTest
ExecuteTest
            stmdb       r13!, {r4,r5,r6,r14}
            mov         r4, r0

            movs        r2, r1
            ldreq       r2, =ExecuteArmTest
            ldrne       r2, =ExecuteThumbTest
            bic         r2, r2, #3

            ldr         r3, =Execute_end
            
            sub			r5, r3, r2

CopyTest_loop
            ldr         r12, [r2], #4
            str         r12, [r0], #4
            cmp         r2, r3
            blo         CopyTest_loop

;- Test Arm or Thumb Call requested
            movs        r2, r1
            beq         ArmCall
;- Thumb Call
            add         r4, r4, #1
            mov         lr, pc
            bx          r4

;- Exit
            b           Exit

;- Arm Call
ArmCall
            mov         lr, pc
            mov         pc, r4

;- Exit
Exit
            mov         r0, r5

            ldmia       r13!, {r4,r5,r6, r14}
            bx          r14

;------------------------------------------------------------------------------
;- Function             : ExecuteArmTest
;- Treatments           :
;- Input Parameters     : None
;- Output Parameters    : None
;- Registers lost       : None
;- Called Functions     : None
;- Called Macros        : None
;------------------------------------------------------------------------------

            EXPORT      ExecuteArmTest
ExecuteArmTest
            mov         r0, #0
            mov         r1, #NB_LOOP
ArmTest_first_loop
            add			r0, r0, #1
            cmp			r1, r0
            beq         EndArmExecute
            
            mov			r6, #0
            mov			r7, #NB_LOOP
ArmTest_second_loop
            add			r6, r6, #1
            cmp			r7, r6
            beq			ArmTest_first_loop

            b           ArmTest_second_loop

EndArmExecute
            bx          lr

;------------------------------------------------------------------------------
;- Function             : ExecuteThumbTest
;- Treatments           : AT91 Thumb execution function
;- Input Parameters     : None
;- Output Parameters    : None
;- Registers lost       : None
;- Called Functions     : None
;- Called Macros        : None
;------------------------------------------------------------------------------
            CODE16
            EXPORT      ExecuteThumbTest

ExecuteThumbTest
            mov     r0, #0
            mov     r1, #NB_LOOP
ThumbTest_first_loop
            add		r0, r0, #1
            cmp		r1, r0
            beq     EndThumbExecute

            mov		r6, #0
            mov		r7, #NB_LOOP
ThumbTest_second_loop
            add		r6, r6, #1
            cmp		r7, r6
            beq		ThumbTest_first_loop

            b       ThumbTest_second_loop

EndThumbExecute
            bx      lr

            CODE32
            ALIGN
NbLoop
            DCD     NB_LOOP
            
Execute_end
            
            END

⌨️ 快捷键说明

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