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.

TMS320F28068: Does not work offline with internal memory.

Part Number: TMS320F28068
Other Parts Discussed in Thread: TMS320F28335, C2000WARE

Hello to all!
Trying to master this device. BOARD did it yourself, just try. I wrote a simple program by blinking the LED. I load into RAM, everything works. I upload to FLASH, it also works). But if I turn off the power and turn it on, the program does not start. (I try the F28069.cmd file from SUITE, it also compiles and loads everything into FLASH, but does not work. It loops in the XTL chip initialization. XDS100 v3 programmer. GPIO34 and TDO are pulled by a 4.7k resistor on + 3.3V. Maybe some kind of installation in CCS needs to be done? Chips bought in China. I have a board with TMS320F28335. Everything is fine there. Maybe someone knows what could be the reason?

  • Are you saying code works from flash only when you run the code while the debug probe (XDS100v3) is still connected? i.e. right after programming to flash, it works but not after a power cycle?

     

    Please try the following:

    Download the latest version of C2000ware from the TI website. Try running the GPIO toggle code example (or your own example) from flash under the following two conditions:

    (i)               Right after programming the flash with the JTAG connector still connected.

    (ii)             After removing the JTAG connector and power-cycling the board.

  • When I downloaded the program in FLASH, I launch it, and it starts working. I quit a debugger, the program works. I pull out the JTAG connector, the program works. I do a restart, the program starts. As soon as I turn off the power and turn it on, that's all, the program does not start. As if the CPU does not know where to start. Thank you, now I download C2000Ware and install it.
  • If I switch the operation of the chip from the internal generator, then the chip starts to work correctly, i.e. When you turn the device off and on, the chip starts up. But if I initialize FLASH memory using the InitFlash (void) function, then after turning off and on, the device does not start. If I initialize the chip to work from external quartz, the device after switching on and off does not work anyway.
  • Generation on quartz is always there. The amplitude is 1.75 V.
  • It appears your code works fine from RAM, but not from flash. The golden rule when booting stand-alone (i.e. from Flash) is to ensure that the program does not require anything pre-loaded/initialized in RAM for it to function. Any initialized data in RAM should be coming from flash and the runtime C libraries will take care of this before program reaches main(). Inspect your map file for all the sections that are being loaded into RAM and see if there are initialized locations for program to function. If yes, then they need to be moved to flash into a .cinit section. Similar to the RAMFUNCS sections for which the main code does a memcpy(), which is for any function that need to be run from RAM, there will be a copy for the initialized data as well. The following post gives more insights: https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/655030/2408221#2408221

     

    Other suggestions:

     

    • The InitFlash() function must be run from RAM. It should not be run from flash. Copy that function to RAM before executing it.
    • Until you figure out what is going on, do not change the clock source. Let the code run with the default clock source (INTOSC1). When you are trying to switch the clock source, please use the function provided in C2000ware, not your own.
  • Thank you very much. Yes, I use features from C2000ware. Everything works with the internal generator. With external quartz does not start. Loops, waiting for the generator to start. But on quartz pins the frequency is 10 MHz. an amplitude of 1.75V. and 1.12B.

  • Perhaps the amplitude is not enough ?. Can it be better to use generators in their devices, and not quartz?
  • Everything. Earned! I have the MemCopy(& RamfuncsLoadStart, & RamfuncsLoadEnd, & RamfuncsRunStart); function put after the function InitSysCtrl (); . When I set InitSysCtrl (); before initialization, it all worked.) Apparently hung up on the DELAY_US (1000) function; and it should work in RAM. I just watched examples with an internal generator, and there MemCopy (& RamfuncsLoadStart, & RamfuncsLoadEnd, & RamfuncsRunStart); after InitSysCtrl ();
    Many thanks for your help! I like these CPUs, very powerful!
  • Glad to know the issue is resolved.