Skip to content

Commit 80e2a56

Browse files
ZhaoQiang-b45475mmahadevan108
authored andcommitted
devices: MIMX9596: add ITCM support in MEMORY_ConvertMemoryMapAddress
- Split FSL_MEM_M7_TCM to FSL_MEM_M7_DTCM - Add correct memory offsets for FSL_MEM_M7_ITCM - Update address conversion logic to handle both regions Signed-off-by: Qiang Zhao <[email protected]>
1 parent 6d6ab91 commit 80e2a56

File tree

1 file changed

+31
-10
lines changed
  • mcux/mcux-sdk-ng/devices/i.MX/i.MX95/MIMX9596/drivers

1 file changed

+31
-10
lines changed

mcux/mcux-sdk-ng/devices/i.MX/i.MX95/MIMX9596/drivers/fsl_memory.h

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,19 @@
3030

3131
#define FSL_MEM_M33_TCM_OFFSET 0x200000U
3232
#elif (__CORTEX_M == 7U)
33-
/* The CM7 subsystem local TCM start address, refer to Reference Manual for detailed information */
34-
#define FSL_MEM_M7_TCM_BEGIN 0x20000000U
35-
/* The CM7 subsystem local TCM end address, refer to Reference Manual for detailed information */
36-
#define FSL_MEM_M7_TCM_END 0x2007FFFFU
33+
/* The CM7 subsystem local ITCM start address, refer to Reference Manual for detailed information */
34+
#define FSL_MEM_M7_ITCM_BEGIN 0x00000000U
35+
/* The CM7 subsystem local ITCM end address, refer to Reference Manual for detailed information */
36+
#define FSL_MEM_M7_ITCM_END 0x0003FFFFU
3737

38-
#define FSL_MEM_M7_TCM_OFFSET 0x400000U
38+
#define FSL_MEM_M7_ITCM_OFFSET 0x203C0000U
39+
40+
/* The CM7 subsystem local DTCM start address, refer to Reference Manual for detailed information */
41+
#define FSL_MEM_M7_DTCM_BEGIN 0x20000000U
42+
/* The CM7 subsystem local DTCM end address, refer to Reference Manual for detailed information */
43+
#define FSL_MEM_M7_DTCM_END 0x2007FFFFU
44+
45+
#define FSL_MEM_M7_DTCM_OFFSET 0x400000U
3946
#else
4047
#error "Device is not supported by this driver!"
4148
#endif
@@ -76,9 +83,19 @@ static inline uint32_t MEMORY_ConvertMemoryMapAddress(uint32_t addr, mem_directi
7683
dest = addr + FSL_MEM_M33_TCM_OFFSET;
7784
}
7885
#elif (__CORTEX_M == 7U)
79-
if ((addr >= FSL_MEM_M7_TCM_BEGIN) && (addr <= FSL_MEM_M7_TCM_END))
86+
/*
87+
* Remove redundant lower bound check for ITCM range.
88+
* Since FSL_MEM_M7_ITCM_BEGIN is 0x00000000U and addr is unsigned,
89+
* the condition (addr >= 0) is always true and triggers compiler warning Pe186.
90+
* NOTE: Restore lower bound check if FSL_MEM_M7_ITCM_BEGIN becomes non-zero.
91+
* if ((addr >= FSL_MEM_M7_ITCM_BEGIN) && (addr <= FSL_MEM_M7_ITCM_END))
92+
*/
93+
if (addr <= FSL_MEM_M7_ITCM_END)
94+
{
95+
dest = addr + FSL_MEM_M7_ITCM_OFFSET;
96+
} else if ((addr >= FSL_MEM_M7_DTCM_BEGIN) && (addr <= FSL_MEM_M7_DTCM_END))
8097
{
81-
dest = addr + FSL_MEM_M7_TCM_OFFSET;
98+
dest = addr + FSL_MEM_M7_DTCM_OFFSET;
8299
}
83100
#endif
84101
else
@@ -96,10 +113,14 @@ static inline uint32_t MEMORY_ConvertMemoryMapAddress(uint32_t addr, mem_directi
96113
dest = addr - FSL_MEM_M33_TCM_OFFSET;
97114
}
98115
#elif (__CORTEX_M == 7U)
99-
if ((addr >= (FSL_MEM_M7_TCM_BEGIN + FSL_MEM_M7_TCM_OFFSET)) &&
100-
(addr <= (FSL_MEM_M7_TCM_END + FSL_MEM_M7_TCM_OFFSET)))
116+
if ((addr >= (FSL_MEM_M7_ITCM_BEGIN + FSL_MEM_M7_ITCM_OFFSET)) &&
117+
(addr <= (FSL_MEM_M7_ITCM_END + FSL_MEM_M7_ITCM_OFFSET)))
118+
{
119+
dest = addr - FSL_MEM_M7_ITCM_OFFSET;
120+
} else if ((addr >= (FSL_MEM_M7_DTCM_BEGIN + FSL_MEM_M7_DTCM_OFFSET)) &&
121+
(addr <= (FSL_MEM_M7_DTCM_END + FSL_MEM_M7_DTCM_OFFSET)))
101122
{
102-
dest = addr - FSL_MEM_M7_TCM_OFFSET;
123+
dest = addr - FSL_MEM_M7_DTCM_OFFSET;
103124
}
104125
#endif
105126
else

0 commit comments

Comments
 (0)