Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / IoT

Developing for Azure Sphere, Part 1: Getting Started

5.00/5 (4 votes)
31 Oct 2021CPOL9 min read 6.6K  
This article explains how to configure hardware and software to support development of Azure Sphere applications.
Azure Sphere is Microsoft's Linux-based operating system that runs on embedded devices. This article explains how to install the Azure Sphere SDK, connect a certified device, and prepare a development environment for writing and deploying Azure Sphere applications. Later articles will explain how to code and deploy high-level applications.

Introduction

The phrase Internet of Things, or IoT, refers to technology that connects embedded systems, such as sensors and medical devices, to the Internet. Some embrace IoT and see it as a way to make embedded systems easier to access. Others find IoT troubling, and fear that it may lead to pervasive surveillance. Still others find IoT to be an annoying buzzword, referring to vaporware that will always be five years away.

But Microsoft's IoT technology isn't vaporware. Microsoft's cloud offering, Azure, provides resources called IoT hubs that transfer data to and from embedded systems. These hubs also make it possible to transmit device data to other Azure resources.

IoT security is a major concern. Devices are frequently deployed to remote locations, so it's possible that intruders may tamper with them or replace them with untrustworthy duplicates. To prevent this. Microsoft developed Azure Sphere, an operating system that runs on embedded systems and makes it possible to securely communicate with Azure IoT hubs.

The good news is that Azure Sphere's development tools can be freely downloaded. The bad news is that setting up a development environment is complicated. The goal of this article is to present the tasks that need to be performed before you can start coding and deploying Azure Sphere applications. Application development will be discussed in later articles.

1. Hardware Requirements

You can't install Azure Sphere the way you can install Windows or Linux. Azure Sphere can only be installed on devices that have been certified by Microsoft. For a device to be certified, it can't allow developers to uninstall Azure Sphere or tamper with it. Once Azure Sphere is installed, it can't be removed.

As I write this in October 2021, the only certified device is MediaTek's MT3620. The MT3620 contains a Cortex-A7 processor for general-purpose computing and two ARM Cortex-M4 microcontroller cores that access the device's peripherals. These peripherals include 8 analog-to-digital controllers, 12 pulse-width modulation (PWM) outputs, and 72 general-purpose input/output (GPIO) pins.

To write code for the MT3620, you need a suitable development board. From what I've seen, the most popular development boards are the MT3620 Development Kit from Seeed Studio and the MT3620 Starter Kit from Avnet. I'm testing my applications on the Avnet board, and the following figure shows what it looks like.

Image 1

Figure 1: The MT3620 Starter Kit from Avnet

To build applications for this board, you'll need to install the Azure Sphere software development kit (SDK) and a handful of other tools. The following section makes this clear.

2. Software Requirements

Building applications for Azure Sphere is a complex process that requires several steps involving multiple software packages. This section explains how to install the Azure Sphere Software Development Kit (SDK), CMake, Ninja, and the Azure Sphere extension for Visual Studio Code.

2.1 The Azure Sphere SDK

The most important development tool is the Azure Sphere software development kit (SDK), which can be downloaded here. When you run the executable, the first page asks you to agree to the licensing terms. The second page has an Install button that launches the installation process. When you click this, the installer installs several components, including the Azure Sphere command line interface (CLI).

You can verify that installation completed successfully by opening a command prompt and entering azsphere. If this produces a list of commands, installation was successful.

After a successful installation, a folder named Microsoft Azure Sphere SDK will be created in your C:\Program Files (x86) directory. This folder contains two important subfolders: Tools and Sysroots. The Tools subfolder provides important utilities like azsphere.exe, which we'll use extensively.

The Sysroots folder contains utilities needed for building applications. For example, if you look in Sysroots\11\tools\gcc, you'll find tools that start with arm-poky-linux-musleabi. These are needed to compile and link applications for the Cortex-A7 processor on the MT3620. The following article explains how to use these tools to build and deploy applications.

2.2 CMake

CMake is a popular tool for automating software builds. The Azure Sphere SDK relies on CMake to manage the compilation of Azure Sphere applications. To download and install CMake, you'll need to perform six steps:

  1. Open a browser and visit the CMake home page.
  2. Click the link entitled Download Latest Release.
  3. Scroll down and click the link for the Windows x64 Installer.
  4. Launch the installer (*.msi) and accept the license.
  5. Be sure to add CMake to the PATH environment variable.
  6. Click the Install button to install CMake.

Once the installation is finished, open a command prompt and enter the cmake command. If this describes the usage of CMake, the installation was successful. If this doesn't work, add the bin folder containing the CMake executable to your PATH environment variable.

2.3 Ninja

