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.

TI-RTOS on motorware project F28069

Other Parts Discussed in Thread: MOTORWARE

Has anyone actually gotten TI-RTOS working on a motorware project? I would like to do this on an F28069 device. I've searched on the forum and have seen a few posts suggesting that it's most likely possible, and a but I haven't seen anything to indicate that it has actually been done.

I'm most curious to see what the memory layout looks like on a working example. 

  • Hi Grant,
    I've looked around and haven't seen any examples of Motorware with TI-RTOS. I believe it's possible too. You can always reply to one of those posts you saw to get in touch with someone who has done it before. If you want to try it yourself, I'd suggest creating an empty F28069 TI-RTOS project and slowly migrating the motorware stuff (compiler, linker options and other settings) in.

    Let me know if this helped

    Moses
  • That's what I'm actually working on at the moment. The problem is that the motorware stuff uses a completely different set of drivers/register headers, so I have to replace quite a bit of stuff before I can get back to just a blinking LED.  The two put together also result in a massive code size, so I've had to temporarily disable large chunks of motorware (all of the user settings, filter code, and control code) so that I can run it out of memory while getting it to work initially.

    At the moment, it builds, but it jumps to interrupt void PIE_illegalIsr(void) shortly after starting. My three tasks do not appear to be exceeding their stack size (141/256, 141/256, 123/256.) The only unusual think I see in the ROV is the following error about the timer:

    "Timer device period value: 89999999 does not match instance period: 90000."

    Could that be causing the jump to PIE_illegalisr()? Mind also taking a look at my linker command file to see if it looks correct? (see below.) It's based off of f28069F_ram_lnk.cmd, but modified a bit to fit huge .cinit.

    Thanks,

    Grant

    MEMORY
    {
    PAGE 0 :
       BEGIN       : origin = 0x000000, length = 0x000002
       RAMM0_M1       : origin = 0x000050, length = 0x0007B0
       RESET       : origin = 0x3FFFC0, length = 0x000002
       FPUTABLES   : origin = 0x3FD590, length = 0x0006A0	 /* FPU Tables in Boot ROM */
       IQTABLES    : origin = 0x3FDC30, length = 0x000B50    /* IQ Math Tables in Boot ROM */
       IQTABLES2   : origin = 0x3FE780, length = 0x00008C    /* IQ Math Tables in Boot ROM */
       IQTABLES3   : origin = 0x3FE80C, length = 0x0000AA	 /* IQ Math Tables in Boot ROM */
       BOOTROM    : origin = 0x3FF3B0, length = 0x000C10
    
    PAGE 1 :
       BOOT_RSVD   : origin = 0x000002, length = 0x00004E    /* Part of M0, BOOT rom will use this for stack */
       RAML0_L6    : origin = 0x008000, length = 0x008000
       USB_RAM     : origin = 0x040000, length = 0x000800    /* USB RAM */
    }
    
    SECTIONS
    {
       /* Setup for "boot to SARAM" mode:
          The codestart section (found in DSP28_CodeStartBranch.asm)
          re-directs execution to the start of user code.  */
       codestart        : > BEGIN,      PAGE = 0
       ramfuncs  		: > RAMM0_M1,
                             LOAD_START(_RamfuncsLoadStart),
                             LOAD_END(_RamfuncsLoadEnd),
                             RUN_START(_RamfuncsRunStart),
    						 LOAD_SIZE(_RamfuncsLoadSize),
                             PAGE = 0
       .text            : > RAML0_L6,   PAGE = 1
       .cinit           : > RAML0_L6,      PAGE = 1
       .pinit           : > RAMM0_M1,      PAGE = 0
       .switch          : > RAMM0_M1,      PAGE = 0
       .reset           : > RESET,      PAGE = 0, TYPE = DSECT /* not used, */
       .stack           : > RAMM0_M1,   PAGE = 0
       .ebss            : > RAML0_L6,   PAGE = 1
       .econst          : > RAML0_L6,   PAGE = 1
       .esysmem         : > RAML0_L6,   PAGE = 1
       .cio        	    : > RAML0_L6,   PAGE = 1
    
       IQmath           : > RAML0_L6,   PAGE = 1
       IQmathTables     : > IQTABLES,   PAGE = 0, TYPE = NOLOAD
       
       /* Allocate FPU math areas: */
       FPUmathTables    : > FPUTABLES,  PAGE = 0, TYPE = NOLOAD
    }
    

  • Hi Grant,
    I've asked around and haven't found anyone that has experience with migrating Motorware to a TI-RTOS project. Have you tried posting on the Motorware forum as well. Maybe someone there will be able to help.

    Regards,
    Moses
  • Hey Moses,

    I got around the current issue in this thread. I had to remove pie.c from the build, and disable the timer initialization stuff from hal.c. 

    I'm currently stuck on a different issue though. I posted on the motorware forum, but Chris over there directed me to post on the TI-RTOS forum. It appears to be a bit of a loop.

    e2e.ti.com/.../1581493