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.

Compiler/LAUNCHXL-F28069M: DELAY_US() leads to illegal ISR while running from flash

Part Number: LAUNCHXL-F28069M

Tool/software: TI C/C++ Compiler

Hi guys,

My program begin to enter at illegal ISR as soon I begin to run the program from flash. So I tried to do many steps to fix the problem but don`t solve yet,  I tried to follow the instructions here(

LAUNCHXL-F28377S: DELAY_US() leads to illegal ISR while running from flash - C2000 microcontrollers forum...

e2e.ti.com
Part Number: LAUNCHXL-F28377S hello, I have developed an application in F28377s launchpad which includes data acquisition using an ADC. The program runs fine
) but didn`t work here . Let me describe the steps

1) I insert the code memcpy at main.c, at the begin, before any other execution

void main(void)
{
//código para permitir que o delay_us funcione sem problemas quando não roda da ram
#ifdef _FLASH
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
#endif
...

2)I insert the predefined symbol _FLASH at "Predefined Symbols" (Properties--->CCS Build--->C2000 Compiler--->Advanced Options--->Predefined Symbols)

3) I insert #include <stdio.h> at main.c


But as soon I try to compile I receive this error message from compilation

>> Compilation failure
makefile:149: recipe for target 'Example_2806xSpi_FFDLB_int.out' failed

 undefined         first referenced                
  symbol               in file                     
 ---------         ----------------                
 _RamfuncsLoadSize ./Example_2806xSpi_FFDLB_int.obj

Any ideas to solve this issue?

  • I discover a useful tip

    "I finally realize the problem, somehow in my F28069.cmd linker file, it dont have "LOAD_SIZE(_RamfuncsLoadSize)," line. I just simply add the line and finally it works.

    SECTIONS
    {
    ramfuncs : LOAD = FLASHA,
    RUN = RAML0,
    LOAD_START(_RamfuncsLoadStart),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    LOAD_SIZE(_RamfuncsLoadSize),
    PAGE = 0
    }"
  • Rodrigo,

    Thanks for posting your findings for the others on the forum, glad you were able to solve the problem.

    Best,

    Matthew