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.

BOOSTXL-CC3135: Porting simplelink wi-fi SDK to NRF52840 to communicate with BOOSTXL-CC3135: 'SemaphoreP_Params' can not be resolved.

Part Number: BOOSTXL-CC3135
Other Parts Discussed in Thread: CC3135, CC3100, CC3120

I am trying to port the SimpleLink Wi-Fi SDK to nrf52840 using the steps described in the 'simplelink.h' file. But I am stuck at defining "#define _SlSyncObj_t".

the errors that I get are:

  • Unkown type name 'SemaphoreP_handle'
  • Unkown type name 'MutexP_Handle'
  • Type '_SlSyncObj_t' could not be resolved
  • Type '_SlLockObj_t' could not be resolved

I am not using an RTOS and I am new to the SimpleLink platform. can somebody help me out? if you need more info please ask.

  • Hi,

    You will need to define and implement the various sync objects needed by the Simplelink host driver with your platform-specific functionality. This is true even if you are not using an RTOS and would not have that functionality built-in as it is typically provided by your RTOS. An explanation for why this is the case can be found here:
    e2e.ti.com/.../2543517
    As I mention in my linked post, there exists an example of how you would implement the sync objects in a noRTOS config in the CC3100 SDK. I suggest you take a look at how the host driver porting layer is setup in one of the MSP430 examples there for an idea of how to go about implementing those sync objects. While the host driver is somewhat different between the CC3100 and the CC3135, the general pieces needed are the same and the implementation of those sync objects in nonos.c should be a good starting point.

    Feel free to let me know if you need more clarification or have further questions on porting the host driver.

    Regards,
    Michael
  • thank you for your post, it helped a lot.

    I am now defining the asynchronous event handlers, but I am stuck with the include files. I don't understand the file/folder structure yet. I think it’s something simple, but I can't get SlDeviceFatal_t defined for my asynchronous event handlers. its defined at “driver.h”, but if I include “driver.h”, I get a lot of other unknown types. I think I’m not supposed to edit the driver.h file to fix this. I have already included the “simplelink.h” file.

    I have also noticed that _SlSpawnEntryFunc_t in “nonos.h” is undefined. its defined in simplelink.h but I don’t know how to get it to work without editing “nonos.h”.

    How do I correctly ad the include files to my functions defined in “user.h”. Let me know if you need more information.

    Kind regards,

    Bas

    EDIT: i am using a makefile with GCC compiler. i have added the following includes and sources

    # source folders
    SRC_FILES += \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/device.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/driver.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/flowcont.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/fs.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/netapp.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/netcfg.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/netutil.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/nonos.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/sl_socket.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/spawn.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/wlan.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/porting/CC_NRF_PORTING.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/eventreg.c \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source/wlanconfig.c \
    # include folders
    INC_FOLDERS += \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/source \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source/ti/drivers/net/wifi/porting \
      $(TI_SIMPLELINK_WIFI_SDK_ROOT)/source \

  • Hi Bas,

    When you are copying the non-OS functionality of the CC3100 SDK, you should only copy the needed components from nonos.c and nonos.h. You can modify those files as you see fit, as back with the CC3100 there wasn't a strictly defined user.h/cc_pal.c/cc_pal.h like there is with the CC3120/CC3135 host drivers. Basically, you should be keeping the same structure as what you find in the newer SDK, but take the implementations of the various sync objects and functions from nonos.c/.h and use those to fill in cc_pal.c as needed.

    By the way, have you taken a look at the Wi-Fi plugin?
    www.ti.com/.../simplelink-wifi-cc3120-sdk-plugin
    The plugin shows how you would port the newest CC31xx host driver to various other MCUs. It should have the same structure as the main CC32xx SDK, and it also has a few gcc projects you can use as a reference.

    Regards,
    Michael
  • Hi Micheal, I have added and implemented the event handlers in the main, and the code can be compiled. thank you.