Part Number: TMS320F28384D
Hello TI Support,
I am encountering an address parsing issue when casting a uint16_t pointer from a volatile union to a uint32_t. The calculated address is unexpectedly 0x00000000 instead of the expected physical RAM offset.
Environment:
- Compiler: TI v22.6.2.LTS
- Optimization: Off
Relevant Code:
//define
typedef union{
uint16_t DramData[DRAM_Size];
struct
{
uint16_t Debug_CNT;
};
}Dram_var_Def;
volatile Dram_var_Def Dram_var;
volatile __uint32_t address;
//Code
DELAY_US(1);
//Darm test
address=(uint32_t) &Dram_var.DramData[0];
ReadWriteMemoryTest(address,DRAM_Size);
Assembly Dump (from ReadWriteMemoryTest):
0x082B4C 761F0260 MOVW DP, #0x260
0x082B4E 8F000000 MOVL XAR4, #0x000000
0x082B50 A800 MOVL @0x0, XAR4
0x082B51 FF2F0200 MOV ACC, #0x200 << 15
0x082B53 1E42 MOVL *-SP[2], ACC
0x082B54 0600 MOVL ACC, @0x0
0x082B55 76482D75 LCR ReadWriteMemoryTest
Observed Watch Results:
addressvariable content:0&Dram_var.DramData[0]address:0x80000000
Question:
Why is the address being resolved to 0? What steps should I take to fix this?
Thank you.