289 lines
7.0 KiB
C
289 lines
7.0 KiB
C
/** ##########################################################################
|
|
** Filename :
|
|
** Project :
|
|
** Module :
|
|
** Processor :
|
|
** Version :
|
|
** Compiler :
|
|
** Date/Time :
|
|
** Abstract :
|
|
** Contents :
|
|
** Note :
|
|
**
|
|
** (c) Copyright dmdz Co.,Ltd
|
|
** --------------------------------------------------------------------------
|
|
** R E V I S I O N H I S T O R Y
|
|
** --------------------------------------------------------------------------
|
|
** Date Ver Author Description
|
|
|
|
** -20230602- --V1.0-- --mingyea--- --修改--
|
|
|
|
** #########################################################################*/
|
|
|
|
/*---------------------------------------------------------------------------
|
|
- I N C L U D E F I L E S
|
|
----------------------------------------------------------------------------*/
|
|
#include "common_types.h"
|
|
#include "error.h"
|
|
//#include "eeprom.h"
|
|
#include "nvm.h"
|
|
|
|
/*---------------------------------------------------------------------------
|
|
- D E F I N E S / M A C R O S
|
|
----------------------------------------------------------------------------*/
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
- T Y P E D E F I N I T I O N S
|
|
----------------------------------------------------------------------------*/
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
- S T A T I C V A R I A B L E S
|
|
----------------------------------------------------------------------------*/
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
* G L O B A L V A R I A B L E S
|
|
----------------------------------------------------------------------------*/
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
- C O N S T A N T S
|
|
----------------------------------------------------------------------------*/
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
- F U N C T I O N P R O T O T Y P E
|
|
----------------------------------------------------------------------------*/
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|Prototype :
|
|
|Called by :
|
|
|Preconditions :
|
|
|Input parameters :
|
|
|Output parameters :
|
|
|Return value :
|
|
|Description :
|
|
----------------------------------------------------------------------------*/
|
|
u8 ram_read_bytes(u32 addr,u8 *p_data,u16 len)
|
|
{
|
|
u8 l_result;
|
|
u8 *p_src;
|
|
u16 i;
|
|
|
|
if( (addr<RAM_START_ADDR) || (addr>RAM_END_ADDR) || ((addr+len)>(RAM_END_ADDR+1u)) )
|
|
{
|
|
l_result = (u8)ERR_FAILED;
|
|
}
|
|
else
|
|
{
|
|
p_src = (u8 *)(addr);
|
|
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
p_data[i] = p_src[i]; /*lint !e511*/
|
|
}
|
|
|
|
l_result = (u8)ERR_OK;
|
|
}
|
|
|
|
return l_result;
|
|
}
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|Prototype :
|
|
|Called by :
|
|
|Preconditions :
|
|
|Input parameters :
|
|
|Output parameters :
|
|
|Return value :
|
|
|Description :
|
|
----------------------------------------------------------------------------*/
|
|
u8 ram_write_bytes(u32 addr,u8 *p_data,u16 len)
|
|
{
|
|
u8 l_result;
|
|
u8 *p_addr;
|
|
u16 i;
|
|
|
|
if( (addr<RAM_START_ADDR) || (addr>RAM_END_ADDR) || ((addr+len)>(RAM_END_ADDR+1u)) )
|
|
{
|
|
l_result = (u8)ERR_FAILED;
|
|
}
|
|
else
|
|
{
|
|
p_addr = (u8 *)(addr);
|
|
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
p_addr[i] = p_data[i] ; /*lint !e511*/
|
|
}
|
|
|
|
l_result = (u8)ERR_OK;
|
|
}
|
|
|
|
return l_result;
|
|
}
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|Prototype :
|
|
|Called by :
|
|
|Preconditions :
|
|
|Input parameters :
|
|
|Output parameters :
|
|
|Return value :
|
|
|Description :
|
|
----------------------------------------------------------------------------*/
|
|
u8 flash_read_bytes(u32 addr,u8 *p_data,u16 len)
|
|
{
|
|
u8 l_result;
|
|
u8 *p_src;
|
|
u16 i;
|
|
|
|
if( (addr<FLASH_START_ADDR) || (addr>FLASH_END_ADDR) || ((addr+len)>(FLASH_END_ADDR+1u)) )
|
|
{
|
|
l_result = (u8)ERR_FAILED;
|
|
}
|
|
else
|
|
{
|
|
p_src = (u8 *)(addr);
|
|
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
p_data[i] = p_src[i]; /*lint !e511*/
|
|
}
|
|
|
|
l_result = (u8)ERR_OK;
|
|
}
|
|
|
|
return l_result;
|
|
}
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|Prototype :
|
|
|Called by :
|
|
|Preconditions :
|
|
|Input parameters :
|
|
|Output parameters :
|
|
|Return value :
|
|
|Description :
|
|
----------------------------------------------------------------------------*/
|
|
void nvm_init(void)
|
|
{
|
|
//u8 i;
|
|
flash_init();
|
|
//#ifdef NVM_EEPROM_EXT_EN
|
|
//eeprom_init();
|
|
//#endif
|
|
|
|
//nvm_eeprom_init();
|
|
|
|
//eeprom_ext_init();
|
|
#if 0
|
|
g_nvm_test.result = nvm_read_bytes(NVM_TYPE_EEPROM,0x100300,&g_nvm_test.read_data[0],16);
|
|
for(i=0;i<20;i++)
|
|
{
|
|
g_nvm_test.read_data[i] = 0;
|
|
g_nvm_test.write_data[i] = 0x36+i;
|
|
}
|
|
g_nvm_test.result = nvm_write_bytes(NVM_TYPE_EEPROM,0x100300,&g_nvm_test.write_data[0],16);
|
|
g_nvm_test.result = nvm_read_bytes(NVM_TYPE_EEPROM,0x100300,&g_nvm_test.read_data[0],16);
|
|
|
|
g_nvm_test.result = nvm_read_bytes(NVM_TYPE_FLASH,0xfe0000,&g_nvm_test.read_data[0],16);
|
|
g_nvm_test.result = nvm_read_bytes(NVM_TYPE_RAM,0x001000ul,&g_nvm_test.read_data[0],8);
|
|
for(i=0;i<20;i++)
|
|
{
|
|
g_nvm_test.write_data[i] = 0x36+i;
|
|
}
|
|
g_nvm_test.result = nvm_write_bytes(NVM_TYPE_RAM,0x001000ul,&g_nvm_test.write_data[0],8);
|
|
g_nvm_test.result = nvm_read_bytes(NVM_TYPE_RAM,0x001000ul,&g_nvm_test.read_data[0],8);
|
|
#endif
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|Prototype :
|
|
|Called by :
|
|
|Preconditions :
|
|
|Input parameters :
|
|
|Output parameters :
|
|
|Return value :
|
|
|Description :
|
|
----------------------------------------------------------------------------*/
|
|
void nvm_task(void)
|
|
{
|
|
//#ifdef NVM_EEPROM_EXT_EN
|
|
//eeprom_task();
|
|
//#endif
|
|
}
|
|
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|Prototype :
|
|
|Called by :
|
|
|Preconditions :
|
|
|Input parameters :
|
|
|Output parameters :
|
|
|Return value :
|
|
|Description :
|
|
----------------------------------------------------------------------------*/
|
|
u8 nvm_read_bytes(nvm_type_e type,u32 addr, u8 *p_data, u16 num)
|
|
{
|
|
u8 l_result = (u8)ERR_FAILED;
|
|
switch(type)
|
|
{
|
|
case NVM_TYPE_EEPROM:
|
|
//#ifdef NVM_EEPROM_EXT_EN
|
|
l_result =eeprom_read_u8_ext(addr,p_data,num);
|
|
//#endif
|
|
break;
|
|
case NVM_TYPE_RAM:
|
|
l_result =ram_read_bytes(addr,p_data,num);
|
|
break;
|
|
case NVM_TYPE_FLASH:
|
|
l_result =flash_read_bytes(addr,p_data,num);
|
|
break;
|
|
default:
|
|
//code
|
|
break;
|
|
}
|
|
return l_result;
|
|
}
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|Prototype :
|
|
|Called by :
|
|
|Preconditions :
|
|
|Input parameters :
|
|
|Output parameters :
|
|
|Return value :
|
|
|Description :
|
|
----------------------------------------------------------------------------*/
|
|
u8 nvm_write_bytes(nvm_type_e type,u32 addr, u8 *p_data, u16 num)
|
|
{
|
|
u8 l_result = (u8)ERR_FAILED;
|
|
switch(type)
|
|
{
|
|
case NVM_TYPE_EEPROM:
|
|
//#ifdef NVM_EEPROM_EXT_EN
|
|
l_result =eeprom_write_u8_ext(addr,p_data,num);
|
|
//#endif
|
|
break;
|
|
case NVM_TYPE_RAM:
|
|
l_result =ram_write_bytes(addr,p_data,num);
|
|
break;
|
|
case NVM_TYPE_FLASH:
|
|
//l_result =flash_read_bytes(addr,p_data,num);
|
|
break;
|
|
default:
|
|
//code
|
|
break;
|
|
}
|
|
return l_result;
|
|
}
|
|
|
|
|
|
|