hal_cache.c
来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C语言 代码 · 共 88 行
C
88 行
/**********************************************************************************/
/* */
/* Copyright (C) 2006 Oki Electric Industry Co., LTD. */
/* */
/* System Name : uPLAT7D series */
/* Module Name : uPLAT7D system Cache HAL program */
/* File Name : hal_cache.c */
/* Revision : 01.00 */
/* Date : 2006/1/25 initial version */
/* */
/**********************************************************************************/
#if defined(__arm)
#include "ml675050.h"
#elif defined(_WIN32)
#include "ml675050sim.h"
#else
#error COMPILER ERROR
#endif
#include "common.h"
#include "hal_common.h"
#include "hal_cache.h"
/***********************************/
/* type definition */
/***********************************/
#define CACHE_NON_LOCK (0x00000000)
#define CACHE_WAY0_LOCK (0x02000000)
#define CACHE_WAY01_LOCK (0x04000000)
#define CACHE_WAY012_LOCK (0x06000000)
#define CACHE_FLUSH (0x00000000)
/***********************************/
/* Static functions prototype */
/***********************************/
/*****************************************************************************/
/* */
/* Function Name : int16_t HALCache_CacheInit( int16_t cache_mode ) */
/* Input : Cache mode(write through/back) */
/* : 0: write through */
/* : 1: write back */
/* Output : HAL_OK(1) */
/* : HAL_PARAM_ERROR(-2) */
/* */
/* Note : Initialize Cache. */
/* Memory Map */
/* BANK29(Mirroring External SRAM) :cache off */
/* BANK28(Mirroring External ROM) :cache off */
/* BANK27(Mirroring External DRAM) :cache off */
/* BANK26(External SRAM) :cache on */
/* BANK25(External ROM) :cache off */
/* BANK24(External DRAM) :cache off */
/* BANK10(AHB SRAM(16KB)) :cache off */
/* BANK0 (Remappable Space) :cache on */
/* */
/*****************************************************************************/
int16_t HALCache_CacheInit( int16_t cache_mode )
{
int16_t rtnVal = HAL_OK;
switch(cache_mode ){
case CACHE_WRITE_THROUGH:
rtnVal = HAL_PARAM_ERROR;
break;
case CACHE_WRITE_BACK:
break;
default:
rtnVal = HAL_PARAM_ERROR;
break;
}
if(rtnVal == HAL_OK){
/* Initialize Cache */
OkiCLib_write32(CACHE, CACHE_NON_BANK); /* cache off */
OkiCLib_write32(CON, CACHE_NON_LOCK|CACHE_NORMALMODE); /* non lock, non load mode */
OkiCLib_write32(FLUSH, CACHE_FLUSH); /* Flush cache memory */
/* Setting cache on bank */
OkiCLib_write32(CACHE, CACHE_BANK0|CACHE_BANK26); /* cache on(bank? or all bank) */
}
return rtnVal;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?