vivi bootloader,已经修改过的适用于s3c2410

源代码在线查看: nand_read.c

软件大小: 478 K
上传用户: rylzll
关键词: bootloader s3c2410 vivi 修改
下载地址: 免注册下载 普通下载 VIP

相关代码

				/* 				 * vivi/s3c2410/nand_read.c: Simple NAND read functions for booting from NAND				 *				 * Copyright (C) 2002 MIZI Research, Inc.				 *				 * Author: Hwang, Chideok 				 * Date  : $Date: 2002/08/14 10:26:47 $				 *				 * $Revision: 1.6 $				 * $Id: param.c,v 1.9 2002/07/11 06:17:20 nandy Exp 				 *				 * History				 *				 * 2002-05-xx: Hwang, Chideok 				 *    - 瞪芭扼绊 抄叼俊霸 淋.				 *				 * 2002-05-xx: Chan Gyun Jeong 				 *    - 抄叼狼 何殴阑 罐绊 力措肺 悼累窍档废 荐沥.				 *				 * 2002-08-10: Yong-iL Joh 				 *    - SECTOR_SIZE啊 512牢 仇篮 促 佬档废 荐沥				 *				 */								#include 								#define __REGb(x)	(*(volatile unsigned char *)(x))				#define __REGi(x)	(*(volatile unsigned int *)(x))				#define NF_BASE		0x4e000000				#define NFCONF		__REGi(NF_BASE + 0x0)				#define NFCMD		__REGb(NF_BASE + 0x4)				#define NFADDR		__REGb(NF_BASE + 0x8)				#define NFDATA		__REGb(NF_BASE + 0xc)				#define NFSTAT		__REGb(NF_BASE + 0x10)								#define BUSY 1				inline void wait_idle(void) {				    int i;								    while(!(NFSTAT & BUSY))				      for(i=0; i				}								#define NAND_SECTOR_SIZE	512				#define NAND_BLOCK_MASK		(NAND_SECTOR_SIZE - 1)								/* low level nand read function */				int				nand_read_ll(unsigned char *buf, unsigned long start_addr, int size)				{				    int i, j;								    if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {				        return -1;	/* invalid alignment */				    }								    /* chip Enable */				    NFCONF &= ~0x800;				    for(i=0; i								    for(i=start_addr; i < (start_addr + size);) {				      /* READ0 */				      NFCMD = 0;								      /* Write Address */				      NFADDR = i & 0xff;				      NFADDR = (i >> 9) & 0xff;				      NFADDR = (i >> 17) & 0xff;				      NFADDR = (i >> 25) & 0xff;								      wait_idle();								      for(j=0; j < NAND_SECTOR_SIZE; j++, i++) {					*buf = (NFDATA & 0xff);					buf++;				      }				    }								    /* chip Disable */				    NFCONF |= 0x800;	/* chip disable */								    return 0;				}							

相关资源