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

📄 test_nandflash.c

📁 test code for nandflash on lumit board,it s designed with S3C4510
💻 C
字号:
/* *	test_nandflash.c    --    test nandflash id *	 *	Author: 	lumit-admin <admin@lumit.org> *	Date:		2004-8-26 *	Copyright:	http://www.lumit.org */#include "led.h"#include <stdio.h>//#define SYSCFG		(0x03ff0000)#define UART0_BASE	(SYSCFG + 0xD000)#define UART1_BASE 	(SYSCFG + 0xE000)/* * Serial settings....................... */	#define	ULCON	0x00 #define	UCON	0x04#define	USTAT	0x08#define	UTXBUF	0x0C#define	URXBUF	0x10#define	UBRDIV	0x14/* * Line control register bits............ */ #define	ULCR8bits		(3)#define	ULCRS1StopBit	(0)#define	ULCRNoParity	(0)/* * UART Control Register bits............ */ #define 	UCRRxM	(1)#define 	UCRRxSI	(1 << 2)#define 	UCRTxM	(1 << 3)#define 	UCRLPB	(1 << 7)/* * UART Status Register bits */ #define USROverrun     	(1 << 0)#define	USRParity      	(1 << 1)#define	USRFraming     	(1 << 2)#define	USRBreak       	(1 << 3)#define	USRDTR			(1 << 4)#define	USRRxData      	(1 << 5) #define	USRTxHoldEmpty 	(1 << 6)#define	USRTxEmpty     	(1 << 7)#define GET_STATUS(p)	(*(volatile unsigned  *)((p) + USTAT))#define RX_DATA(s)     	((s) & USRRxData)#define GET_CHAR(p)		(*(volatile unsigned  *)((p) + URXBUF))#define TX_READY(s)    	((s) & USRTxHoldEmpty)#define PUT_CHAR(p,c)  	(*(unsigned  *)((p) + UTXBUF) = (unsigned )(c))void delay(){	int i, j;	for( i=0; i<50; i++ )		for ( j=0; j<65536; j++ )			;}void loop( void ){	LED_1_ON;	LED_2_ON;	LED_3_ON;	LED_4_ON;	delay();		LED_1_OFF;	LED_2_OFF;	LED_3_OFF;	LED_4_OFF;	delay();					LED_1_ON;	LED_2_ON;	LED_3_ON;	LED_4_ON;}int putchar_uart0(int ch){    /* Place your implementation of fputc here     */    /* e.g. write a character to a UART, or to the */    /* debugger console with SWI WriteC            */   	while ( TX_READY(GET_STATUS(UART0_BASE))==0);	    PUT_CHAR(UART0_BASE, ch);	       return ch;}struct __FILE { int handle;   /* Add whatever you need here */};FILE __stdout;int fputc(int ch, FILE *f){    /* Place your implementation of fputc here     */    /* e.g. write a character to a UART, or to the */    /* debugger console with SWI WriteC            */      putchar_uart0( ch );	       return ch;}int ferror(FILE *f){    /* Your implementation of ferror */    return EOF;}#define rPDATG            (*(volatile unsigned *)0x03FF5008)//RB  -> GPIO7//CLE -> GPIO15//ALE -> GPIO13//CE  -> GPIO11#define RB	(0x80)#define CLE	(0x8000)#define ALE	(0x2000)	#define CE	(0x800)//#define rKM29UXDATA	   (*(volatile unsigned char *)0x07000000)	//E CS bank2 //16k = 0x4000//#define rKM29UXDATA	   (*(volatile unsigned char *)0x07fd0000)	//E CS bank0//#define rKM29UXDATA	   (*(volatile unsigned char *)0x07fd4000)	//E CS bank1//#define rKM29UXDATA	   (*(volatile unsigned char *)0x07fd8000)	//E CS bank2#define rKM29UXDATA	   (*(volatile unsigned char *)0x07fd8000)	//E CS bank2/*KM29U128操作宏定义*/#define FC_CMD		{rPDATG |= CLE;	rPDATG &= ~(ALE|CE);}#define FC_ADDR		{rPDATG |= ALE;	rPDATG &= ~(CLE|CE);}#define FC_DATA        	{rPDATG &= ~(ALE|CLE|CE);}#define FC_INACTIVE	{rPDATG |= CE;	rPDATG &= ~(ALE|CLE);}       #define WAITRB		while(!(rPDATG & RB))  //wait tWB and check R/B pin.   unsigned int Check_Flash_Id(void){	int i;	unsigned int id;	FC_CMD;	rKM29UXDATA = 0x90;	FC_ADDR;	rKM29UXDATA = 0;	FC_DATA;	for(i=0;i<10;i++);	//wait 100ns	id = rKM29UXDATA<<8;	id += rKM29UXDATA;		FC_INACTIVE;	return id;	}void Flash_Reset()		//flash reset{ 	int i;	FC_CMD;	rKM29UXDATA = 0xff;	//reset command	for (i=0;i<3000;i++);	//delay 	}void read_nand_flash_id( void ){	int id = 0;	Flash_Reset();	printf( "*** lumit4510 test nand flash id program ***\r\n" );	id = Check_Flash_Id();	printf( "Nand Flash K9F2808Q0B chip id = 0x%x \r\n", id ); 	printf( "*** end ***\r\n" );	}//int main (void)void C_Entry( void ){	int count = 0;		int REFEXTCON = *(unsigned int *)(SYSCFG + 0x303C);	printf( "REFEXTCON = %x \r\n", REFEXTCON );	*(unsigned int *)0x03FF5000 = 0x0003ff7f;	read_nand_flash_id();	while(1);		while ( ++count )	{		loop();		putchar_uart0( 'l' );		putchar_uart0( 'u' );		putchar_uart0( 'm' );		putchar_uart0( 'i' );		putchar_uart0( 't' );								}}/**************************************************************** * End of Pascal.c ****************************************************************/

⌨️ 快捷键说明

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