在线时间0 小时
UID3678125
注册时间2020-10-23
NXP金币0
该用户从未签到
新手上路
- 积分
- 6
- 最后登录
- 2020-10-23
|
//**********定义flash配置全局变量**********//
static flash_config_t g_stflash_config;
//**********定义flash工作信息结构体**********//
stFlashWorkInfo g_stFlashWorkInfo;
unsigned int pflashBlockBase = 0;
unsigned int pflashTotalSize = 0;
unsigned int pflashSectorSize = 0;
/*******************************************************************************
*函数名称:void Flash_Init( void )
*函数功能:Flash初始化函数
*入口参数:无
*出口参数:无
*备注:无
*******************************************************************************/
void Flash_Init( void )
{
flash_security_state_t l_stflash_security_state = kFLASH_SecurityStateNotSecure;
memset( &g_stflash_config, 0, sizeof( flash_config_t ) );
if( kStatus_FLASH_Success != FLASH_Init( &g_stflash_config ) )
{
printf("flash init failed !\r\n");
g_stFlashWorkInfo.m_enFlashState = FLASH_ABNORMAL;
}
else
{
FLASH_GetProperty(&g_stflash_config, kFLASH_PropertyPflashBlockBaseAddr, &pflashBlockBase);
FLASH_GetProperty(&g_stflash_config, kFLASH_PropertyPflashTotalSize, &pflashTotalSize);
FLASH_GetProperty(&g_stflash_config, kFLASH_PropertyPflashSectorSize, &pflashSectorSize);
if( kStatus_FLASH_Success != FLASH_GetSecurityState( &g_stflash_config, &l_stflash_security_state ) )
{
printf("flash get security failed !\r\n");
g_stFlashWorkInfo.m_enFlashState = FLASH_ABNORMAL;
}
else
{
if ( kFLASH_SecurityStateNotSecure != l_stflash_security_state )
{
printf("flash is secure !\r\n");
g_stFlashWorkInfo.m_enFlashState = FLASH_ABNORMAL;
}
else
{
printf("flash init ok\r\n");
g_stFlashWorkInfo.m_enFlashState = FLASH_NORMAL;
}
}
}
}
/*******************************************************************************
*函数名称:void Flash_Erase_Data( void )
*函数功能:Flash擦除数据函数
*入口参数:数据起始地址(l_u32StartAdd),数据缓存指针(*l_pu32DataBufferStartAdd),数据数量(l_u8DataCnt)
*出口参数:无
*备注:无
*******************************************************************************/
void Flash_Erase_Data( unsigned int l_u32StartAdd, unsigned int *l_pu32DataBufferStartAdd, unsigned char l_u8DataCnt )
{
flash_security_state_t l_stflash_security_state = kFLASH_SecurityStateNotSecure;
if( FLASH_NORMAL == Get_Flash_State() )
{
if( kStatus_FLASH_Success != FLASH_GetSecurityState( &g_stflash_config, &l_stflash_security_state ) )
{
printf("flash get security failed !\r\n");
g_stFlashWorkInfo.m_enFlashState = FLASH_ABNORMAL;
}
else
{
if ( kFLASH_SecurityStateNotSecure != l_stflash_security_state )
{
printf("flash is secure !\r\n");
g_stFlashWorkInfo.m_enFlashState = FLASH_ABNORMAL;
}
else
{
l_u32StartAdd = pflashBlockBase + (pflashTotalSize - (1U * pflashSectorSize * 2));
if( kStatus_FLASH_Success != FLASH_Erase(&g_stflash_config, l_u32StartAdd, l_u8DataCnt, kFLASH_ApiEraseKey) )
{
printf("flash eraser add 0X%x failed \r\n", l_u32StartAdd);
g_stFlashWorkInfo.m_enFlashState = FLASH_ABNORMAL;
}
else
{
if( kStatus_FLASH_Success != FLASH_VerifyErase(&g_stflash_config, l_u32StartAdd, l_u8DataCnt, kFLASH_MarginValueUser) )
{
printf("flash verify eraser add 0X%x failed \r\n", l_u32StartAdd);
g_stFlashWorkInfo.m_enFlashState = FLASH_ABNORMAL;
}
else
{
printf("flash verify eraser add 0X%x ok \r\n", l_u32StartAdd);
}
}
}
}
}
else
{
printf( "flash state err before eraser 0X%x \r\n", l_u32StartAdd );
}
}
|
|