2025-04-26 16:03:23 +08:00

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;
}