From a03211ad94d1972fa255c5892665e14ca623d218 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Fri, 19 May 2017 12:15:29 -0700 Subject: hello_world_ddr: add RDC memory mapping Configure RDC memory mapping when running firmware from DDR. Signed-off-by: Stefan Agner --- .../demo_apps/hello_world_ddr/hardware_init.c | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/examples/imx7_colibri_m4/demo_apps/hello_world_ddr/hardware_init.c b/examples/imx7_colibri_m4/demo_apps/hello_world_ddr/hardware_init.c index 147f3f3..fc7f1ac 100644 --- a/examples/imx7_colibri_m4/demo_apps/hello_world_ddr/hardware_init.c +++ b/examples/imx7_colibri_m4/demo_apps/hello_world_ddr/hardware_init.c @@ -31,11 +31,44 @@ #include "board.h" #include "pin_mux.h" +void RDC_memory_init(void) +{ + uint32_t start, end; +#if defined(__CC_ARM) + extern uint32_t Image$$VECTOR_ROM$$Base[]; + extern uint32_t Image$$ER_m_text$$Limit[]; + extern uint32_t Image$$RW_m_data$$Base[]; + extern uint32_t Image$$RW_m_data$$Limit[]; + + start = (uint32_t)Image$$VECTOR_ROM$$Base & 0xFFFFF000; + end = (uint32_t)(Image$$ER_m_text$$Limit + (Image$$RW_m_data$$Limit - Image$$RW_m_data$$Base)); + end = (end + 0xFFF) & 0xFFFFF000; + RDC_SetMrAccess(RDC, rdcMrMmdc, start, end, (3 << (BOARD_DOMAIN_ID * 2)), true, false); +#else + extern uint32_t __MMDC_CODE_START; + extern uint32_t __MMDC_CODE_END; + extern uint32_t __MMDC_DATA_START; + extern uint32_t __MMDC_DATA_END; + + start = round_down(__MMDC_CODE_START, RDC_REGION_RES_MMDC); + end = round_up(__MMDC_CODE_END, RDC_REGION_RES_MMDC); + RDC_SetMrAccess(RDC, rdcMrMmdc, start, end, (3 << (BOARD_DOMAIN_ID * 2)), true, false); + + start = round_down(__MMDC_DATA_START, RDC_REGION_RES_MMDC); + end = round_up(__MMDC_DATA_END, RDC_REGION_RES_MMDC); + RDC_SetMrAccess(RDC, rdcMrMmdc + 1, start, end, (3 << (BOARD_DOMAIN_ID * 2)), true, false); +#endif + +} + void hardware_init(void) { /* Board specific RDC settings */ BOARD_RdcInit(); + /* Bound part of the DDR Memory to M4 Core */ + RDC_memory_init(); + /* Board specific clock settings */ BOARD_ClockInit(); -- cgit v1.2.3