Part Number: TMS320F28379D
Other Parts Discussed in Thread: C2000WARE
I'm developing software for a custom board with an F28379D and am having issues getting it to boot correctly in standalone mode. When programming with a debugger and leaving it connected, the code executes normally. If I try to reset the CPU (Ctrl + Shift + R), the system stays stuck somewhere in boot ROM. The same thing happens after a power cycle with no debugger connected. I am trying to get the system to always boot from Flash.
I loaded the boot ROM symbols (ROM version is Rev. B) in CCS and found that CPU1 is stuck in the Parallel_GetWordData() function (specifically in a while loop while(HOST_DATA_NOT_RDY) { }). The boot status at address 0x0000 002C is 0x0D00 (boot ROM started, DCSM init completed, and all resets handled). The CPU1 boot mode at address 0x0000 0038 is 0x0, indicating the parallel boot mode (which explains why it's getting stuck there).
I probed the two boot pins GPIO72 and GPIO84 and can't seem to find any issues (both are HIGH, indicating the 'Get' boot mode and not the 'Parallel' boot mode). The pullups are both 5.1k and the pins are both read as a logic 1 in the GPCDAT register.
BMODE in Z1_BOOTCTRL is set to 0x0B (Flash) as expected.
I also looked at the BootMode variable in the BOM symbols and confirmed that it is indeed 0 (parallel mode). The EmuKey variable is also set to 0x00A5, which is strange because it also indicates the parallel boot mode (something I never specified). If I set EmuKey to either 0x0BA5 (boot to Flash), 0x03A5 ('Get' boot), or 0xFF ('Standalone emulation' mode) using a debugger and then reset the CPU, the system boots to Flash as expected and runs normally. This also works if I run the EMU_BOOT_FLASH GEL script, but I don't know why the default GEL script doesn't do this automatically (I've used other C2000 devices before where this extra step wasn't needed). Is there a setting I can configure somewhere to always boot from Flash in emulation mode? Of course, this stops working after a power cycle and the system remains stuck again.
The EmuBMode variable in the boot ROM is set to 0xA796, which doesn't correspond to any GPIO pins that are available on the system (0xA7 = GPIO165, 0x96 = GPIO149). Not sure where that value is coming from either.
I have the same issue on my board when using the 'empty_driverlib_project' in C2000Ware 3.04, so I suspect this might be something hardware-related.
Does anyone have any input?
