This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F6736: MSP

Part Number: MSP430F6736


I found that vacant memory interrupt flag is set every time msp430f6736 Rev A processor fetches any instruction from memory address 0x023ffa. The strange thing after the flag is set the result is not either 3FFFh value ( in case of read from vacant memory) or JMP $ (in case of fetch) or a PUC (in case of fetch accesses from vacant peripheral space) which are the possible results of vacant memory space access. So that I am looking for help to get a way to fix the problem.

I just attached a snapshot of a sample code that demonstrates the above situation.

  • Hello,

    This behavior seems like it could be caused by how the CPU is pipelined. In order for a CPU to execute an instruction every clock cycle, it is fetching instructions at addresses above the one that is currently executing. So when the instruction at address 0x023ffa is executing, the CPU may be trying to fetch an instruction at address 0x024002 which is outside of the F6736 available memory. This could trigger the VMAIFG even though the RETA instruction at address 0x023ffc will prevent the invalid code from ever executing. I will check with our systems team to see if this is a possible cause.

    The way around this would be to prevent code instructions from executing that close to the edge of flash memory by updating the .cmd file so the length of FLASH2 is 0x13FFA. Or if you're tight on memory space, you could move the function and store data at addresses 0x23ff8 and 0x23ffa instead.

    Regards,

    Ryan

  • Thanks Ryan the solution you proposed works fine. I am already adjusted the linker file exactly the same you showed above.

**Attention** This is a public forum