Simplicity Studio Knowledge Base

      • Issue with Latest Simplicity Studio update and debugger - December 20, 2017

        jpitt | 12/355/2017 | 09:31 AM

        Hi All,

        This is just a warning that we are seeing an issue with the latest release when customers try to debug a project.  Silicon Labs is able to reproduce the issue and we are working on getting a fix published as soon as possible.  Until that fix is released it is recommended not to update Simplicity Studio at this time.

        Silicon Labs will update this Knowledge base article as soon as the release has been published.

        We apologize for this issue.

        Thank you,


      • A Generate Error is seen with BLE and

        jpitt | 12/352/2017 | 03:13 PM

        There is a known issue with the BLE and SDKs if a project is created and only a part is specified not a Silicon Labs development board, then when the AppBuilder is run by pressing the "Generate" button the generation action will fail and a "Configuration Error" dialog box will be shown:  

        The work around is to choose the radio board that has the part with same 'feature set' on it as the starting point for creating the project and then edit the project to remove the board dependencies.  The 'feature set' portion of the target part number is the 3 digits after performance grade.  For example for the EFR32BG1B232F256GM56, the BG1B232 indicates the Blue Gecko Series 1 family, the B is the 'basic' performance grade and the feature set is the '232'.  This url can be used to help select which radio board to specify in Simplicity Studio: The 'BRD' can be used in place of the 'SLWRB' in the part number.


      • Increasing programming speed with Simplicity Commander

        marao | 11/320/2017 | 06:04 PM

        The following tweaks can be used to speed up your programming speed while using the Simplicity Commander - 

        1. Starting with a mass erase, either "commander device masserase" or as a part of the first flash operation ("commander flash --masserase <...>" is often a good idea, since this will run a chip erase which is a lot faster than doing the same via page erases. Both the flashloader and "commander device pageerase --region @mainflash" will use page erases, not a chip erase.
        2. Either combining the images into one file, or simply flashing several files at the same time, would help, since it removes the overhead of invoking Commander multiple times. If the user use a .s37 or .hex file, there will be no extra blank flash programmed, since these files only contain the actual data to be written. Using a plain .bin file will generally not work. For example, if the user is writing data both to main flash and the user page, that would result in a 250 MB bin file, which Commander will refuse to create or flash.
        3. Adjusting serial wire clock speed may help. The default in Commander is 8 MHz, which is the fastest the WSTK supports. If the user is using another debugger, such as a J-Link Pro, they may be able to use speeds up to 50 MHz.


      • Jlink Installer

        Alan_S | 10/275/2017 | 02:58 PM


        I'd like to reinstall my Jlink driver for Simplicity Studio. Where can I get the installer for just the driver?


        Simplicity Studio has the Jlink installer as well as installers for other software you might have installed in the Simplicity Studio folder under:




      • Creating or renaming .cproject files

        jstine | 09/244/2017 | 12:32 PM


        How do I create or rename a filename like ".cproject" in Windows?  I get an error saying "You must type a file name"


        To create or rename a file beginning with a period in windows explorer, type a period, the filename, then another period.  For example ".cproject."  Windows will rename this to ".cproject"


        You can also use a command prompt, such as git-bash, or cmd.exe to rename the file

      • Syntax error on ISR function definitions

        marao | 06/160/2017 | 06:48 PM


        How to get rid of the syntax error flagged by Simplicity Studio for ISR function definitions?


        While including ISR function definitions, Simplicity Studio can show squiggly lines and this syntax error - "Multiple markers at this line" (see figure below)


        Screen Shot 2017-04-27 at 9.41.02 AM.png

        This does not cause any build errors but is just not a very appealing sight during the development phase. 


        Why is this happening?


        The Eclipse CDT parser (which parses the code to build an index) does not like that syntax even though the Silicon Labs C compiler accepts it. 


        How to fix this?


        Since the compiler itself does not generate any errors, you could ignore the CDT syntax error. You can also turn off syntax error reporting in the editor by going to


        1. [Window] > [Preferences] > [General] > [Editors] > [Text Editors] > [Annotations],
        2. Select  C/C++ Indexer Markers, and
        3. Uncheck all the checkboxes.

        Also in many cases, the error is due to 8051 compiler extensions that are not ANSI C compliant.  For example, the interrupt and using keywords are 8051 extensions.  To have the CDT parser automatically ignore these keywords, instead use the SI_INTERRUPT() or SI_INTERRUPT_USING() macros from si_toolchain.h.


        si_toolchain.h uses conditional compilation to automatically remove unrecognized keywords from the CDT parser to prevent syntax errors.


        #else  // __SLS_IDE__ : Macros defined to remove syntax errors within Simplicity Studio
        #define SI_INTERRUPT(name, vector) void name (void)
        #define SI_INTERRUPT_USING(name, vector, regnum) void name (void)
        #define SI_INTERRUPT_PROTO(name, vector) void name (void)
        #define SI_INTERRUPT_PROTO_USING(name, vector, regnum) void name (void)
      • Debug Console window in Simplicity Studio

        BrianL | 06/160/2017 | 06:28 PM

        To enable the debug console window in studio, add the following flag to the top of your studio.ini file, or call studio.exe with the following parameter:




        This displays a debug console window that shows the real-time output of Studio's status messages. Most of this information is also displayed in the Error Log view.





      • Convert C project to C++ Project in Studio

        Stephen | 03/81/2017 | 07:58 PM


        I have an existing C project in the Simplicity Studio IDE. How do I convert this to a C++ project?


        1. In the Simplicity IDE Project Explorer, select the project to be converted.
        2. Then click the top level menu Project menu select [Convert] > [Convert MCU Project to C or C++...].  A [Convert Silicon Labs MCU Project(s) to a C or C++] dialog box appears, and you can select the projects to be converted and if the resulting project should be C or C++:ConvertProject.PNG
        3. Then click [Finish], and the project(s) will be converted.


      • Using EFM8 with Keil RTX51 TINY in Simplicity Studio

        Jiehui | 03/72/2017 | 12:45 PM


        Using Simplicity Studio V4, there is an RTX51.LIB error after building after adding Keil RTX51 Tiny code into my 8051 project.


        How can I fix this problem?


        The Keil RTX51 Tiny Real-Time kernel is included in the PK51 Professional Developer's Kit.


        Using the LX51 linker, add the RTX51TINY directive to specify that the project being linked is a real-time application that uses the RTX51 Tiny Real-Time Operating System. This can be done in the Properties of the current project in Simplicity IDE: Settings > Keil 8051 Linker > Miscellaneous > Additional Flags. Finally re-build the project again.




        An unlimited Keil PK51 license is provided for 8-bit Silicon Labs MCUs. Register your product and received the key to unlock your PK51 tools from Simplicity Studio > Help > Licensing or from here.

      • Simplicity Studio v4 Watchpoints

        ChrisM | 02/44/2017 | 11:58 AM


        How do I setup a breakpoint to suspend program execution when a specific variable is read or written?


        What are Watchpoints?


        Simplicity Studio v4 supports a feature called watchpoints.  Watchpoints are similar to breakpoints in that program execution is suspended when certain conditions occurs.  Breakpoints halt once the program counter (PC) matches a specified value.  Watchpoints can be configured to halt once an expression is read or written or a specified condition is true.


        Configuring Watchpoints


        To configure a watchpoint for EFM32 products, perform the following steps:

        1. Develop a firmware project or use an existing code example.

        2. Download the firmware and start a debug session.

        3. Once the debug session has connected, select the Breakpoints view.

        4. To add a new watchpoint, click the down arrow on the top right side of the Breakpoints view.


        5. In the Properties for C/C++ Watchpoint dialog, enter a valid expression, such as the name of a variable you wish to watch.


        6. Check Read if you want to break when the expression is read by the CPU. Check Write if you want to break when the expression is written by the CPU.

        7. Check Enabled to enable the watchpoint.

        8. Condition can be used in addition to Read/Write to halt the CPU only when all specified conditions are true.  A condition can be an expression such as "msTicks > 1000".

        9. Click OK to apply the watchpoint settings.


        Watchpoint Examples


        The following examples describe how to enable simple watchpoints using the SLSTK3401A_blink example for the Pearl Gecko STK.


        Break When Expression is Read


        To halt the CPU when the msTicks variable is read by the CPU, choose the following settings:

        Expression to watch: msTicks

        Read: Checked

        Enabled: Checked



        After enabling the watchpoint and running, the CPU will halt at the first instruction after the expression is read.  In this case, msTicks is read when it is assigned to curTicks and again each time in the while loop while waiting for the delay to complete. 




        Break When Expression is Written


        To halt the CPU when the msTicks variable is written by the CPU, choose the following settings:

        Expression to watch: msTicks

        Write: Checked

        Enabled: Checked



        After enabling the watchpoint and running, the CPU will halt at the first instruction after the expression is written.  In this case, msTicks is written when it is incremented by SysTick_Handler(). 




        Break When Expression is Read/Written and a Condition is True


        Adding a condition to the watchpoint will only break when the read/write condition is true as well as the expression in the Condition text box also evaluates to true.


        Note that adding an expression to Condition will greatly reduce the running speed of the firmware as the debugger must constantly run/halt the CPU to evaluate the expression.


        To break when msTicks is written to a value greater than 1000, choose the following settings:

        Expression to watch: msTicks

        Write: Checked

        Enabled: Checked

        Condition: msTicks > 1000



        Note that since the debugger will run/halt the CPU rapidly, it may be difficult to manually suspend the CPU.  To do so, uncheck the watchpoint enable checkbox on the Breakpoints view and then click the suspend button as normal.