示例#1
0
/*==============================================================================*/
void samDataFlashReadFixAddr(unsigned char *RdDataBuff,unsigned int RdCnt)
{
	fal_request_t   dtyRequester;

	unsigned int i=0;
	unsigned int nRdCnt=0;
	unsigned long __far *DataPtr =(__far unsigned long*)RdDataBuff;

	if(RdCnt%4)
	{
//		return 0xee;	//Data Length Error
	}
	nRdCnt = RdCnt/4;

	dtyRequester.status_enu = FAL_Init( &FixArea_fal_descriptor_str );

	if( dtyRequester.status_enu == FAL_OK )
	{
		FAL_Open();

		for(i=0; i<nRdCnt; i++)
		{
			dtyRequester.data_u32 = 0;
			dtyRequester.index_u16   = i;
			dtyRequester.command_enu = FAL_CMD_READ_WORD;
			dtyRequester.status_enu  = 0;

			FAL_Execute( &dtyRequester );

			*(DataPtr+i) = dtyRequester.data_u32;
		}
		FAL_Close();
	}
//    return dtyRequester.status_enu;
}
示例#2
0
/******************************************************************************
*
*	eeprom emu sample
*		mikasa yokoyama
*
******************************************************************************/
void tk_eel_init( void )
{
	fal_status_t fal_status;
	eel_status_t eel_status;

	if ( EEPROM_Initialized != true )
	{
		/* Data Fash Access Library init */
		fal_status = FAL_Init(&fal_descriptor_str);			

		if( FAL_OK == fal_status )
		{
			NOP();												/* FDL can be used */
		}
		else
		{
			//error
			Print_EEPROM( "tk_eel_init, FAL_Init error!!" );
			return;
		}

		/* EEPROM Emulation Library init */

		eel_status = EEL_Init();							

		if( EEL_OK == eel_status )
		{
			NOP();												/* EEL pool and descriptor OK */
		}
		else
		{
			//error
			Print_EEPROM( "tk_eel_init, EEL_Init error!!" );
			return;
		}
		/* finished initialize */
		EEPROM_Initialized = true;
	}
}
示例#3
0
/*==============================================================================*/
void samDataFlashWriteFixAddr(unsigned char *WrDataBuff,unsigned int WrCnt)
{
	fal_request_t   dtyRequester;

	unsigned int i=0;
	unsigned int nWrCnt=0;
	unsigned long __far *DataPtr =(__far unsigned long*)WrDataBuff;

	if(WrCnt%4)
	{
//		return 0xee;	//Data Length Error 		
	}
	nWrCnt = WrCnt/4;

	dtyRequester.status_enu = FAL_Init( &FixArea_fal_descriptor_str );

	if( dtyRequester.status_enu == FAL_OK )
	{
		FAL_Open();

		for(i=0; i<nWrCnt; i++)
		{
			dtyRequester.data_u32    = *(DataPtr+i);
			dtyRequester.index_u16   = i;
			dtyRequester.command_enu = FAL_CMD_WRITE_WORD;
			dtyRequester.status_enu  = 0;

			FAL_Execute( &dtyRequester );

			do {
				FAL_Handler();
			} while( dtyRequester.status_enu == FAL_BUSY );
		}
		FAL_Close();
	}
//    return dtyRequester.status_enu;
}
示例#4
0
/*==============================================================================*/
void samDataFlashEraseFixAddr( void )
{
	fal_request_t   dtyRequester;

	dtyRequester.status_enu = FAL_Init( &FixArea_fal_descriptor_str );

	if( dtyRequester.status_enu == FAL_OK )
	{
		FAL_Open();

		dtyRequester.data_u32    = 0;
		dtyRequester.index_u16   = 0;
		dtyRequester.command_enu = FAL_CMD_ERASE_BLOCK;
		dtyRequester.status_enu  = 0;

		FAL_Execute( &dtyRequester );

		do {
			FAL_Handler();
		} while( dtyRequester.status_enu == FAL_BUSY );
		FAL_Close();
	}
//   return dtyRequester.status_enu;
}
示例#5
0
void Data_FAL_Init(void)    
{
	my_fal_status_t = FAL_Init((__far fal_descriptor_t*) &fal_descriptor_str);    
	if (my_fal_status_t != FAL_OK)  Error_Handler();
}  
示例#6
0
/* Start user code for adding. Do not edit comment generated here */
void tk_eel_start(void)
{

	fal_status_t fal_status;
	eel_status_t eel_status;
	
	/* eel_request_t init */
	eel_request.address_pu08 = ((void*)(0));
	eel_request.identifier_u08 = 0x00;
	eel_request.timeout_u08 = 0x00;
	eel_request.command_enu = EEL_CMD_UNDEFINED;
	
	/* Data Fash Access Library init */
	fal_status = FAL_Init(&fal_descriptor_str);			
	
	if( FAL_OK == fal_status )
	{
		NOP();												/* FDL can be used */
	}
	else
	{
		//error
		while(1)
		{
			;	/* NULL */
		}
	}
	
	/* EEPROM Emulation Library init */

	eel_status = EEL_Init();							
	
	if( EEL_OK == eel_status )
	{
		NOP();												/* EEL pool and descriptor OK */
	}
	else
	{
		//error
		while(1)
		{
			;	/* NULL */
		}
	}
	
	/* Data Flash Access Library Open */
	EEL_Open();											
	
	/* STARTUP Command ?? */
	eel_request.command_enu  = EEL_CMD_STARTUP;			/* STARTUP Command */
	eel_request.timeout_u08  = 255; 					/* enforced mode */
	EEL_Execute(&eel_request);							/* Command process */
	
	if( EEL_OK == eel_request.status_enu )
	{
		NOP();												/* STARTUP Command OK */
	}
	else if( EEL_ERR_POOL_INCONSISTENT == eel_request.status_enu )
	{
		/* STARTUP Command 실행시 eel pool 구조에 문제가 발생했을 경우의 처리(처음으로 기동할 때 등등)*/
		/* FORMAT Command 실행 */
		eel_request.command_enu  = EEL_CMD_FORMAT;		/* FORMAT Command set */
		eel_request.timeout_u08  = 255; 		 		/* enforced mode로 설정 */
		EEL_Execute(&eel_request);						/* Command 실행 */
		
		if( EEL_OK == eel_request.status_enu )
		{
			NOP();											/* request was finished regular */
		}
		else
		{
			//error
			while(1)
			{
				;	/* NULL */
			}
		}
		
		/* STARTUP Command재실행 */
		eel_request.command_enu  = EEL_CMD_STARTUP;		/* STARTUP Command set */
		eel_request.timeout_u08  = 255;					/* enforced mode set */
		EEL_Execute(&eel_request);						/* Command 실행 */
		
		if( EEL_OK == eel_request.status_enu )
		{
			NOP();											/* STARTUP Command OK */
		}
		else
		{
			//error
			while(1)
			{
				;	/* NULL */
			}
		}
	}
	else
	{
		//error
		while(1)
		{
			;	/* NULL */
		}
	}
}