hal_remap.c

来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C语言 代码 · 共 135 行

C
135
字号
/**********************************************************************************/
/*                                                                                */
/*    Copyright (C) 2006 Oki Electric Industry Co., LTD.                          */
/*                                                                                */
/*    System Name    :  uPLAT7D series                                            */
/*    Module Name    :  uPLAT7D system Remap HAL program                          */
/*    File   Name    :  hal_remap.c                                               */
/*    Revision       :  01.00                                                     */
/*    Date           :  2006/1/24 initial version                                 */
/*                                                                                */
/**********************************************************************************/

#include "common.h"
#if defined(__arm)
#include "ml675050.h"
#else
#include "ml675050sim.h"
#endif
#include "hal_common.h"
#include "hal_remap.h"

/***********************************/
/*    type definition              */
/***********************************/
#define REMAP_REGVAL_NON_REMAP      (0x00000000)    /* Non remap(External ROM remap) */
#define REMAP_REGVAL_EXTSRAM_REMAP  (0x00000008)    /* External SRAM remap */
#define REMAP_REGVAL_EXTDRAM_REMAP  (0x00000009)    /* External DRAM remap */
#define REMAP_REGVAL_AHBSRAM_REMAP  (0x0000000A)    /* AHB SRAM remap */

#define EXPAHBRAM_REGVAL_NON        (0x00000000)    /* USB2.0:Enable, LCD:Enable */
#define EXPAHBRAM_REGVAL_USB        (0x00000001)    /* USB2.0:Disable, LCD:Enable */
#define EXPAHBRAM_REGVAL_LCD        (0x00000002)    /* USB2.0:Enable, LCD:Disable */
#define EXPAHBRAM_REGVAL_USB_LCD    (0x00000003)    /* USB2.0:Disable, LCD:Disable */

#define REMAP_UN_WRITE_PROTECT      (0x0000003C)    /* Release write protect of MASK register */

/***********************************/
/*     Static functions prototype  */
/***********************************/


volatile uint32_t dummy_read_REMAP;
/*****************************************************************************/
/*                                                                           */
/*  Function Name   : int16_t HALRemap_RemapSetRam( uint8_t expand_area )    */
/*  Input           : Expand memory area                                     */
/*                  :      USB2.0  LCD                                       */
/*                  :   0: Enable  Enable                                    */
/*                  :   1: Disable Enable                                    */
/*                  :   2: Enable  Disable                                   */
/*                  :   3: Disable Disable                                   */
/*  Output          : HAL_OK(1)                                              */
/*                  : HAL_PARAM_ERROR(-2)                                    */
/*                                                                           */
/*  Note : Setting of expand RAM area of AHBRAM.                             */
/*                                                                           */
/*****************************************************************************/
int16_t HALRemap_RemapSetRam( uint8_t expand_area )
{
    int16_t rtnVal = HAL_OK;
    uint32_t set_val = 0;

    switch( expand_area ){
    case EXPAHBRAM_SELECT_NON:
        set_val = EXPAHBRAM_REGVAL_NON;
        break;
    case EXPAHBRAM_SELECT_USB:
        set_val = EXPAHBRAM_REGVAL_USB;
        break;
    case EXPAHBRAM_SELECT_LCD:
        set_val = EXPAHBRAM_REGVAL_LCD;
        break;
    case EXPAHBRAM_SELECT_USB_LCD:
        set_val = EXPAHBRAM_REGVAL_USB_LCD;
        break;
    default:
        rtnVal = HAL_PARAM_ERROR;
        break;
    }
    
    if (rtnVal == HAL_OK) {
        OkiCLib_write32(AHBRAMCNT, set_val);
        dummy_read_REMAP = OkiCLib_read32(AHBRAMCNT);  /* dummy read */
    }
    
    return rtnVal;
}

/*****************************************************************************/
/*                                                                           */
/*  Function Name   : int16_t HALRemap_RemapSetFunction( uint8_t mem_area )  */
/*  Input           : Memory area                                            */
/*                  :   0: Non Remap(External ROM remap)                     */
/*                  :   1: External SRAM Remap                               */
/*                  :   2: External DRAM Remap                               */
/*                  :   3: AHBRAM Remap                                      */
/*  Output          : HAL_OK(1)                                              */
/*                  : HAL_PARAM_ERROR(-2)                                    */
/*                                                                           */
/*  Note : Setting of Rimapp.                                                */
/*                                                                           */
/*****************************************************************************/
int16_t HALRemap_RemapSetFunction( uint8_t mem_area )
{
    int16_t rtnVal = HAL_OK;
    uint32_t set_val = 0;

    switch( mem_area ){
    case REMAP_NON_REMAP:
        set_val = REMAP_REGVAL_NON_REMAP;
        break;
    case REMAP_EXTSRAM_REMAP:
        set_val = REMAP_REGVAL_EXTSRAM_REMAP;
        break;
    case REMAP_EXTDRAM_REMAP:
        set_val = REMAP_REGVAL_EXTDRAM_REMAP;
        break;
    case REMAP_AHBSRAM_REMAP:
        set_val = REMAP_REGVAL_AHBSRAM_REMAP;
        break;
    default:
        rtnVal = HAL_PARAM_ERROR;
        break;
    }
    
    if (rtnVal == HAL_OK) {
        OkiCLib_write32(RMPCON, REMAP_UN_WRITE_PROTECT);
        OkiCLib_write32(RMPCON, set_val);
        dummy_read_REMAP = OkiCLib_read32(RMPCON);  /* dummy read */
    }
    
    return rtnVal;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?