【NXP S32K144 基于EB Tresos(MCAL) 的Fls模块代码分析】

前言

本文为NXP S32K144 基于EB Tresos Fls模块的简单代码分析,描述了使用Fls模块写入数据的大致流程。

三个函数分析

Fls_Init


Fls_Init()
{
	……
Fls_eJobResult = MEMIF_JOB_OK;
……
}

说明:
Fls_Init函数在正确初始化后,会将Fls_eJobResult 状态切换为 MEMIF_JOB_OK,这是Fls_Erase和Fls_Write正常运行的前提条件。

Fls_ Erase

	
Fls_Erase()
{
	……
	if( MEMIF_JOB_PENDING == Fls_eJobResult )
	{
		u8RetVal = (Std_ReturnType)E_NOT_OK;
	}
	Else// Fls_eJobResult == MEMIF_JOB_OK;
	{
		Fls_eJob = FLS_JOB_ERASE;
		Fls_u8JobStart = 1U;
		Fls_eJobResult = MEMIF_JOB_PENDING;
	}
	……
}

说明:
Fls_Erase函数主要用于设置ERASE擦除指令,并设置Fls_MainFunction函数会用到的三个参数Fls_eJob, Fls_u8JobStart, Fls_eJobResult。

Fls_MainFunction


Fls_MainFunction()
{
	……
	if( MEMIF_JOB_PENDING == Fls_eJobResult )
    {
          
       if( 1U == Fls_u8JobStart )
       {            
           Fls_u8JobStart = 0U;
           
           /* Clear result of hardware job */
           Fls_LLDClrJobResult();
           Fls_IPW_AbortSuspended();
           switch( Fls_eJob )
           {
               case FLS_JOB_ERASE:
                       eWorkResult = Fls_DoJobErase();
               break;
               case FLS_JOB_WRITE:
                       eWorkResult = Fls_DoJobDataTransfer( Fls_eJob, Fls_u32MaxWrite );
               break;
   }
   ……
}

说明:
Fls_MainFunction函数是执行Fls_Erase和Fls_Write的实体,函数运行时会清除硬件的结果,然后运行擦除操作,实际执行擦除的是Fls_DoJobErase函数完成,同理实际执行Flash写的是Fls_DoJobDataTransfer函数完成。

Fls_Write


Fls_Write()
{
	……
	if( MEMIF_JOB_PENDING == Fls_eJobResult )
	{
		u8RetVal = (Std_ReturnType)E_NOT_OK;
	}
	Else// Fls_eJobResult == MEMIF_JOB_OK;
	{
		Fls_eJob = FLS_JOB_WRITE;
		Fls_u8JobStart = 1U;
		Fls_eJobResult = MEMIF_JOB_PENDING;
	}
	……
}

说明:
Fls_Write函数主要用于设置WRITE写入指令,并设置Fls_MainFunction函数会用到的三个参数Fls_eJob, Fls_u8JobStart, Fls_eJobResult。

使用Fls模块写入数据的流程

  1. Fls_Init函数初始化
  2. Fls_Erase函数设置ERASE指令及相关参数
  3. 循环调用Fls_MainFunction函数执行Fls的Erase操作
  4. Fls_Write函数设置WRITE指令及相关参数
  5. 循环调用Fls_MainFunction函数执行Fls的Write操作

总结

三个函数Fls_Init, Fls_Erase及Fls_MainFunction的具体作用
使用Fls模块写入数据的流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值