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.
Hi,
I am working with a F28377D device and am trying to get the Dual Core projects working from Flash. I am having trouble getting the Blinky example project working. I have linked in the Flash linker cmd files for both projects. If I load the program into CPU1 and run it without loading the program into CPU2, I can get the LED to blink. However when I try and load the program into CPU2, my CPU1 program gets stuck in the while loop in the IPCBootCPU2() function.
The program is trying to determine the state of the IpcRegs.IPCBOOTSTS register, but a value of 0 is always returned.
I have modified the linker cmd files for both projects so that the memory is not overwritten when I load the two programs. I am unsure if the way I am loading the programs to the cores is correct.
The other strange thing is that if I power cycle my device, I can see both LED's blinking, which leads me to believe that both cores are running.
I would appreciate any help in this matter.
Faizan
Hi Faizan,
Did you go through this workshop: http://processors.wiki.ti.com/index.php/F2837xD_Workshop
Please go through the same.
Regards,
Gautam
Faizan,
the CPU1 Flash application is trying to communicate with the CPU2 Boot ROM at that step, you would need to have CPU2 boot ROM running for CPU1 application to pass through that. Try the below
1.> Load CPU1 and CPU2 flash applications
2.> Reset and run CPU2 (CPU2 would be running CPU2 bootROM at this point)
3.> Run CPU1 application
4.> both the applications should be running.
If you don't want to run CPU2 boot ROM; then try to build the FLASH_DEBUG configuration instead of FLASH_STANDALONE configuration. Right click on project; go to build configurations; select set active and choose the configuration you want to build.
Best Regards
Santosh
Hi Santosh,
I tried running the project how you suggested. The problem is that when I press play on my CPU2 project, it does not wait in the CPU2 boot ROM, but starts executing code. I have set the build configuration of CPU1 to FLASH_STANDALONE and the configuration for CPU2 to FLASH.
Are there any other changes that I have to make to either project.
Thanks,
Faizan
Faizan,
did you reset CPU2 and hit RUN (play) button; after loading the CPU2 flash application?
if you just load and run, the CCS run the application that is loaded; but if you load, reset and run then the boot ROM will be run.
Usually when you are debugging flash applications with CCS connected then we suggest users to build the FLASH_DEBUG configuration that way they can load both CPU1 and CPU2 applications and run. Once your debug is completed you can build the FLASH_STAND_ALONE load and disconnect the CCS and simply power up the device and it should run the application in STAND_ALONE. The only difference between the FLASH_DEBUG and FLASH_STAND_ALONE configurations is the boot mode IPC sent from CPU1 application to CPU2 boot ROM.
Best Regards
Santosh
Hello Faizan,
does the example run now in flash mode?
I have the same problem. After resetting the CPU2 and then start CPU1 the CPU2 stucks in IDLE (adress 0x3fe44f of the ROM).
Regards
Holger
hello,
I'm having the same issue.
I have followed Santosh's suggestion of resetting the CPU2 after program has been loaded but when I run, it stops at 0x3FE44E and says (no symbols are defined for 0x3FE44E). When I press run again, CPU2 is in "Running" mode.
At the stage, I go to CPU1 and run the program. It is always stuck at IPCBootCPU2() because it's getting bootStatus as 3, which equals to C2_BOOTROM_BOOTSTS_C2TOC1_BOOT_CMD_ACK. From the comment in this function, it sounds like that CPU2 has already booted.
Could someone please help me out what I should be doing to resolve this issue?
Other concerns I have is, do I have to make sure that CPU1 and CPU2 do not share any part of memory except from the SHARERAM region I define?
Currently I have RAMM0, RAMD0 blocks defined in both CPUs.
Thanks,
Ayaka
Hey everyone I have had similar problems after completing the workshop. I was able to get the program to run on Flash but now I have the issue of the program still being on the CPU when I try other projects.
How do you clear the flash on the 28377D?
Akaya/Adam
Please refer to this forum post, I'm discussing this over there.
https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/477510/1720284#1720284
Best Regards
Santosh Athuru
Hi Ram,
Please follow following step -
1) Load code on CPU1 (do not run CPU1 code)
2) Load code on CPU2 (do not run CPU2 code)
3) Run CPU1 code
4) Run CPU2 code.
To load the code, flash plug-in may change the PLL settings hence one should run the application code only after loading the code on both CPU.
Also I would suggest to open a new thread for any new issue for quick response.
Regards,
Vivek Singh
Ram,
Another thing to note: If your CPU1 application configures PLL before reaching main() function (I noticed this in some RTOS applications), you should not let your CPU1 application code to execute to main() until CPU2 application gets loaded.
Check CCS Auto Run and Launch Options (Tools -> Debugger Options) and deselect 'Run to symbol main' option 'On a program load or restart'.
Thanks and regards,
Vamsi