Firmware Development
nRF Connect SDK Fundamentals
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
- Develop a fundamental understanding of the nRF Connect SDK
- Learn how hardware is described using devicetree
- Learn how to configure software modules using Kconfig
- Practice through hands-on exercises using common hardware peripherals (GPIO, UART, I2C)
- Develop more knowledge about Zephyr RTOS 101 - Execution model, ISRs, threads, thread's life-cycle and inter-task communication/synchronization mechanisms
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
Details
Prerequisites
- Basic knowledge of the C programming language
- Some experience in developing software for embedded systems
Hardware Requirements
- Any of the following development hardware: nRF7002 DK, nRF5340 DK, nRF52840 DK, nRF52833 DK, nRF52 DK, nRF9160 DK, nRF9161 DK, nRF9151 DK, Thingy:53, or Thingy:91
- Special hardware requirements for Lesson 6
System Requirements
- A computer running Windows, macOS, or Linux
- An up-to-date web browser
Software requirements
Supported SDK versions
- nRF Connect SDK v1.6.0 – v2.6.1
- nRF Connect SDK v2.5.0 or higher is needed for nRF9161 DK or nRF7002 DK
- nRF Connect SDK v2.6.0 or higher is needed for nRF9151 DK