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/CC3200: Simplelink Linker Error

Part Number: CC3200
Other Parts Discussed in Thread: SYSBIOS, ,

Tool/software: TI-RTOS

I'm trying to build a basic simplelink application and I'm getting this link error.

undefined first referenced
symbol in file
--------- ----------------
ti_sysbios_knl_Mailbox_post__E

C:/TI/tirex-content/tirtos_cc32xx_2_16_00_08/products/tidrivers_cc32xx_2_16_00_08/packages/ti/drivers/lib/drivers_wifi_cc32xxware.aem4<osi_tirtos.oem4>

Using TI-RTOS 2.16.0.08 and CC3200SDK 1.3.0.

Where should I start to debug this?

Thanks,

Alex

  • Alex,

    Seeing that your TI-RTOS in tirex folder, you need to install a local copy from software-dl.ti.com/.../ and make sure that your library is referencing the correct version.

    Regards,
    Seong
  • OK, I downloaded and installed TI-RTOS 2.16.1.14 since I am using CC3200.  

    I am starting with TI-RTOS example project: Empty (minimal) Project.  

    XDCtools version 3.32.1.22_core.  

    Compiler TI v16.9.3.LTS.  

    I add these two headers:

    #include <ti/drivers/WiFi.h>

    #include <ti/drivers/wifi/WiFiCC3200.h>

    and then add this to main():

    Board_initWiFi();

    During build, I get the following linker errors:

    undefined                      first referenced                                                                                                                        

     symbol                            in file                                                                                                                              

    ---------                      ----------------                                                                                                                        

    ti_sysbios_knl_Mailbox_create  C:/TI/tirtos_cc32xx_2_16_01_14/products/tidrivers_cc32xx_2_16_01_13/packages/ti/drivers/lib/drivers_wifi_cc32xxware.aem4<osi_tirtos.oem4>

    ti_sysbios_knl_Mailbox_delete  C:/TI/tirtos_cc32xx_2_16_01_14/products/tidrivers_cc32xx_2_16_01_13/packages/ti/drivers/lib/drivers_wifi_cc32xxware.aem4<osi_tirtos.oem4>

    ti_sysbios_knl_Mailbox_pend__E C:/TI/tirtos_cc32xx_2_16_01_14/products/tidrivers_cc32xx_2_16_01_13/packages/ti/drivers/lib/drivers_wifi_cc32xxware.aem4<osi_tirtos.oem4>

    The code is below.

    Thanks,

    Alex

    /*
     *  ======== empty_min.c ========
     */
    /* XDCtools Header files */
    #include <xdc/std.h>
    
    /* BIOS Header files */
    #include <ti/sysbios/BIOS.h>
    #include <ti/sysbios/knl/Task.h>
    
    /* TI-RTOS Header files */
    #include <ti/drivers/GPIO.h>
    // #include <ti/drivers/I2C.h>
    // #include <ti/drivers/SDSPI.h>
    // #include <ti/drivers/SPI.h>
    // #include <ti/drivers/UART.h>
    // #include <ti/drivers/Watchdog.h>
    #include <ti/drivers/WiFi.h>
    #include <ti/drivers/wifi/WiFiCC3200.h>
    
    /* Board Header files */
    #include "Board.h"
    
    #define TASKSTACKSIZE   512
    
    Task_Struct task0Struct;
    Char task0Stack[TASKSTACKSIZE];
    
    /*
     *  ======== heartBeatFxn ========
     *  Toggle the Board_LED0. The Task_sleep is determined by arg0 which
     *  is configured for the heartBeat Task instance.
     */
    Void heartBeatFxn(UArg arg0, UArg arg1)
    {
        while (1) {
            Task_sleep((UInt)arg0);
            GPIO_toggle(Board_LED0);
    	}
    }
    
    /*
     *  ======== main ========
     */
    int main(void)
    {
        Task_Params taskParams;
    
        /* Call board init functions */
        Board_initGeneral();
        Board_initGPIO();
        // Board_initI2C();
        // Board_initSDSPI();
        // Board_initSPI();
        // Board_initUART();
        // Board_initWatchdog();
        Board_initWiFi();
    
        /* Construct heartBeat Task  thread */
        Task_Params_init(&taskParams);
        taskParams.arg0 = 1000;
        taskParams.stackSize = TASKSTACKSIZE;
        taskParams.stack = &task0Stack;
        Task_construct(&task0Struct, (Task_FuncPtr)heartBeatFxn, &taskParams, NULL);
    
        /* Turn on user LED  */
        GPIO_write(Board_LED0, Board_LED_ON);
    
        /* Start BIOS */
        BIOS_start();
    
        return (0);
    }
    

  • For help to others, I've made some progress because I randomly came across the following documentation that seems critical to using TI-RTOS with simplelink.

    processors.wiki.ti.com/.../TI-RTOS_CC3200Wireless

    Alex