6 Replies Latest reply on Jan 21, 2014 6:49 PM by userc_2191

    Linux port of WICED SDK

      This Forum warrants a thread specifically for those wishing to use WiFi SoCs and/or WICED SDK/APIs on Linux. So, here it is.

       

       

      I have been wondering if a Linux port of the WICED SDK exists? Have an email into Broadcom about this and will update this post after I hear from them.

       

       

      Read an interesting post in this forum (http://community.broadcom.com/message/1447#1447) that WICED SDK was created to deal with "non-Linux" based uCs and O/Ss, pointing out that a opensource Broadcom WiFi Linux Driver already exists (brcmfmac and brcmsmac). This got me thinking.

       

       

      I was about to try and port the WICED SDK to Raspbian Linux (custom linux distribution for Raspberry Pi EVB which is based on the BCM2835).

       

       

      Here are some thoughts on what may be to gained from a WICED Linux port versus a standard Linux WiFi SoC driver on a Linux platform:

       

      1) O/S independence for your application code (by using the WWD (WICED WiFi Driver) layer). Then, later on, it would be easier to migrate from Linux to an RTOS of your choosing (FreeRTOS and ThreadX are available by default).

       

      2) Looking at "..Wiced-SDK-2.4.0WICED-SDKDocWICED-SDK-Software-Stack.pdf":

       

      a) Is OTA ("Over The Air" upgrade) suppored with the standard open source Broadcom Linux driver (which the open source community turned into a "brcmfmac" driver for SDIO and USB interfaces)?

       

      b) Do the following WICED APIs (not sure yet if they work through WWD calls) have equivalent Linux APIs/calls?:

       

      Note: I know Linux does have APIs and drivers for all of the following. But, you may have to do extra work to use APIs different than those defined in the WICED SDK?

       

      1. MCU powersave

       

      2. Wi-Fi Powersave (I have heard that the Linux driver has issues with low power stuff, maybe it has been fixed already?)

       

      The WLAN chip requires an external 32kHz sleep clock input during powersave. Platforms that do not support Wi-Fi powersave (per the table above)

       

      are not capable of driving the WLAN sleep clock. An external 32kHz clock is required for these platforms.

       

      3. I2C API

       

      4. ADC/PWM API

       

       

      Does anyone know if a WICED SDK porting guide exists? If not, I may try and create one and post it.

        • 1. Re: Linux port of WICED SDK

          It sounds like you want to develop WICED applications and run them in your native Linux OS.

          Technically this is feasible however you will need to implement Linux equivalents of all the high level WICED functions and then create your own Makefile to build and link your application using the Linux GCC rather than the ARM-GNU GCC provided by the WICED-SDK.

           

          You would also need to modify the internal WWD layer to redirect outgoing Ethernet frames to a local Ethernet device and pass packets received on that device into the host_network_process_ethernet_data() function of your network stack.

          • 2. Re: Linux port of WICED SDK

            Thanks for the reply. Makes sense. But, I already have a cross-compile platform (on Windows) for my ARM based BCM2835. So, is there some reason I need to use Linux GCC instead of ARM-GNU-GCC?

             

            Yes, I was aware I would need to port WWD. It looks fairly straight forward. Most of the WWD is in a single file and well documented.

             

            My team is thinking that it is better to just go with generic Linux and generic Linux API's, rather than port WWD to get WICED WiFi SDK on Linux. The only issues we know of so far are:

            1) OTA (Over The Air) updates is not ported to Linux. Note: It or an equivalent are ported to Android though (so I hear).

            2) DCT mayb have to be delt with. This is used for factory programming, etc.. (serial number, MAC address, security certificate, etc..)

            • 3. Re: Linux port of WICED SDK

              If you are already using Linux than it's best you stay with the API and abstractions Linux provides.

              The WICED SDK is designed to be a Linux replacement in truly embedded environments that do not have the resources to run Linux and where power optimization is an important factor. Trying to mix the two will only add translation layers.

              • 4. Re: Linux port of WICED SDK

                If I recall correctly, you'll need arm-linux-gcc to cross compile for Linux based systems on ARM.

                • 5. Re: Linux port of WICED SDK

                  Yes, I agree. Thanks for the advice and input...

                  • 6. Re: Linux port of WICED SDK

                    Thanks for the info...