Skip to content

Commit 08062f4

Browse files
biwenliZhaoxiangJin
authored andcommitted
hal_nxp: mcux-sdk-ng: devices: i.MX943: convert memory address
Convert memory address of code tcm of m33 and itcm of m7 to fix issues that edma try to access wrong memory address. Signed-off-by: Biwen Li <[email protected]>
1 parent d622701 commit 08062f4

File tree

1 file changed

+52
-4
lines changed
  • mcux/mcux-sdk-ng/devices/i.MX/i.MX943/MIMX94398/drivers

1 file changed

+52
-4
lines changed

mcux/mcux-sdk-ng/devices/i.MX/i.MX943/MIMX94398/drivers/fsl_memory.h

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,37 +53,67 @@
5353
#define FSL_MEM_M33_SYS_TCM_OFFSET (FSL_MEM_M33_SYS_TCM_BEGIN_FROM_EDMA_VIEW - FSL_MEM_M33_SYS_TCM_BEGIN)
5454

5555
#elif defined(CPU_MIMX94398AVKM_cm33_core1)
56+
/* For cm33 core1 system tcm from edma view */
57+
#define FSL_MEM_M33_CODE_TCM_BEGIN_FROM_EDMA_VIEW (0x209C0000U)
58+
#define FSL_MEM_M33_CODE_TCM_END_FROM_EDMA_VIEW (0x209FFFFFU)
59+
5660
/* For cm33 core1 system tcm from edma view */
5761
#define FSL_MEM_M33_SYS_TCM_BEGIN_FROM_EDMA_VIEW (0x20A00000U)
5862
#define FSL_MEM_M33_SYS_TCM_END_FROM_EDMA_VIEW (0x20A3FFFFU)
5963

64+
/* For cm33 core1 code tcm from cortex-m33 core1 view */
65+
#define FSL_MEM_M33_CODE_TCM_BEGIN (0x0FFC0000U)
66+
#define FSL_MEM_M33_CODE_TCM_END (0x0FFFFFFFU)
67+
6068
/* For cm33 core1 system tcm from cortex-m33 core1 view */
6169
#define FSL_MEM_M33_SYS_TCM_BEGIN (0x20000000U)
6270
#define FSL_MEM_M33_SYS_TCM_END (0x2003FFFFU)
6371

72+
#define FSL_MEM_M33_CODE_TCM_OFFSET (FSL_MEM_M33_CODE_TCM_BEGIN_FROM_EDMA_VIEW - FSL_MEM_M33_CODE_TCM_BEGIN)
73+
6474
#define FSL_MEM_M33_SYS_TCM_OFFSET (FSL_MEM_M33_SYS_TCM_BEGIN_FROM_EDMA_VIEW - FSL_MEM_M33_SYS_TCM_BEGIN)
6575

6676
#elif defined(CPU_MIMX94398AVKM_cm7_core0)
6777

78+
/* For cm7 core0 itcm from edma view */
79+
#define FSL_MEM_M7_ITCM_BEGIN_FROM_EDMA_VIEW (0x203C0000U)
80+
#define FSL_MEM_M7_ITCM_END_FROM_EDMA_VIEW (0x203FFFFFU)
81+
6882
/* For cm7 core0 dtcm from edma view */
6983
#define FSL_MEM_M7_DTCM_BEGIN_FROM_EDMA_VIEW (0x20400000U)
7084
#define FSL_MEM_M7_DTCM_END_FROM_EDMA_VIEW (0x2043FFFFU)
7185

86+
/* For cm7 core0 itcm from cortex-m7 core0 view */
87+
#define FSL_MEM_M7_ITCM_BEGIN (0x00000000U)
88+
#define FSL_MEM_M7_ITCM_END (0x0003FFFFU)
89+
7290
/* For cm7 core0 dtcm from cortex-m7 core0 view */
7391
#define FSL_MEM_M7_DTCM_BEGIN (0x20000000U)
7492
#define FSL_MEM_M7_DTCM_END (0x2003FFFFU)
7593

94+
#define FSL_MEM_M7_ITCM_OFFSET (FSL_MEM_M7_ITCM_BEGIN_FROM_EDMA_VIEW - FSL_MEM_M7_ITCM_BEGIN)
95+
7696
#define FSL_MEM_M7_DTCM_OFFSET (FSL_MEM_M7_DTCM_BEGIN_FROM_EDMA_VIEW - FSL_MEM_M7_DTCM_BEGIN)
7797

7898
#elif defined(CPU_MIMX94398AVKM_cm7_core1)
99+
/* For cm7 core1 itcm from edma view */
100+
#define FSL_MEM_M7_ITCM_BEGIN_FROM_EDMA_VIEW (0x202C0000U)
101+
#define FSL_MEM_M7_ITCM_END_FROM_EDMA_VIEW (0x202FFFFFU)
102+
79103
/* For cm7 core1 dtcm from edma view */
80104
#define FSL_MEM_M7_DTCM_BEGIN_FROM_EDMA_VIEW (0x20300000U)
81105
#define FSL_MEM_M7_DTCM_END_FROM_EDMA_VIEW (0x2033FFFFU)
82106

