/*==============================================================================*/ 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; }
/****************************************************************************** * * 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; } }
/*==============================================================================*/ 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; }
/*==============================================================================*/ 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; }
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(); }
/* 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 */ } } }