Currently if the offline installer archives are used to install and update Simplicity Studio it is hard to tell when the archive files have been updated indicating that an update is available. Since the files tend to be very large (some are over 8 GB) it is inconvenient to download them just to check if they have been updated. So this article will list the latest version of Simplicity Studio and the various SDKs that have been released. The goal will be to update the article each time there is a new release, so that by following this article customers will be notified when Simplicity Studio and the various SDKs have been updated.
I also want to point out that the Simplicity Studio [Help] > [About] functionality has been enhanced to show a unified version number and the versions of the various components that comprise that version of Simplicity Studio. The information is presented in a matrix format that will show the component versions for the last 10 Simplicity Studio releases. The unified version number will make it easier to communicate the installed version of Simplicity Studio to Silicon Labs.
The current version of Simplicity Studio is 4.1.12.1. It was released on November 26th, 2019 and this is a portion of the [Help] > [About] information that also shows the Simplicity Studio Platform version (which was previously the easiest way to report the Simplicity Studio version):
On the About box there is also a "Toolchains and SDKs" tab that shows the versions of the installed toolchains and SDKs. This screenshot shows the information on the latest available SDKs as of November 26th, 2019:
I hope this information proves useful especially to customers using the offline archives files to install and update Simplicity Studio. This article should provide a temporary benefit until an update indication can be added to the offline installer page.
How to get rid of the syntax error flagged by Simplicity Studio for ISR function definitions?
Answer
While including ISR function definitions, Simplicity Studio can show squiggly lines and this syntax error - "Multiple markers at this line" (see figure below)
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
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)
Using Simplicity Studio V4, there is an RTX51.LIB error after building with Keil RTX51 Tiny code into my 8051 project.
How can I fix this problem?
Answer
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 the project being linked. 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.
Is it possible to change a project's device after it is created?
Answer
Yes, you can change the device that the project is configured for by opening the Properties of the project you want to change. Under C/C++ Build -> Board/Part/SDK, there is an option to change the Boards and then Part fields for that particular project.
In Simplicity Studio V4, it's now possible to flash a .hex file (or .omf file, for 8-bit MCUs) to a device from the Project Explorer. This removes the steps of having to open the flash programmer and manually navigating to the .hex file.
To perform this action, navigate to the .hex file in the project explorer. Right click on the file and then choose "Flash to Device" from the context menu. The flash programmer will be opened with the file path filled in with the path of the chosen hex file.
In Simplicity Studio V4, when a device or kit is connected, the Getting Started, Documentation, Compatible Tools, and Resources panes are automatically populated with any relevant collateral.
However, if you do not have a kit or part detected within Simplicity Studio, these panes will be empty.
In order to populate these panes with documentation related to a kit or part that you are interested in, navigate to the "Solutions" view (left of the screen, second tab), add a New Solution, and then add the device of your choosing to this solution. The documentation will now be available.
For SS V4, the hardware set up for the EFM8, EFM32, EFR32 or BGM devices remains the same and can be referred to from the Knowledge Base articles listed above. The Simplicity Studio configuration, however, has been modified to make changing debug modes easier. There is no Kit Manager in V4, and debug modes can be changed directly from the Launcher perspective.
To prepare your setup:
1. Connect the debug pins between the debugger and the target board as described in the Knowledge Base articles above.
2. Power the custom board.
3. Connect the STK to the host and move the switch to the AEM or Debug position or connect a JLink debugger to the host.
In Simplicity Studio, perform the following steps to connect to a target board using an STK in debug OUT mode:
1. Launch Simplicity Studio V4 and select the root element in the Device view of the STK.
2. The Launcher perspective shows the Debug mode, and there is a link next to it to change the debug mode.
3. Click on Change. In the subsequent J-link window, under the Adapter Configuration tab, change Debug Mode to OUT.
4. Go to the Device Hardware tab in the same window. Change the Target Part to the target MCU. Leave the Target Interface as SWD. Click OK.
5. The device information will be updated in the Device view in the Launcher perspective.
6. These steps may need to be repeated after closing and reopening Simplicity Studio.
An alternative way to get the J-link window (Step 3) open would be to right click the root element and select Device Configuration. Steps 3 - 6 will remain the same.
Now you can debug the external EFM8/EFM32/EFR32/BGM MCU using Simplicity Studio V4.
The flash lock bytes are located at the top of the flash for the 8 bit devices. For example, on some devices the flash lock bytes are located at address 0xFBFF. Please consult the Data Sheet or Reference Manual for the specific device to find the exact lock byte location.
Follow these steps to set the lock bytes at address 0xFBFF using Keil as the compiler:
1) Create a separate file and add it to the build that declares the lock byte value. For example, create a file called LOCKBYTE.c that has the line of code as follows:
unsigned char code FlashLock = 0xEF;
2) Right click the the project in the Project Explorer window and select [Properties] at the bottom. 3) Go to [Settings] under the [C/C++ Build properties]. 4) Select the [Miscellaneous] option under the [Keil 8051 Linker] section. 5) In the [Additional Flags] text box, enter the options
CODE(?CO?LOCKBYTE (0xFBFF))
where LOCKBYTE is the name of the file as shown above.
6) Rebuild. 7) Verify that the lock bytes were stored at the proper location via the map file. You can also verify this using the hex file.
Note: The linker may throw an error because it is set to error on warnings. If that is the case: 8) In the same [Miscellaneous] section, uncheck the box [Treat unresolved symbols as errors]. 9) Rebuild and verify.
Can I program multiple Silicon Labs target devices in parallel?
Answer
Yes! Simplicity Studio includes a standalone utility, "Simplicity Commander", that provides Kit Management, Flash Programming, and SWO Terminal functionality. Multiple instances can be open simultaneously to support independent programming of multiple target devices (each one interfaced to an independent programmer/debug adapter).
Note: If you are familiar with the deprecated "EnergyAware Commander", you will find this new tool to be quite similar.
Instructions to access Simplicity Commander as a standalone utility or as included in Simplicity Studio versions v3 and v4 follow in the sections below. A final section describes the Simplicity Commander GUI view (the tool also exposes a command line interface - for more information see KB article "Simplicity Commander")
Standalone Installation:
As of 7/2017, Simplicity Commander is now available as a standalone utility (in addition to the Simplicity Studio install options listed below). See the download links listed under the "In-System Programming" section at Production Programming Options for Silicon Labs Devices. Installers and release notes are available for Windows, Mac, and Linux.
Please download the installer for different platform here:
See the included README.txt for additional guidance and dependencies (Commander currently requires the SEGGER J-Link software pack to be installed).
Simplicity Studio v3:
To access Simplicity Commander from within Simplicity Studio v3, you must first be in the "Development" perspective in Simplicity Studio. This can be done using the quick access icons at the top right of any window:
Alternatively, you can access the Development perspective from the Launcher by clicking on the [Simplicity IDE] tile:
Once in the Development perspective, the Simplicity Commander can be opened from the File menu:
Note: You can repeat the last step to open multiple independent instances of the Simplicity Commander.
Simplicity Studio v4:
To access Simplicity Commander from within Simplicity Studio v4, you must open the [Tools] dialog window. In early versions of SSv4, this was accessible from an icon near the Search entry field near the center of the application menu bar:
In current versions of SSv4, the icon to access this [Tools] dialog has been reduced to the "wrench" icon (it no longer includes the word "Tools") and shifted to the collection of quick-access icons on the left side of the menu bar:
Note: You can repeat the last step to open multiple independent instances of the Simplicity Commander.
Simplicity Commander:
Simplicity Commander opens in a disconnected state. If there are multiple J-Link debuggers connected to the host system, select the J-Link Device attached to the target device of interest. Click [Connect] to connect to the target device:
Once connected, you will see the screen populate various fields with information on the active connection:
Click the [Kit], [Flash], and [SWO Terminal] tiles in the left frame to navigate between features of Simplicity Commander.
Simplicity Studio Knowledge Base
Latest Simplicity Studio Versions (aid for customers using offline installer archives)
Currently if the offline installer archives are used to install and update Simplicity Studio it is hard to tell when the archive files have been updated indicating that an update is available. Since the files tend to be very large (some are over 8 GB) it is inconvenient to download them just to check if they have been updated. So this article will list the latest version of Simplicity Studio and the various SDKs that have been released. The goal will be to update the article each time there is a new release, so that by following this article customers will be notified when Simplicity Studio and the various SDKs have been updated.
I also want to point out that the Simplicity Studio [Help] > [About] functionality has been enhanced to show a unified version number and the versions of the various components that comprise that version of Simplicity Studio. The information is presented in a matrix format that will show the component versions for the last 10 Simplicity Studio releases. The unified version number will make it easier to communicate the installed version of Simplicity Studio to Silicon Labs.
The current version of Simplicity Studio is 4.1.12.1. It was released on November 26th, 2019 and this is a portion of the [Help] > [About] information that also shows the Simplicity Studio Platform version (which was previously the easiest way to report the Simplicity Studio version):
On the About box there is also a "Toolchains and SDKs" tab that shows the versions of the installed toolchains and SDKs. This screenshot shows the information on the latest available SDKs as of November 26th, 2019:
I hope this information proves useful especially to customers using the offline archives files to install and update Simplicity Studio. This article should provide a temporary benefit until an update indication can be added to the offline installer page.
Thank you,
jpitt
Syntax error on ISR function definitions
Using EFM8 with Keil RTX51 TINY in Simplicity Studio
Question
Using Simplicity Studio V4, there is an RTX51.LIB error after building with Keil RTX51 Tiny code into my 8051 project.
How can I fix this problem?
Answer
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 the project being linked. 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 IDE
Downloading the memory of a device using Simplicity Studio
Studio V4: Flashing a .hex file to a device from the Project Explorer
Studio V4: Populating kit or part resources and documentation without connecting
Simplicity Studio V4 - Debugging an EFM8/EFM32/EFR32/BGM product on a custom board using a Starter kit
If Simplicity Studio V3.3 is being used, then the following knowledge base articles explain how one can debug an EFM8/EFM32 product on a custom board:
Debugging for EFM8 devices
Debugging for EFM32 devices
For SS V4, the hardware set up for the EFM8, EFM32, EFR32 or BGM devices remains the same and can be referred to from the Knowledge Base articles listed above. The Simplicity Studio configuration, however, has been modified to make changing debug modes easier. There is no Kit Manager in V4, and debug modes can be changed directly from the Launcher perspective.
To prepare your setup:
1. Connect the debug pins between the debugger and the target board as described in the Knowledge Base articles above.
2. Power the custom board.
3. Connect the STK to the host and move the switch to the AEM or Debug position or connect a JLink debugger to the host.
In Simplicity Studio, perform the following steps to connect to a target board using an STK in debug OUT mode:
1. Launch Simplicity Studio V4 and select the root element in the Device view of the STK.
2. The Launcher perspective shows the Debug mode, and there is a link next to it to change the debug mode.
3. Click on Change. In the subsequent J-link window, under the Adapter Configuration tab, change Debug Mode to OUT.
4. Go to the Device Hardware tab in the same window. Change the Target Part to the target MCU. Leave the Target Interface as SWD. Click OK.
5. The device information will be updated in the Device view in the Launcher perspective.
6. These steps may need to be repeated after closing and reopening Simplicity Studio.
An alternative way to get the J-link window (Step 3) open would be to right click the root element and select Device Configuration. Steps 3 - 6 will remain the same.
Now you can debug the external EFM8/EFM32/EFR32/BGM MCU using Simplicity Studio V4.
Setting the lock bytes for C8051 or EFM8 devices in Simplicity Studio
Parallel programming with Simplicity Commander
Question
Can I program multiple Silicon Labs target devices in parallel?
Answer
Yes! Simplicity Studio includes a standalone utility, "Simplicity Commander", that provides Kit Management, Flash Programming, and SWO Terminal functionality. Multiple instances can be open simultaneously to support independent programming of multiple target devices (each one interfaced to an independent programmer/debug adapter).
Note: If you are familiar with the deprecated "EnergyAware Commander", you will find this new tool to be quite similar.
Instructions to access Simplicity Commander as a standalone utility or as included in Simplicity Studio versions v3 and v4 follow in the sections below. A final section describes the Simplicity Commander GUI view (the tool also exposes a command line interface - for more information see KB article "Simplicity Commander")
Standalone Installation:
As of 7/2017, Simplicity Commander is now available as a standalone utility (in addition to the Simplicity Studio install options listed below). See the download links listed under the "In-System Programming" section at Production Programming Options for Silicon Labs Devices. Installers and release notes are available for Windows, Mac, and Linux.
Please download the installer for different platform here:
installer for windows, installer for MAC, installer for Linux.
See the included README.txt for additional guidance and dependencies (Commander currently requires the SEGGER J-Link software pack to be installed).
Simplicity Studio v3:
To access Simplicity Commander from within Simplicity Studio v3, you must first be in the "Development" perspective in Simplicity Studio. This can be done using the quick access icons at the top right of any window:
Alternatively, you can access the Development perspective from the Launcher by clicking on the [Simplicity IDE] tile:
Once in the Development perspective, the Simplicity Commander can be opened from the File menu:
Note: You can repeat the last step to open multiple independent instances of the Simplicity Commander.
Simplicity Studio v4:
To access Simplicity Commander from within Simplicity Studio v4, you must open the [Tools] dialog window. In early versions of SSv4, this was accessible from an icon near the Search entry field near the center of the application menu bar:
In current versions of SSv4, the icon to access this [Tools] dialog has been reduced to the "wrench" icon (it no longer includes the word "Tools") and shifted to the collection of quick-access icons on the left side of the menu bar:
Note: You can repeat the last step to open multiple independent instances of the Simplicity Commander.
Simplicity Commander:
Simplicity Commander opens in a disconnected state. If there are multiple J-Link debuggers connected to the host system, select the J-Link Device attached to the target device of interest. Click [Connect] to connect to the target device:
Once connected, you will see the screen populate various fields with information on the active connection:
Click the [Kit], [Flash], and [SWO Terminal] tiles in the left frame to navigate between features of Simplicity Commander.