diff options
author | Stefan Agner <stefan.agner@toradex.com> | 2017-05-19 12:15:29 -0700 |
---|---|---|
committer | Stefan Agner <stefan.agner@toradex.com> | 2017-05-22 17:09:55 -0700 |
commit | a03211ad94d1972fa255c5892665e14ca623d218 (patch) | |
tree | cf2c8b9bd216b5e4fe90d6b6b16e768d77ab9131 | |
parent | 216ea24dc0bdd1d9555cddc57e19d5f8efa23beb (diff) |
hello_world_ddr: add RDC memory mapping
Configure RDC memory mapping when running firmware from DDR.
Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
-rw-r--r-- | examples/imx7_colibri_m4/demo_apps/hello_world_ddr/hardware_init.c | 33 |
1 files changed, 33 insertions, 0 deletions
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(); |