Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: I used my prior experience with Arduino microcontrollers when reviewing this product. I also leveraged my considerable experience with software development tools to evaluate Simplicity Studio which Silicon Labs has created for developing with this microcontroller.
What were the biggest problems encountered?: Wading through the large amount of documentation can be daunting. Sometimes you aren't sure where you should begin.
I think it's important to provide some background about my experience to provide a meaningful context for this review. I am professional software developer with about fifteen years of experience. Compared to my experience as a developer, electronics are relatively new for me. I've been immersing myself in electronics for the last several months. I've founded a local maker meetup, working on establishing a maker space and have worked on several projects.
The EFM32 Zero Gecko far surpassed my expectations. While the hobbyist may find the MCU and its supporting tools overwhelming, users with serious energy conscious projects will be well served.
Considering the emerging market of smart "things", Silicon Labs' position on "energy friendly" products makes perfect sense. It’s clear to me that Silicon Labs has heavily invested in designing a platform suited for low power consumption that makes as few sacrifices as possible. From ensuring quick “wake-up” time to the Peripheral Reflex System (PRS) - a system that affords configurable peripheral triggering without requiring the CPU - Silicon Labs appears to leave no stone unturned when it comes to finding ways to conserve power.
A great chip is just that though, without a good suite of tools to enable its application, adoption would surely suffer. The good news is that Silicon Labs is committed to the developer experience as well. Building on one of the most capable, widely used integrated development environments (IDE), Eclipse, Silicon Labs provides Simplicity Studio for the entire EFM product lineup. Many experienced developers, like myself, will feel comfortable and empowered by Simplicity Studio. After experiencing the polished, well-behaved interface I shudder to think of going back the Arduino IDE. Simplicity Studio is far more than a rebranding of Eclipse, Silicon Labs has outfitted it with an extensive set of resources to help you realize your goals. Energy Profiler provides you with real time power consumption data of the EFM32. energyAware Battery helps you project battery life of your project. These two tools are among many others you’ll find in Simplicity Studio.
Ok so the EMF32 Zero Gecko has proven its capable, but is that enough? Without adequate documentation and learning resources production adoption would again suffer. Silicon Labs does not falter when it comes to helping users get the knowledge they need. From automatically detecting the connected device and pointing you to relevant literature, to ensuring comprehensive documentation of the IDE you’re covered. Where I felt Silicon Labs really stood out in this area is with their University section, a comprehensive curriculum baked-in to the IDE. When I found that I no longer felt that I was a few books away from being ready to use the chip. Instead I thought that when I have a project idea in hand, I’ll know where to turn to understand energy conscious design and development. The only drawback is that overall Silicon Labs provides mountains of literature without what I considered to be a good signpost to get started. That’s not a show stopper, but I imagine some users could get discouraged once they’re in the woods without a map.
If energy friendly devices are on your radar, the EFM32 Zero Gecko kit is ready for you. In fairness, I can’t offer a comparison to offerings of the Silicon Labs competition. However, it’s clear that they have put together a strong ecosystem and I believe they are committed to its success. While I don’t know if its the indomitable force, I can say that it’s a serious contender that deserves serious consideration. I know that I feel comfortable recommending it to others and using it myself in energy sensitive projects in the future.
The packaging of the EMF32 Zero Gecko kit is simple, as it should be. I was pleased to see a high quality micro USB cable in the box. The components were packed well and found in the standard ESD bags you’d expect. Not much included literature, just the way I like it and appropriate for an “energy friendly” microcontroller. The URL is printed on a label of the box, but I found that googling “EFM32” brings you right to the product page. Actually there are quite a few members of the EFM32 family, but it was not hard to find the “Zero Gecko”.
Proudly featured online is this “overview” of the EFM32 Gecko MCU. It certainly demonstrates a wealth of features, but I found it cluttered and felt my eyes cross when trying to follow the diagram and understand the forest by looking at every tree.
Silicon Labs has a strong set of online documents and downloads on the product page, a welcome sight for sure. Immediately I located the IDE download. I was surprised that the “web installer” (typically just large enough to bootstrap the install) was 177 MB but by the time I sorted out where I wanted to put the file it had downloaded in the background. Nice to see that the sizable download was hosted on a quality content delivery network. The installer was straightforward, easy to navigate. An attractive window for “Simplicty Studio” appeared soon after and began installing some more components to bootstrap itself. A few moments later the component selection dialog appeared and I chose the “Full” package sporting a 1.5GB download and 3GB of required disk space. No problem, in fact, I was pleased to see the indication of a feature-rich IDE.
The EFM32 Zero Gecko kit is a professional looking PCB. First impressions of the layout are positive. Major components appear alongside labeling. While some labels are a bit cryptic I thought the switch labeled “BAT / DBG” was intuitive to indicate that the board would draw power from the micro USB dbg interface or the installed CR2032 battery.
Close-up of the densely packed components to the left of the LCD
Plugged in the USB debug cable and a brillant blue LED near the port began flickering followed by a blinking green light that is not clearly labeled. Windows chirped to indicate it recognized a device: EFM32.
The LCD screen displayed a QR code and URL for getting started. I was quite surprised by the quality of the LCD - razor sharp.
The screen displayed the message “Press any button to play”. Pressing one of the small push button switches I was tickled to see Space Invaders was built-in! The buttons responded very well to input and playing felt very natural. Again, the LCD looks great!
I won't dwell long on the included sensor board. It features the same professional build quality as the main kit. The connector was a bit snug, but didn't pose a serious issue. The included weather sensor demo performed well. The sensors were accurate and the 128 pixel LCD sharply displayed an elegant interface that responded to hand gestures via the onboard proximity sensors. Once I was satisfied with the gesture recognition though, I mainly used the pushbuttons for convenience. The sensors were accurate based on comparisons to other modest environmental monitoring equipment I had on hand.
The first time I started up Simplicity Studio I selected the Demos from the title screen. Conveniently, the connected EFM32 device was detected and its identifying data was displayed on the screen.
The demo list is impressive featuring a decent number of sample projects accompanied by lengthy descriptions. It's much nicer than my experience with the Arduino IDE where I have to waste time loading the example just to get an understanding of its purpose beyond its name. Beyond selecting the demo you can choose between "Run" and "Run under Energy Profiler" (the default). I appreciate how easy it was to hop right into the profiler. Once you click Start the programmer dialog launches to flash the selected demo onto the MCU and you're off!
The profiler looks great - really impressive actually! A very easy to read power graph scrolls across showing current consumption. The graph can be annotated with IRQ data and voltages. Selecting any portion of the graph enables a calculation of power consumption for the selected window. Current consumption is also tracked for the position under the cursor. I found this really easy to understand and I'm excited that this robust tooling will actually be very educational for myself as a hobbyist.
Saving and loading a profile was a little wonky because my first profiling session wouldn’t prompt me for a save path. Spent time thinking it might be a predefined path. Started a new session and then everything worked as expected. Data is conveniently saved as a CSV which is great for porting it over to other applications.
I found the profiler lacked some customization options. For example, I want control over the vertical scale so that I can get a better view of the details when the overall current draw remains comfortable within a small portion of the scale. I'm not saying it’s crucial, I just have the impulse to trade unused space to see the details that are getting scrunched together in the graph.
I started up a new project to get my feet wet with the editor. Simplicity Studio may feel overwhelming for users that haven’t worked with a robust IDE before.
Gigantic context menu
However, I found the tutorial for “creating and debugging a project” to be a very helpful quickstart, compared to just starting a blank project on my own. So while users may be put off by the large amount of editor features that come along with Eclipse, they can find relief in the contextual cues that Silicon Labs has worked into Simplicity Studio. It goes a long way to keeping simple tasks simple.
Unfortunately some minor Eclipse features seem broken, but I’m not sure where the problem lies meaning with Eclipse, Eclipse (windows), or Eclipse (Simplicity Studio). For example jumping to a file in the Project Explorer from the Include Browser didn't work for me. I'm not going to dwell on the Eclipse IDE itself, instead I'm going to focus on what Silicon Labs has done to customize the experience and make it relevant to the EFM32 product line.
I appreciate that Silicon Labs took the time to integrate their custom tools into Simplicity Studio. I can click on Profile from the code editor and the energy aware profiler launches for the current app. Note that when I did this I forgot that I didn't have the board plugged in, but the IDE gave me a chance to plug it in, and as soon as I did it was detected. This kept me from being bumped out of my process. It’s seemingly little things like that, that go a long way to ensuring a productive developer experience. Compare that to the user experience in the standard Arduino IDE is like night and day. I dislike the amount of time I have to reset the USB connection and select the device, especially annoying when the primary use case, especially for the hobbyist, and certainly for new users that need the easiest experience, is running with a single arduino with their project.
Also, the board is flashed prior to running the profiler, ensuring that I was running the current code, while it’s an intuitive thing to provide, it reveals thoughtful design on the part of Silicon Labs. You can imagine that if you mistakenly profiled against the wrong version of the code, you could really put yourself in a bad spot in the future as you may make decisions based on invalid data you had collected. Even the folks that fancy themselves diligent and methodical, are susceptible to careless errors as a result of mishandling the minutia. Those mistakes can become very costly when we transition from hobbyist to professional development projects.
The University section is awesome! Here I am thinking “Hmm how long will it take me to understand just what are all of the concerns I need to be aware of when designing an energy friendly device?” Silicon Labs provides the University resource which is a series of lessons that entail a comprehensive curriculum. While I’m not implying that this is a substitute for a comprehensive education in an engineering discipline, it certainly is more efficient. Silicon Labs has put in the energy to distill the major concepts that are relevant to the task at hand, and while it won't cover every scenario, you will likely understand where your knowledge gaps are. I feel this content enables me to take on these projects much sooner than I would have imagined. And because the content is provided by the manufacturer, the question of “will this material be relevant?” goes right out of the window.
Taken from the first module, a sober yet encouraging introduction.
Will you bring the next revolutionizing gadget to life? The continued progress in the MCU
industry requires dedicated and talented people developing both the MCUs as well as the end products
they are embedded in; there should be plenty of interesting opportunities.
I read through the first lesson. Concepts were usually explained well. The information is dense, meaning there isn’t much fluff or repetition. This has the advantage of being succinct but can leave the reader feeling lost if they are having a tough time with a particular concept. What would compound that scenario is when a reader can’t tell if the concept was crucial to moving forward. Hopefully, a reader would use a secondary supplement to aid them like an online book available through their local library or perhaps YouTube. From experience I would avoid Wikipedia because while it’s a great reference, it’s not a great tool for introducing concepts to a beginner, particularly in STEM areas.
When you select a lesson from the University Menu, if there are code samples in that lesson the Import Project button enables allowing you to easily create a project to work through the example code. This streamlines the process of getting hands-on with the lesson material. Automating project creation also means that new users don’t have as many opportunities to make mistakes bootstrapping a project.
Unfortunately, the projects from Introduction to C exist only for the Giant and Tiny Gecko kits, not the one that I’m using. I tried to use the Tiny Gecko project. I was able to build the project output, but when I started the Debugger I was warned that I was working with an incompatible product and I took the opportunity to abort. While I am a little disappointed that Silicon Labs didn’t include examples for my kit, I am pleased to see that they took steps to keep from unwittingly working with the wrong project. So I proceeded to create a new blank project for my kit and port the code over. The code was simple:
And turns out that’s exactly what I got from creating a new blank project. Even more curious that they didn’t just have an entry for my kit. Therein lies the danger of going the extra mile for your customers: we expect the same level of support (when feasible) for all of the kits, or at least the one we have.
As someone who has used several IDE’s and a few (dis)assembly level tools, I consider myself spoiled by Visual Studio. I often throw rocks at Eclipse so I was a bit skeptical of how I would find the debugging experience. However, I found the debugger to be quite robust.
After I launched my skeleton project the debugger attached (without problems) and automatically paused execution at the start of main. Nice to see that execution behavior as the default. I was able to review the disassembly annotated with source so I could, if desired, see what’s happening under the hood.
I pulled up the registers window and I easily added watches for the registers that were relevant to the current instructions (about to be executed).
Now even though I have taken jabs at Eclipse, much of my frustration comes from shoddy 3rd party implementations of the IDE. Silicon Labs has done a good job. When it comes to debugging features, Eclipse is fully equipped with all the things I long for when working with the Arduino IDE. The ability to set breakpoints that print to the log alleviate the need to litter your code with Serial Print statements. To elaborate on the notable features
Automatic evaluation of local variables
Silicon Labs chose to include explanations of the registers right inside of the registers window. Keeps you from constantly thumbing back to reference material. It would have been nice if they had similar functionality for op-codes.
Color coded memory view, showing the data changes between breaks in execution
Registers with color coded changes
All of these debugging features contribute to a sense that you are working within code that is executing on your own workstation and not some black box connected to your machine.
Because Silicon Labs is extending Eclipse they were able to leverage the existing Help system and focus more on content. And there is quite a bit of content available. Often product developers don’t provide you anything beyond whatever the default help documents are built into the tool they selected. It’s like if you wanted to get help for an Acrobat Reader plug-in you purchased but the help menu contains only the standard material provided by Adobe. Sure they may supplement this with their own documents locally or refer you to an online documentation site, but that takes you away from the tool leaving you to manage multiple windows instead of having a seamless integrated interface.
The Eclipse Help system includes the type of features you have likely seen in other desktop applications:
One complaint I have about their Help documents is the way they handle parent nodes. When I’m viewing a document that is nested under another node I find myself clicking the breadcrumb link to go back to some higher level content and continue browsing.
Breadcrumbs at the top of a help document
The corresponding hierarchical structure in the Help Contents
Now when you’re using the “External Viewer” you have a split pane presentation so you find yourself using the contents tree on the left to navigate, but if you are in the internal viewer all you have are the bread crumbs. Clicking the top node in the bread crumbs takes you to an essentially blank page forcing you to go and use the back arrow to click back to where you want to go. Contrast that to Microsoft’s MSDN style where if nothing else, the top level node will present a document that lists links for the content underneath it. That keeps you from finding yourself orphaned with nowhere to click.
Poking around in Eclipse I found that Silicon Labs provides even more help content than they featured on the menus and documents I've read so far. There is a Cheat Sheets view that contains a handful of step-by-step instructions for performing common tasks. If I had uncovered the right help document in the viewer I’m sure I could have found the Cheat Sheets that way so I don’t think it’s a hidden feature. However, it’s definitely a nuance I may not have found while preparing this review. It’s curious that Silicon Labs has enabled cheat sheets for only a handful of the step by step procedures you find throughout their documentation. Maybe these were considered the most useful or perhaps an oversight.
Even the package manager provides a comprehensive set of configuration options. While I appreciate the opportunity to tune features like auto update, I sometimes prefer a sensible set of defaults in place so I don’t have to consider yet another page of options. Three or dialogs of Auto-Update configuration just seems a bit much.
Initially I performed a full install. Wanting to ensure the latest set of components and look for any new goodies, I selected the add/remove packages from the Simplicity Studio Home screen. This allowed me to manage the components that were installed by checking the products I was interested in. Even though I had selected a full install I was able to use the “Select Connected Devices…” to trim down to only the components that were relevant to me.
When I used this feature I was presented with the now familiar “Select Connected Device” tool (nice to see it was used consistently throughout the IDE) where I selected the Zero Gecko I had connected. I was confused at first because my selections didn’t change at all.I then unchecked all boxes and performed the procedure again. While it makes sense that the designers chose not to deselect items I may have already checked just in case they weren’t present, this can cause some users to mistakenly think they don’t have any superfuous components installed. Perhaps I could have been shown a message to the effect of “Hey you did a full install so you already have everything checked, do you want us to remove your previous selections at this time?”.
Once I started to update the installation, the details shown on the progress screen still leave me scratching my head. It implies that it will be installing features for kits I don’t have like the Giant Gecko and Leopard Gecko. In fact for all of the installing and updating it performed right off the bat, I was rather surprised to the report of 585MB to download. I felt like I was given the impression that everything was “easy automatic” and it was, but come to find out I was missing quite a few updates. After a few more rounds of updates I think a large part of the confusion comes from the labels that adorn certain parts of the UI like “These features will be installed” seems to be misleading.
Most importantly however, after the updates were applied, my projects were still in good working order. The IDE seem to forget that I had already dismissed some intro screens, but that’s nothing to fuss over. All of my tool windows were positioned like I had left them too - good.
When I went back to review the update configuration I pressed “Restore Defaults” and then the default update schedule changed to “Everytime Simplicity Studio is started”. Did I forget changing that option? I checked against my Linux install and found that it also showed the same “Monday at 1:00AM” schedule.
With Simplicity Studio configured to check on startup I decided to restart the application and see if any more updates were found. After restarting, I didn’t see the red badge indicating a number of component updates available. Still, I wanted to explore further. Going back to the “Select Parts” I was surprised to see the 8051 product line was showing installed because I had completely removed it since it wasn’t relevant. I guess something in the large update I performed had included a component relevant to the 8051 family. . I started to remove support for the 8051 family again. This time I paid close attention to the second screen that shows the major components of Simplicity Studio that are installed and I found an 8051 tool. I had overlooked that the first time, so it makes sense that I still had some 8051 components left over.
Restarting Simplicity Studio again and going back to the package manager I removed the few remaining vestiges of other Gecko products and after applying changes I was finally down to the bare minimum set of components. Even though the package manager strikes me as a bit mysterious, I don’t think that what I encountered, besides the strange issue with the default update schedule, would have serious implications for practical use.
Your experience with the controller matches mine.
you had a comment on 'signpost to get started'. I found that the Application Notes section on the start page was a good way to get started with a certain…
Thanks, Jan! I must have missed this notification, but I really appreciate the info!
Your experience with the controller matches mine.
you had a comment on 'signpost to get started'. I found that the Application Notes section on the start page was a good way to get started with a certain topic.
The section has entries for quite some peripherals, and they often have both a document and example project(s). When you double click the entry, the document is show; when you select 'example', an example project is loaded in SimplicityStudio.