/**
  **********************************************************************************
  * @file    cache_hal.c
  * @author  Product application department
  * @version V1.0
  * @date    2020.02.25
  * @brief   CACHE模块HAL层驱动.
  * @note 这个文件提供了hal层cache接口:
  *     - cache初始化接口.
  *
  @verbatim
  ===================================================================================
                                  ##### 更新 #####
  ===================================================================================
  [..] 更新时间:
  [..] 更新人:
  [..] 更新内容:
        1. nothing.
  @endverbatim
 */
#include "cache_hal.h"

/*** 全局变量定义 ***************************************************************/
/** @
  * @{volatile
  */
/** @ 
  * @}
  */
/** @ 
  * @{static
  */
/** @ 
  * @}
  */
/*** 常量定义 *******************************************************************/
/** @
  * @{const
  */
/** @ 
  * @}
  */

/*** 函数定义 *******************************************************************/

/**
 * @brief CACHE初始化
 * @param[in] rom: The attributes of rom memory regions；
 *                          取值cacheThrough, cacheBack or cacheOff
 *			 boot：The attributes of boot memory regions
 *                   	取值cacheThrough, cacheBack or cacheOff
 *			 spim1： The attributes of spim1 memory regions
 *				取值cacheThrough, cacheBack or cacheOff
 *			 eflash： The attributes of eflash memory regions
 *				取值cacheThrough, cacheBack or cacheOff
 * @note 上电后执行一次，请勿重复执行
 * @retval NONE
*/
void HAL_CACHE_Init(void)
{
    CACHE_InitTypeDef cache_init;
    
    cache_init.SPIM1  = CACHE_Through;
    cache_init.SPIM2  = CACHE_Off;
    cache_init.SDRAMC = CACHE_Off;       /* SDRAM的CACHE地址为0x18000000 */
    cache_init.EFLASH = CACHE_Through;
    cache_init.ROM    = CACHE_Off;
    cache_init.BOOT   = CACHE_Off;
    
    DRV_ICACHE_Init(cache_init.SPIM1,cache_init.SPIM2,cache_init.SDRAMC,cache_init.EFLASH,cache_init.ROM,cache_init.BOOT);
	
	  cache_init.SPIM1  = CACHE_Through;
    cache_init.SPIM2  = CACHE_Off;
    cache_init.SDRAMC = CACHE_Back;       /* SDRAM的CACHE地址为0x18000000 */
    cache_init.EFLASH = CACHE_Through;
    cache_init.ROM    = CACHE_Off;
    cache_init.BOOT   = CACHE_Off;
    DRV_DCACHE_Init(cache_init.SPIM1,cache_init.SPIM2,cache_init.SDRAMC,cache_init.EFLASH,cache_init.ROM,cache_init.BOOT);
}


void HAL_CACHE_Syn(void)
{
	DRV_ICACHE_Syn();
	DRV_DCACHE_Syn();
}


void HAL_CACHE_Close(void)
{
    CACHE_InitTypeDef cache_init;
    
    cache_init.SPIM1  = CACHE_Off;
    cache_init.SPIM2  = CACHE_Off;
    cache_init.SDRAMC = CACHE_Off;       /* SDRAM的CACHE地址为0x18000000 */
    cache_init.EFLASH = CACHE_Off;
    cache_init.ROM    = CACHE_Off;
    cache_init.BOOT   = CACHE_Off;
    
    DRV_ICACHE_Init(cache_init.SPIM1,cache_init.SPIM2,cache_init.SDRAMC,cache_init.EFLASH,cache_init.ROM,cache_init.BOOT);
    DRV_DCACHE_Init(cache_init.SPIM1,cache_init.SPIM2,cache_init.SDRAMC,cache_init.EFLASH,cache_init.ROM,cache_init.BOOT);
}


