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

📄 init.s

📁 OKI DEMO FLASH WRITE PROGRAM
💻 S
字号:
;/****************************************************************************/
;/*                                                                          */
;/*    Copyright (C) 2006 Oki Electric Industry Co., LTD.                    */
;/*                                                                          */
;/*    System Name    :  ML675050                                            */
;/*    Module Name    :  Flash Memory Write Utility flash module             */
;/*    File   Name    :  init.s                                              */
;/*    Revision       :  01.00                                               */
;/*    Date           :  2006/03/20                                          */
;/*                                                                          */
;/****************************************************************************/

    IF	{ARMASM_VERSION} >= 200000
	PRESERVE8
    ENDIF

        AREA    Init, CODE

        INCLUDE define.s        ; common definitions
        
; locations of various things in our memory system
USR_Stack       EQU     RAM_Limit          ; top of USR stack
SVC_Stack       EQU     USR_Stack-1024          ; top of SVC stack

; --- Define entry point
        ENTRY

; set up the SVC stack pointer last and return to SVC mode
        MOV     R0, #Mode_SVC:OR:I_Bit:OR:F_Bit ; no interrupts
        MSR     CPSR_c, R0
        LDR     R13, =SVC_Stack ; set SVC mode STACK.

; --- initialize memory required by C code

        IMPORT  |Image$$RO$$Limit|      ; end of ROM code (=start of ROM data)
        IMPORT  |Image$$RW$$Base|       ; base of RAM to initialize
        IMPORT  |Image$$ZI$$Base|       ; base and limit of area
        IMPORT  |Image$$ZI$$Limit|      ; to zero initialize

        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 initialized data
        CMP     r0, r1  ; check that they are different
        BEQ     %F1
0       CMP     r1, r3  ; copy init data
        LDRCC   r2, [r0], #4
        STRCC   r2, [r1], #4
        BCC     %B0
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     %B2

; --- now change to user mode and set up user mode stack.
        MOV     R0, #Mode_USR:OR:F_Bit:OR:I_Bit
        MSR     CPSR_c, R0
        LDR     sp, =USR_Stack  ; set USR mode stack.

; --- now enter the C code
        IMPORT  C_Entry

        LDR     r0, =C_Entry
        MOV     lr, pc
        BX      r0              ; branch to C_Entry function.
        
END_LOOP
        B       END_LOOP

        END

⌨️ 快捷键说明

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