This module describes the software installation required for the EiE Firmware program. All software packages are either freeware or have free versions with some limitations that will not impact the program. All software is industry-grade and proven stable on Windows operating systems.
Most software will be current versions downloaded from the web, but the archive below has three programs that are essential versions and/or more difficult to access online and thus provided here:
IAR Integrated Development Environment (IDE)
To develop code for an embedded system, you need at least a file editor, a compiler, and a way to download (“flash”) the compiled code onto the microcontroller. There is a free gcc compiler for ARM processors and if you have used gcc before you likely have your favorite editor. There is a Visual Studio plugin that can integrate with ARM embedded processors, and there is also an Eclipse-based solution. At least one of these solutions could work regardless of whether you like Windows, iOS, or Linux.
For EiE, we use a commercial IDE called IAR Systems. IAR has been around for decades and evolved along side the ARM microcontroller ecosystem. The biggest benefit of IAR is that the editor, compiler, and full-service debugger are fully integrated into the package. The debugger is really the key. As EiE focuses on bare-metal, low-level understanding of a microcontroller, a debugger is absolutely essential.
Unfortunately, IAR is not free. Up until 2023, IAR offered a “Kickstart” version of their software which was code-sized limited to 32kB of flash. That may not sound like a lot, but it was plenty for the entire EiE base firmware along with all of the applications developed in the program. The Kickstart version of IAR for ARM is no longer offered, though there is a 14-day trial version of the software available at no cost. Thankfully, IAR has offered to work with the EiE program to provide licenses for students in the program. We don’t know how long that will be the case, but it covers the program for 2023-2024. Your EiE leader can provide instructions for obtaining a license.
This obviously doesn’t help anyone coming to EiE outside of the university program, or those who want to continue learning after the EIE program. We will be working on providing a complete, free solution (hopefully with a debugger) in the future. The trick will be to port the rather large code base over to a new platform and have it all work properly. We might try the Keil IDE as they still support a 32kB license, but since that may change in the future, too, a gcc-based solution seems the way to go. There is supposedly a debugger plug-in for Eclipse, but it’s unclear how well everything will work. Stay tuned!
Assuming you have a license solution for IAR, head over to www.iar.com and locate the “Embedded Workbench for ARM” product. The direct link at the time of writing is here:
The current version is 9.40.1 and most of the firmware modules will be based on that version. The look, feel, and performance of IAR hasn’t changed for many years, so even as the versions evolve everything should work. If something at the project level breaks, an update will be posted to Github that will have project files for the latest version, so always check there first if there is an issue.
Download and install IAR. Everything can be left as defaults. The only selection you might want to adjust is the USB Driver Installation which we recommend doing just the “J-Link” and “ST-LINK” options for now.
Once the program installs, it will start asking for a license. Following the instructions to activate the license key you have. You should be able to load and review code without a license, but you will not be able to compile or run it until a license is activated.
EiE J-Link Configuration
A huge benefit of the EiE development board is that it has a “J-Link Onboard” programmer / debugger. This is pre-programmed on the top-right processor. If you fiddle with this processor you run the risk of destroying the J-Link code and bricking your whole dev board.
Aside from saving you over $100 to buy an external J-Link, the J-Link Onboard also provides a virtual serial port connection to the main microcontroller. A serial link is one of those essential tools to an embedded system.
Once upon a time, J-Link Onboard was very picky about the J-Link software version that worked and would only run V6.10e. However, the version that should install with IAR is V7.58B and seems to work. All versions are available on the Segger website, but you need at least version 6 to support all the J-Link Onboard features.
Follow these instructions carefully to connect the virtual COM port!
Open up Windows Device Manager. You’ll need this application often, so creating a link on your desktop might be handy. The file is “\\Windows\System32\devmgmt.msc” or you can hunt for it in the search bar by typing “dev man”
Plug in the EiE development board to the far right USB Port J1 labelled “JLINK/CDC” and watch the Device Manager. The board should power on a few LEDs and Device Manager should beep and refresh.
If you also see “JLink CDC UART Port (COMx)” you do not need to do anything else in this step.
If the port is not present, run “JLink.exe” from the folder where you installed the J-Link software. If you are prompted to upgrade the firmware on the J-Link processor, click YES. You should be trying this with V7.58b even though the example below is showing V6.10e.
In the J-Link Commander, type “vcom enable” and the press enter. Be sure you see “The new configuration applies after power cycling the debug probe.”
Close J-Link Commander.
Unplug the USB cable from the Development board and count to 5.
Make sure Windows Device Manager is open.
Plug the USB cable back in. You should see two new devices. Wait patiently while the driver loads. On some computers this happens almost immediately, on others it takes a few minutes. If nothing happens after 5 minutes, unplug the USB cable, count to 10, then plug it back in.
If everything has worked, you should see “JLink CDC UART Port (COMxx) where “xx” is some number that you need to know for the next step. It may or may not change each time you plug in the dev board, so make sure you know how to open Device Manager to check the port.
Github and Board Test Firmware
All EiE firmware is stored on Github. If you are familiar with Git and Github, feel free to use your preferred method of accessing firmware repositories. If you are new to Git, do the following for now:
Find the “eiefirmware” user at Github (https://github.com/eiefirmware).
Click “Repositories” at the top and select “razor_sam3u2”
Select the “application_board_test” branch.
Click the “<> Code” button and select “Download ZIP.”
Save the file somewhere memorable and unzip it.
Open IAR and select File > Open Workspace…
Go to the ../firmware_ascii/iar_9_40_1 folder and select “eie_ascii-01.eww”
Select Project > Rebuild all and the code should build with 1 warning (about an unused function). Make sure the USB cable is still plugged in to the “JLINK CDC” port and press the “Download and Debug” button.
A bunch of stuff will happen but eventually the code should flash and the debugger will start in a halted state (i.e. the code is loaded but not running). Press the red “X” button to stop the debugger which will also start the code running.
The board test firmware will be running – you should see a scrolling “ENGENUICS RAZOR ASCII DEV BOARD” message on the screen. If you are being blinded by the LEDs, press the far left button to toggle them off.
There are tons of terminal programs available and you are welcome to use your favorite if you have one. The preferred terminal for EiE is Tera Term and the version used in all the examples is 4.87 which is included in the EiE Software archive. Make sure Tera Term is installed and your EiE dev board is connected to the JLINK/CDC USB port.
Choose File > New Connection and choose “Serial” along with the “JLink CDC UART Port (COMx)” option.
Now select Setup > Serial Port… to configure the following settings (use the COM port shown in Device Manager).
Press the reset button on the EiE development board and observe the startup sequence on the terminal output.
If everything above worked properly, you are now ready to proceed with the EiE firmware modules. Whenever you begin working with the EiE development board (or any board), make sure your tools are working properly with a known build of firmware like the Board Test application.