summaryrefslogtreecommitdiff
path: root/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/src/r_ram_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/src/r_ram_init.c')
-rw-r--r--FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/src/r_ram_init.c148
1 files changed, 148 insertions, 0 deletions
diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/src/r_ram_init.c b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/src/r_ram_init.c
new file mode 100644
index 000000000..e6f395ce5
--- /dev/null
+++ b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/IAR/src/r_ram_init.c
@@ -0,0 +1,148 @@
+/*******************************************************************************
+* DISCLAIMER
+* This software is supplied by Renesas Electronics Corporation and is only
+* intended for use with Renesas products. No other uses are authorized. This
+* software is owned by Renesas Electronics Corporation and is protected under
+* all applicable laws, including copyright laws.
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+* Renesas reserves the right, without notice, to make changes to this software
+* and to discontinue the availability of this software. By using this software,
+* you agree to the additional terms and conditions found by accessing the
+* following link:
+* http://www.renesas.com/disclaimer
+*
+* Copyright (C) 2014 Renesas Electronics Corporation. All rights reserved.
+*******************************************************************************/
+/*******************************************************************************
+* System Name : RZ/T1 Init program
+* File Name : r_ram_init.c
+* Version : 0.1
+* Device : R7S9100xx
+* Abstract : API for internal extended RAM function
+* Tool-Chain : IAR Embedded Workbench Ver.7.20
+* OS : not use
+* H/W Platform : Renesas Starter Kit for RZ/T1(Preliminary)
+* Description : internal extended RAM setting API of RZ/T1
+* Limitation : none
+*******************************************************************************/
+/*******************************************************************************
+* History : DD.MM.YYYY Version Description
+* : First Release
+*******************************************************************************/
+
+/*******************************************************************************
+Includes <System Includes> , "Project Includes"
+*******************************************************************************/
+#include <stdint.h>
+#include <Renesas/ior7s910017.h>
+#include "r_system.h"
+#include "r_ram_init.h"
+
+/*******************************************************************************
+Macro definitions
+*******************************************************************************/
+#define RAM_ECC_ENABLE (0x00000001)
+#define RAM_ECC_DISABLE (0x00000000)
+#define RAM_PROTECT (0x00000000)
+
+/*******************************************************************************
+Typedef definitions
+*******************************************************************************/
+
+
+
+/*******************************************************************************
+Imported global variables and functions (from other files)
+*******************************************************************************/
+
+
+/*******************************************************************************
+Exported global variables and functions (to be accessed by other files)
+*******************************************************************************/
+
+
+
+/*******************************************************************************
+Private variables and functions
+*******************************************************************************/
+
+/*******************************************************************************
+* Function Name : R_RAM_ECC_Enable
+* Description : Enable ECC function for internal extended RAM.
+* Arguments : none
+* Return Value : none
+*******************************************************************************/
+void R_RAM_ECC_Enable(void)
+{
+ /* Enables writing to the protected registers related to RAM function */
+ R_RAM_WriteEnable();
+
+ /* Enable ECC function */
+ ECCRAM.RAMEDC.LONG = RAM_ECC_ENABLE;
+
+ /* Disables writing to the protected registers related to RAM function */
+ R_RAM_WriteDisable();
+
+}
+
+/*******************************************************************************
+ End of function R_RAM_ECC_Enable
+*******************************************************************************/
+
+
+/*******************************************************************************
+* Function Name : R_RAM_WriteEnable
+* Description : Enable writing to the protected registers related to RAM.
+* And dummy read the register in order to fix the register value.
+* Arguments : none
+* Return Value : none
+*******************************************************************************/
+void R_RAM_WriteEnable(void)
+{
+ volatile uint32_t dummy;
+
+ /* Special sequence for protect release */
+ ECCRAM.RAMPCMD.LONG = 0x000000A5; // Write fixed value 0x000000A5
+ ECCRAM.RAMPCMD.LONG = 0x00000001; // Write expected value
+ ECCRAM.RAMPCMD.LONG = 0x0000FFFE; // Write inversed value of the expected value
+ ECCRAM.RAMPCMD.LONG = 0x00000001; // Write expected value again
+ dummy = ECCRAM.RAMPCMD.LONG;
+
+}
+
+/*******************************************************************************
+ End of function R_RAM_WriteEnable
+*******************************************************************************/
+
+/*******************************************************************************
+* Function Name : R_RAM_WriteDisable
+* Description : Disable writing to the protected registers related to RAM.
+* And dummy read the register in order to fix the register value.
+* Arguments : none
+* Return Value : none
+*******************************************************************************/
+void R_RAM_WriteDisable(void)
+{
+ volatile uint32_t dummy;
+
+ /* Clear RAMPCMD register to zero */
+ ECCRAM.RAMPCMD.LONG = RAM_PROTECT;
+ dummy = ECCRAM.RAMPCMD.LONG;
+
+}
+
+/*******************************************************************************
+ End of function R_RAM_WriteDisable
+*******************************************************************************/
+
+/* End of File */
+
+