Part Number: TMS320F28377D
Tool/software: Code Composer Studio
Hi,
I have got a problem when I was trying out EMU RAM boot.
1. Built the project, loaded the program to RAM, pressed the debug button in CCS and debugged the application started from the main(), it worked fine.
2. If I chose the EMU boot process to boot-to-RAM(through "Scripts" in CCS to change the EMU_BMODE and EMU_KEY), then press "reset" and "run" in CCS(make the device go through the emulation boot flow), the application was stuck in ITRAP0 interrupt.
3. Repeat the process #2 step by step to find the cause. The problem is that after "reset" and "run" and before application entering code_start branch, the address 0x122 which was supposed to be occupied by the "SUB ACC,#1" instruction is now ITRAP0. This instruction is the first instruction of ram delay function provided by TI("F2837xD_usDelay.asm"). This means that after the device went through the emulation boot flow, instruction in 0x122 was erased.
4. Modify the cmd file to make the reserved boot stack from 0x2 - 0x121(the length of it is 0x120) to 0x2 - 0x122(the length of it is 0x121), problem is solved. Now the instruction is located in 0x123 and was not erased during the boot flow.
Does this mean that when boot-to-RAM is chosen, the reserved space for BOOT should be 0x2 - 0x122 instead of 0x2 - 0x121 as suggested in Technical Reference Manual.pdf?
I understand that part of RAMM0 is used by boot flow as stack. But according to the manual, the space reserved is 0x2 - 0x121(the length of it is 0x120). The instruction that got erased is at address 0x122 where should be safe for the instruction to reside. The following are the pictures before "reset" and "run" and after. Could you guys confirm I'm right?
Before "reset" and "run":
After "reset" and "run":
Regards,
John
