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.

RTOS/F28M36P63C2: How to add CfgGetEntry, mmZeroInit to a project

Part Number: F28M36P63C2
Other Parts Discussed in Thread: SYSBIOS

Tool/software: TI-RTOS

I have a TI-RTOS project with multiple build configurations.  One of the build configurations which has not been maintained fails with missing symbols:

  mmZeroInit(void *, unsigned int)
  CfgAddEntry(void *, unsigned int, unsigned int, unsigned int, int, unsigned char *, void **)
  CfgGetEntry(void *, unsigned int, unsigned int, unsigned int, void **)
  CfgRemoveEntry(void *, void *)

How do I add these symbols to my TI-RTOS project?

Thanks! 

  • Hi Steve,
    Can you tell me what TI-RTOS version you are using? Could you also attach the configuration file for the configuration that does not build?
    Thanks,
    Janet
  • Hi Janet,

    I don't know where I can find the version number of the RTOS; it's very recent (updated within the last few months, I believe).  If you can tell me where the version number can be found, I'd be happy to provide that for you.

    I cannot provide the *.cfg file in a public forum.  However, the *.cfg file is used for both the build that fails and the build that succeeds.  Can you tell me how to add the functions I mentioned?  Which libraries are needed?

  • Hi Steve,
    To find the TI-RTOS version in CCS, go to the project properties. Under General -> RTSC, you should see the TI-RTOS version under "Products and Repositories".
    Best regards,
    Janet
  • It shows version 2.16.1.14
  • Ok, that is the latest version for your device. I sent you a friend request so that you'll be able to send me the .cfg file priivately.
    Best regards,
    Janet
  • Hi Steve,
    I'm not seeing the link error when I build an NDK app using the NDK configuration from your .cfg file. Can you try cleaning your project and rebuilding?
    Thanks,
    Janet
  • I've done that many times; I just re-built fresh and I get this:

    undefined first referenced
    symbol in file
    --------- ----------------
    mmZeroInit(void *, unsigned int) ./comm.obj
    CfgAddEntry(void *, unsigned int, unsigned int, unsigned int, int, unsigned char *, void **) ./comm.obj
    CfgGetEntry(void *, unsigned int, unsigned int, unsigned int, void **) ./comm.obj
    CfgRemoveEntry(void *, void *) ./comm.obj

    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "MyProject.out" not built
    gmake: *** [MyProject.out] Error 1
    gmake: Target 'all' not remade because of errors.

    I don't know if it's related, but I also get about a dozen messages like this:
    error #10264: DEFAULT memory range overlaps existing memory range SMEM_TRANSPORT_M3_TX
  • Hi Steve,
    Is comm.c one of the files in your app, or is this coming from a library? Is SMEM_TRANSPORT_M3_TX defined in your linker command file? What platform are you building for? I was assuming it was ti.platforms.concertoM3:F28M36P63C2. Can you check under CCS -> Project -> Properties -> General -> RTSC?
    Thanks,
    Janet
  • comm.c is one of the files in my project.
    Yes, SMEM_TRANSPORT_M3_TX is defined in the linker command file.
    This is building for the ARM Cortex M3 CPU core on the F28M36x (Target: ti.targets.arm.elf.M3, Platform: ti.platforms.concertoM3:F28M36P63C2)
  • Hi Steve,

    We think you may have some old products lingering in your project.  I was able to take the tcpEcho example, add your NDK cfg code to tcpEcho.cfg, and add a dummy function that calls CfgAddEntry(), and build without errors.  It looks like your .cmd file has been modified also, since I have no SMEM_TRANSPORT_M3_TX defined in the example linker command file.  Can you attach a screen shot showing the project products (CCS -> Project -> Properties -> General -> RTSC), and the order of the projects.  Here is what I have for my example:

    For the ordering, make sure to expand the selections:

    Thanks,

    Janet

  • Janet,

    Here is the RTSC > Products and Repositories page:

    And here is the RTSC > Order page:

    Does this help?

    Thanks!
         -- Steve G.

  • Janet,

    I resolved the missing symbols (mmZeroInit, CfgAddEntry, etc.): someone changed the filename from *.c to *.cpp, but did not update the "extern" statements to be "extern 'C'".  

    I still have the errors like this:

    error #10264: DEFAULT memory range overlaps existing memory range SMEM_TRANSPORT_M3_TX

    Can you tell me where the DEFAULT memory range is defined?

  • Perhaps more information will help.  The executable in question can be built as a "stand-alone" version, in which case it will execute after the ARM Cortex M3's default boot code completes.  In this situation, the FLASH_BOOT and FLASH values in the linker script are as follows:

       FLASH_BOOT (RWX): origin = 0x00200030, length = 0x00000004
       FLASH  (RWX)    : origin = 0x00200034, length = 0x000FFF9C

    This executable can also be built to run after a small secondary bootloader.  For this, the FLASH_BOOT and FLASH values in the linker script are:

        FLASH_BOOT (RWX): origin = 0x00220000, length = 0x00000004
        FLASH  (RWX)    : origin = 0x00220030, length = 0x000DFF9C

    When I use the "bootloader" configuration, I get the "DEFAULT memory range overlaps existing memory range" message.  How do I change the *.cfg file and the linker script file in order to enable booting from a different flash location?  NOTE: the *.cfg file I'm using is the one I sent Janet via private message previously.

    Thanks!

  • It seems to be some sort of collision with "resetVecs", but I don't see where this value is specified.  How/where do I configure this?

  • Hi Steve,

    You can move the resetVecs by adding the following to your .cfg file:

    // Import the device specific Hwi module
    var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');
    m3Hwi.resetVectorAddress = 0x00220040;  // New address

    I was able to reproduce the "DEFAULT memory" link error using your FLASH_BOOT and FLASH addresses.  The error went away when I changed the reset vector address in the .cfg file.

    Best regards,

    Janet