Building and Programming an Application
west
is the swiss-army knife command-line tool for Zephyr. Zephyr provides several west
extension commands for building, flashing, and interacting with Zephyr programs running on a device.To build an application, navigate to the
conexio_stratus_firmware
directory that we installed previously and choose a sample application. Here we will choose the led_blink
sample./opt/nordic/ncs/v1.7.0/conexio_stratus_firmware/samples/led_blink
This sample tests two different functionalities of the Stratus device:
- 1.The user-programmable BLUE LED on the mainboard and the Orange LED on the shield.
- 2.That the serial communications are working correctly and the output gets printed on the terminal window.
To compile the application, open the terminal in the sample application directory as described here and issue the following
west
commandwest build -b conexio_stratus_ns
In case, you do not want to recall the
west
commands every time, the Conexio team has also included a python script (generate_firmware.py
) to generate the Stratus device firmware with all their samples. Simply command the following in the terminal and it will take care of the rest.python3 ./generate_firmware.py
Under the hood, the script simply invokes the
west
shell command using the system()
method in python. Make sure that you have Python 3 installed. If not, now is the time to upgrade!Stratus device comes preprogrammed with the MCUBoot bootloader allowing users to directly update the firmware via the USB interface. Each sample is already configured to enable the Zephyr application to be booted by the MCUBoot after resetting the board.
This is handled internally by the Zephyr configuration system and is wrapped in the
CONFIG_BOOTLOADER_MCUBOOT
Kconfig variable, which is enabled in the application’s prj.conf
file as CONFIG_BOOTLOADER_MCUBOOT=y
After the compilation has been completed, you will notice a
build
folder being generated, which will contain the following binary:build/zephyr/app_update.bin
When an application is built with the option
CONFIG_BOOTLOADER_MCUBOOT
set, app_update.bin
, a signed variant of the firmware in binary format (as opposed to intelhex) is automatically generated and can be used for firmware over-the-air (FOTA) upgrades.To program the Stratus via USB, you will need to put the device into DFU mode first. This mode triggers the onboard bootloader that accepts firmware binary files. To enter DFU mode:
- Hold down BOTH the buttons
- Release only the RESET button, while holding down the MODE button
- Wait for the blue LED to turn on (steady-state)
- Release the MODE button
The device now is in DFU mode. 🚨
Flash the compiled firmware using
newtmgr
:newtmgr -c serial image upload build/zephyr/app_update.bin
Give it a few seconds for the transfer to complete and then, hit the
RESET
button. You should now see the LEDs blinking every second. If you have a serial logger such as TeraTerm, Putty, or similar, select the correct COM port and set the baud rate = 115200, hit the RESET
button, and notice the following being printed on the console window:SPM: NS image at 0x20200
SPM: NS MSP at 0x20015528
SPM: NS reset vector at 0x21a31
SPM: prepare to jump to Non-Secure image.
*** Booting Zephyr OS build v2.6.99-ncs1 ***
Hello from conexio_stratus
Now you are all set! Stratus is alive and ready for development
👏