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

📄 nand_s.s

📁 S3C2410 For Wince5.0 NAND Flash 启动的源代码
💻 S
字号:
;
; Copyright (c) Microsoft Corporation.  All rights reserved.
;
;
; Use of this source code is subject to the terms of the Microsoft end-user
; license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
; If you did not accept the terms of the EULA, you are not authorized to use
; this source code. For a copy of the EULA, please see the LICENSE.RTF on your
; install media.
;
;*************************************************************
; NAME : NAND FLASH Subroutine for a410 bootstrap
; DATE : 18.FEB.2002
; DESC :
;  02.18.2002:purnnamu: modified for A410
;  04.24.2002:purnnamu: optimized for NAND flash bootstrap 
;*************************************************************

A410_BASE_ADDR	EQU	0x2000000

	MACRO
	LDR4STR1 $src,$tmp1,$tmp2	
	ldrb	$tmp1,[$src]
	ldrb	$tmp2,[$src]
	orr	$tmp1,$tmp1,$tmp2,LSL #8
	ldrb	$tmp2,[$src]
	orr	$tmp1,$tmp1,$tmp2,LSL #16
	ldrb	$tmp2,[$src]
	orr	$tmp1,$tmp1,$tmp2,LSL #24
	MEND

	AREA |C$$code|, CODE, READONLY
	
	EXPORT	__RdPage512
__RdPage512
	;input:a1(r0)=pPage
	stmfd	sp!,{r1-r11}

	ldr	r1,=0x4e00000c  ;NFDATA
	mov	r2,#0x200
0	
	LDR4STR1 r1,r4,r3
	LDR4STR1 r1,r5,r3
	LDR4STR1 r1,r6,r3
	LDR4STR1 r1,r7,r3
	LDR4STR1 r1,r8,r3
	LDR4STR1 r1,r9,r3
	LDR4STR1 r1,r10,r3
	LDR4STR1 r1,r11,r3
	stmia	r0!,{r4-r11}
	subs	r2,r2,#32
	bne	%B0

	ldmfd	sp!,{r1-r11}
	mov	pc,lr

    EXPORT __RdPage512Unalign
__RdPage512Unalign
        stmfd    sp!,{r1 - r12}

        ldr    r1, =0x4e00000c  ;NFDATA
        mov    r2, #480

        ; Calculate number of unaligned bytes to read (r12 = 4 - (r0 & 3))
        and    r12, r0, #3
        rsb    r12, r12, #4
        mov    r3, r12
        
rd_unalign1
        ; Read unaligned bytes
        ldrb    r4, [r1]
        strb    r4, [r0]
        add    r0, r0, #1
        subs    r3, r3, #1
        bne    rd_unalign1
        
rd_main    
        ; Read 480 bytes (32 x 15)
        LDR4STR1 r1,  r4, r3
        LDR4STR1 r1,  r5, r3
        LDR4STR1 r1,  r6, r3
        LDR4STR1 r1,  r7, r3
        LDR4STR1 r1,  r8, r3
        LDR4STR1 r1,  r9, r3
        LDR4STR1 r1, r10, r3
        LDR4STR1 r1, r11, r3

        stmia    r0!, {r4 - r11}
        subs    r2, r2, #32
        bne    rd_main

        ; Read 28 bytes
        LDR4STR1 r1,  r4, r3
        LDR4STR1 r1,  r5, r3
        LDR4STR1 r1,  r6, r3
        LDR4STR1 r1,  r7, r3
        LDR4STR1 r1,  r8, r3
        LDR4STR1 r1,  r9, r3
        LDR4STR1 r1, r10, r3
        stmia    r0!, {r4 - r10}

        ; Read trailing unaligned bytes
        rsbs    r12, r12, #4
        beq    rd_exit
        
rd_unalign2
        ldrb    r4, [r1]
        strb    r4, [r0]
        add    r0, r0, #1
        subs    r12, r12, #1
        bne    rd_unalign2       
rd_exit
        ldmfd    sp!, {r1 - r12}
        mov  pc, lr          ; return


	EXPORT	__RdPage256
__RdPage256
	;input:a1(r0)=pPage
	stmfd	sp!,{r1-r11}

	ldr	r1,=0x4e00000c  ;NFDATA
	mov	r2,#0x100
0	
	LDR4STR1 r1,r4,r3
	LDR4STR1 r1,r5,r3
	LDR4STR1 r1,r6,r3
	LDR4STR1 r1,r7,r3
	LDR4STR1 r1,r8,r3
	LDR4STR1 r1,r9,r3
	LDR4STR1 r1,r10,r3
	LDR4STR1 r1,r11,r3
	stmia	r0!,{r4-r11}
	subs	r2,r2,#32
	bne	%B0

	ldmfd	sp!,{r1-r11}
	mov	pc,lr

	END

⌨️ 快捷键说明

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