Ninja accelerates the build process by analyzing system dependencies and making decisions as early as possible. The Azure Sphere build process requires Ninja, and you can download the zipped executable from its Github page.

Right-click the link for ninja-win.zip and save it to your system. Decompress the archive and place ninja.exe in a folder whose location you'll remember. Then update your PATH environment variable so that it includes the folder containing ninja.exe.

2.4 Extension for Visual Studio Code

Microsoft doesn't provide a dedicated application for editing and deploying Azure Sphere applications. But you can add extensions to Visual Studio or Visual Studio Code that simplify Azure Sphere development. Alternatively, you can manage the entire build process using the command line interface.

Visual Studio Code is free and popular, so these articles focus on using Visual Studio Code for editing and deploying Azure Sphere projects. If you don't have this installed, you can download the installer from its home page.

Once you've install Visual Studio Code, you'll need to visit the Extension Marketplace, which provides access to Visual Studio Code extensions. Enter Azure Sphere in the search box, press Enter, and click the entry entitled Azure Sphere. Then click the green box labeled Install. This will open Visual Studio Code on your system and install the extension.

3. Development Board Configuration

At this point, you should have all the necessary software tools installed and a suitable development board connected to your system. Before you can deploy applications, you need to configure the board's operation. This requires entering several commands at a command prompt (or a Visual Studio Code terminal), so this section starts by discussing the commands supported by Azure Sphere.

3.1 Commands

To configure the development board, you'll need to use the command line interface (CLI). Each command starts with azsphere and is followed by a command name and parameters. For example, if you want to add a user, the command name is register-user. If the user's email address is billg@microsoft.com, the full command is given as follows:

azsphere register-user --new-user billg@microsoft.com

There are sixteen different commands available. Table 1 lists them and provides a description of each.

Command Name Description
ca-certificate Manages certificate authority (CA) certificates for the current tenant
device Manages devices, apps, images, and network connections
device-group Creates and manages device groups
feedback Send feedback to the Azure Sphere development team
get-support-data Accesses log files
hardware-definition Creates header files from hardware definitions
image Manages Azure Sphere images on disk
image-package Creates and displays image packages
login Logs into the Azure Sphere Security Service
logout Logs out from the Azure Sphere Security Service
product Manages products
register-user Registers a user with the Azure Sphere Security Service
role Manages roles in tenants
show-user Displays the email address of the current user
show-version Displays the SDK version
tenant Manages tenants
Table 1: Azure Sphere Commands

In these articles, we won't use all of the commands or even most of them. But it's important to know how they can be executed and the types of operations they accomplish.

3.2 Board Configuration

When you plug in a development board for the first time, you'll need to perform two important tasks. You'll need to claim the board and then set up networking.

Claiming the Board

Every certified device must be linked to a user account before it can be programmed. More precisely, a certified device must be linked to a tenant associated with a user account. This process is called claiming the board.

Once the device has been linked to an account's tenant, it can't be programmed by another account. This means buying a used MT3620 development board is probably a bad idea.

Claiming a board requires three steps:

  1. Log in with your account (or register if necessary).
  2. Create a tenant for the account.
  3. Link the device to the tenant.

The first step is the easiest. If you already have an Azure Sphere account, you can log in by entering azsphere login. Otherwise, you'll have to register by entering azure register-user followed by --new-user and the account address. In both cases, a browser will open and ask for authentication.

According to Microsoft's documentation, a tenant is an "aggregation point for metadata, functional organization, and information about images, deployments, users, and roles." An account can have multiple tenants, but for this discussion, you only need one. You can create a new tenant with azsphere tenant create, which accepts a --name flag. As an example, the following command creates a tenant named mytenant:

azsphere tenant create --name mytenant

After a tenant has been associated with the current account, you can claim the board with the following command:

azsphere device claim

By default, users and tenants are assigned Administrator roles, which means they have complete access to the device. Different roles can be configured with the azsphere role command.

If an account has multiple tenants, one of them must be selected before the board can be claimed. This is accomplished with azsphere tenant select.

Network Configuration

After a board has been claimed, you can deploy applications to it and configure its operation. One important configuration task is to set up network access through WiFi.

A board's network access can be set up with azsphere device wifi add, which requires two pieces of information: the network's name and password (key). For example, suppose you want the board to access a network named LAN of the Free whose key is 12345. You can configure this with the following command:

azsphere device wifi add --ssid "LAN of the Free" --psk "12345"

It takes a minute or two to establish the board's connection. After that, you can check WiFi connectivity with the command azsphere device wifi show-status.

Once you've installed the required tools and configured your board, you're ready to start coding and deploying applications. In the next article, I'll explain the basics of Azure Sphere development.

History

  • 31st October, 2021: Submitted for publication

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)