Firmware Development

nRF Connect SDK Fundamentals

9.1/10 (2297)
7917already enrolled

Course description

nRF Connect SDK Fundamentals is a self-paced hands-on online course focusing on learning the essentials of firmware development using the highly extensible and feature-rich nRF Connect SDK. The nRF Connect Software Development Kit contains a highly configurable real-time operating system called the Zephyr RTOS and a wide range of samples, application protocols, protocol stacks, libraries, and hardware drivers.

By the end of this course, you will have a solid understanding of nRF Connect SDK, its structure and content. You will learn how to develop portable RTOS-based applications that can run on any of Nordic Semiconductor devices (nRF52, nRF53, nRF70, or nRF91 Series). In addition to that, you will gain substantial practical experience in interfacing with common peripherals/system blocks and external sensors, which will give you the confidence to apply the knowledge and the know-how to your project.

What you'll learn

Who should enroll in this course?

The course is designed for embedded software engineers, firmware developers, or anyone interested in microcontrollers and embedded systems.

Estimated time

An estimate of about eight to ten hours in total is needed to finish this course. The actual time needed to finish the course will highly depend on your technical background and experience.

Learning Objectives

  • Understand the structure and content of nRF Connect SDK
  • Learn how to download and install nRF Connect SDK
  • Examine West, which is a core command-line utility in nRF Connect SDK
  • Learn how to build samples and applications
  • Learn how to flash samples and applications to boards
  • Run your first application, Blinky, which toggles an LED on your Nordic-based board
  • Examine the devicetree API
  • Examine board-level devicetree .dts
  • Examine SoC-level devicetree .dtsi
  • Understand the purpose of devicetree binding files (.yaml) and the compatible property
  • Understand the device driver model
  • Analyze the decoupling between a device driver API and a device driver implementation and the need to have a device pointer
  • Examine the generic GPIO interface APIs <zephyr/drivers/gpio.h>
  • Practice through hands-on exercises configuring GPIO pins and learn how to write/read to/from GPIO pins and how to setup interrupts for input GPIO pins
  • Understand the use of Kconfig configuration files to enable and configure the different software modules available in nRF Connect SDK
  • Examine an application configuration file and a board configuration file and understand the relation between them
  • Learn how to explore the available configuration options of a certain software module using guiconfig
  • Understand multi-image builds, and how a child-image is added to your application
  •           Practice creating an application from scratch, adding modules using Kconfig, and modifying the devicetree through hands-on exercises

  • Learn how to print strings and formatted strings to a console using printk() and understand the limitations of printk()
  • Learn how to print strings and formatted strings to a console using the logger module
  • Learn how to hexdump variables using the logger module
  • Explore the logger module features through hands-on exercises
  • Learn how to add and use the following drivers in nRF Connect SDK:
    • UART
    • I2C
  • Through hands-on exercises, learn how to communicate with a serial emulator over UART
  • Connect to external sensors using the I2C bus
  • Learn the difference between bare-metal applications and RTOS-based applications
  • Get familiarized with Zephyr RTOS execution model, ISRs, threads, thread’s life-cycle, inter-task communication/synchronization mechanisms, and the scheduler
  • Learn the basics of kernel services related to thread scheduling and synchronization, such as:
    • Threads, system threads, workqueue threads
    • Semaphores, mutexes
  • Understand how system threads relate to CPU idling and power management
  • Understand the need for thread synchronization mechanisms
  • Practice through hands-on exercises creating different execution primitives such as threads and learn how to synchronize and pass data amongst them using semaphores and mutexes


Fundamental level
8 lessons
8–10 hours to complete
Certificate of completion


  • Basic knowledge of the C programming language
  • Some experience in developing software for embedded systems

Hardware Requirements

System Requirements

  • A computer running Windows, macOS, or Linux
  • An up-to-date web browser

Software requirements​

We will go through how to download and install these tools throughout the course:
Register an account
Already have an account? Log in
(All fields are required unless specified optional)

  • 8 or more characters
  • Upper and lower case letters
  • At least one number or special character

Forgot your password?
Enter the email associated with your account, and we will send you a link to reset your password.