107+
/* For cm7 core1 itcm from cortex-m7 core1 view */
108+
#define FSL_MEM_M7_ITCM_BEGIN (0x00000000U)
109+
#define FSL_MEM_M7_ITCM_END (0x0003FFFFU)
110+
83111
/* For cm7 core1 dtcm from cortex-m7 core1 view */
84112
#define FSL_MEM_M7_DTCM_BEGIN (0x20000000U)
85113
#define FSL_MEM_M7_DTCM_END (0x2003FFFFU)
86114

115+
#define FSL_MEM_M7_ITCM_OFFSET (FSL_MEM_M7_ITCM_BEGIN_FROM_EDMA_VIEW - FSL_MEM_M7_ITCM_BEGIN)
116+
87117
#define FSL_MEM_M7_DTCM_OFFSET (FSL_MEM_M7_DTCM_BEGIN_FROM_EDMA_VIEW - FSL_MEM_M7_DTCM_BEGIN)
88118

89119
#else
@@ -121,12 +151,20 @@ static inline uint32_t MEMORY_ConvertMemoryMapAddress(uint32_t addr, mem_directi
121151
case kMEMORY_Local2DMA:
122152
{
123153
#if (__CORTEX_M == 33U)
124-
if ((addr >= FSL_MEM_M33_SYS_TCM_BEGIN) && (addr <= FSL_MEM_M33_SYS_TCM_END))
154+
if ((addr >= FSL_MEM_M33_CODE_TCM_BEGIN) && (addr <= FSL_MEM_M33_CODE_TCM_END))
155+
{
156+
dest = addr + FSL_MEM_M33_CODE_TCM_OFFSET;
157+
}
158+
else if ((addr >= FSL_MEM_M33_SYS_TCM_BEGIN) && (addr <= FSL_MEM_M33_SYS_TCM_END))
125159
{
126160
dest = addr + FSL_MEM_M33_SYS_TCM_OFFSET;
127161
}
128162
#elif (__CORTEX_M == 7U)
129-
if ((addr > FSL_MEM_M7_DTCM_BEGIN) && (addr <= FSL_MEM_M7_DTCM_END))
163+
if ((addr > FSL_MEM_M7_ITCM_BEGIN) && (addr <= FSL_MEM_M7_ITCM_END))
164+
{
165+
dest = addr + FSL_MEM_M7_ITCM_OFFSET;
166+
}
167+
else if ((addr > FSL_MEM_M7_DTCM_BEGIN) && (addr <= FSL_MEM_M7_DTCM_END))
130168
{
131169
dest = addr + FSL_MEM_M7_DTCM_OFFSET;
132170
}
@@ -140,13 +178,23 @@ static inline uint32_t MEMORY_ConvertMemoryMapAddress(uint32_t addr, mem_directi
140178
case kMEMORY_DMA2Local:
141179
{
142180
#if (__CORTEX_M == 33U)
143-
if ((addr >= (FSL_MEM_M33_SYS_TCM_BEGIN + FSL_MEM_M33_SYS_TCM_OFFSET)) &&
181+
if ((addr >= (FSL_MEM_M33_CODE_TCM_BEGIN + FSL_MEM_M33_CODE_TCM_OFFSET)) &&
182+
(addr <= (FSL_MEM_M33_CODE_TCM_END + FSL_MEM_M33_CODE_TCM_OFFSET)))
183+
{
184+
dest = addr - FSL_MEM_M33_CODE_TCM_OFFSET;
185+
}
186+
else if ((addr >= (FSL_MEM_M33_SYS_TCM_BEGIN + FSL_MEM_M33_SYS_TCM_OFFSET)) &&
144187
(addr <= (FSL_MEM_M33_SYS_TCM_END + FSL_MEM_M33_SYS_TCM_OFFSET)))
145188
{
146189
dest = addr - FSL_MEM_M33_SYS_TCM_OFFSET;
147190
}
148191
#elif (__CORTEX_M == 7U)
149-
if ((addr >= (FSL_MEM_M7_DTCM_BEGIN + FSL_MEM_M7_DTCM_OFFSET)) &&
192+
if ((addr >= (FSL_MEM_M7_ITCM_BEGIN + FSL_MEM_M7_ITCM_OFFSET)) &&
193+
(addr <= (FSL_MEM_M7_ITCM_END + FSL_MEM_M7_ITCM_OFFSET)))
194+
{
195+
dest = addr - FSL_MEM_M7_ITCM_OFFSET;
196+
}
197+
else if ((addr >= (FSL_MEM_M7_DTCM_BEGIN + FSL_MEM_M7_DTCM_OFFSET)) &&
150198
(addr <= (FSL_MEM_M7_DTCM_END + FSL_MEM_M7_DTCM_OFFSET)))
151199
{
152200
dest = addr - FSL_MEM_M7_DTCM_OFFSET;

0 commit comments

Comments
 (0)