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

📄 rominit.s

📁 windows mobile 6.13 dnldr下载源码
💻 S
字号:
/* romInit.s - ARM Integrator ROM initialization module */

/******************************************************************************
* modification history:                                                       *

******************************************************************************/

#define _ASMLANGUAGE


#include "Register.h"
#include "mem.h"

    .globl  _romInit
    /* .extern OCR_UE_UARTProcMain
    .extern SafeCheckMain */

       .text
       .balign 4

/*******************************************************************************
*
* romInit - entry point for OnChipRom
*
*/

/*_ARM_FUNCTION(romInit)*/
_romInit:
	        
	    /* If send reset-command error, repeat 3 times */
        MOV     r3, #3
Nand_Restore:
        LDR     r2, =0x30121000
        LDR     r7, [r2, #NF_DATANUM]
        LDR     r4, [r2, #NF_BUFCFG]
        LDR     r5, [r2, #NF_CFG]
        LDR     r6, [r2, #NF_CMD]
Nand_Reset:
        /* Change to normal mode */
        LDR     r1, =0xF
        STR     r1, [r2, #NF_BUFCFG]
        /* address number: 0;  Only command; */
        LDR     r1, =0x20
        STR     r1, [r2, #NF_CFG]
        /* Reset Command */
        LDR     r1, =0xFF
        STR     r1, [r2, #NF_CMD]

        MOV     r0, #0x6600             /* 2ms Delay */
Nand_RstWait:
        SUBS    r0, r0, #1
        BNE     Nand_RstWait

        /* Check reset command done */
        LDR     r1, [r2, #NF_INTSTATUS]
        AND     r1, r1, #0x1
        CMP     r1, #0x1
        BNE     Nand_Err
        
        /* Clear Interrupt Status */
        MOV     r1, #1
        STR     r1, [r2, #NF_INTCLR]

Nand_RdStatus:
        /* Read 1 Byte */
        LDR     r1, =0x1
        STR     r1, [r2, #NF_DATANUM]
        /* address number: 0;  Only command; Read Mode */
        LDR     r1, =0x0
        STR     r1, [r2, #NF_CFG]
        /* Read Command */
        LDR     r1, =0x70
        STR     r1, [r2, #NF_CMD]

        MOV     r0, #0x100              /* 50us Delay */
Nand_RdFinish:
        SUBS    r0, r0, #1
        BEQ     Nand_Err
        LDR     r1, [r2, #NF_INTSTATUS]
        AND     r1, r1, #0x2
        CMP     r1, #0x2
        BNE     Nand_RdFinish

        /* Clear Read Interrupt Status */
        MOV     r1, #3
        STR     r1, [r2, #NF_INTCLR]

/*Nand_Ok:
        LDR     r0, =NANDC_DATA_BASE_ADDR
        LDR     r1, [r0]
        ANDS    r1, r1, #0x1
        BNE     Nand_RdStatus*/

        B       Nand_Recover
Nand_Err:
        SUBS    r3, r3, #1
        BNE     Nand_Reset

Nand_Recover:
        STR     r7, [r2, #NF_DATANUM]
        STR     r4, [r2, #NF_BUFCFG]
        STR     r5, [r2, #NF_CFG]
        STR     r6, [r2, #NF_CMD]


    /* Set up the stack */
Stack_Setup:
    LDR     r0, _TEXT_BASE      /* upper 128 KiB: relocated uboot   */
    ADD     r0, r0, #RAM_USED_LEN
    SUB     sp, r0, #4          /* leave 1 words */

#ifdef CHECK_SP_OVERFLOW
Check_SP:
    SUB     r1, r0, #0x10
    LDR     r0, _bss_end
    LDR     r2, _mem_ufill      /* clear                            */
StSp_l:
    STR     r2, [r0]            /* SET 0xFFFFFFFF */
    ADD     r0, r0, #4
    CMP     r0, r1
    BNE     StSp_l
#endif

Usb_Index:
    LDR     r1, _bss_start      /* find start of bss segment        */
    LDR     r0, [r1]

Clear_Bss:
    LDR     r1, _bss_start      /* find start of bss segment        */
    LDR     r2, _bss_end        /* stop here                        */
    MOV     r3, #0x00000000     /* clear                            */

Clbss_l:
    STR     r3, [r1]            /* clear loop...                    */
    ADD     r1, r1, #4
    CMP     r1, r2
    BLE     Clbss_l
      
Main_Call:
    /* prepare to receive ram init proc*/
    /* Initialize the stack pointer to just before run C program.*/
    /* LDR     sp, =ECS_DTCM_BASE_ADDR + ECS_DTCM_SIZE - 4 */
    BL      Main
/* Main_Call end */
        


/******************************************************************************/


/*
 * PC-relative-addressable pointers - LDR Rn,=sym is broken
 * note "_" after "$" to stop preprocessor preforming substitution
 */

_TEXT_BASE:
    .word   RAM_BASE_ADDR

    .globl _armboot_start
_armboot_start:
    .word _romInit

    .globl _mem_ufill
_mem_ufill:
    .word RAM_UNUSED_FILL

/*
 * These are defined in the board-specific linker script.
 */
    .globl _bss_start
_bss_start:
    .word __bss_start

    .globl _bss_end
_bss_end:
    .word _end

⌨️ 快捷键说明

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