Firmware Development
nRF Connect SDK Intermediate
Course description
The nRF Connect SDK Intermediate course is a self-paced, hands-on online course that is aimed at empowering developers to master advanced topics and techniques for developing applications using the nRF Connect SDK. The course is designed to enable developers with some experience in the nRF Connect SDK to take their skills to the next level.
The course covers a wide range of topics, including thread management, data passing, debugging applications, adding support for custom boards, interacting with the SPI, ADC, and PWM peripherals, device driver development, and secure Device Firmware Update (DFU/FOTA) over different transports. The skills and knowledge gained from this course are applicable to any of Nordic Semiconductor’s devices, including the nRF91, nRF70, nRF53, and nRF52 Series.
With a focus on practical, hands-on learning, the nRF Connect SDK Intermediate course enables participants to dive deeper into the intricacies of the nRF Connect SDK and gain a more comprehensive understanding of its features. Through this course, developers will gain a deeper understanding of the underlying technology and techniques required to develop robust and reliable applications on Nordic Semiconductor devices.
What you'll learn
- Zephyr RTOS 201 (Beyond the basics) - Master thread management, data passing, Zephyr kernel options, and available options to schedule tasks with different real-time constraints.
- Debug and troubleshoot nRF Connect SDK applications using advanced tools and techniques.
- Learn how to add support for custom boards using the nRF Connect for VS Code extension.
- Master working with peripherals (SPI, ADC , PWM) in the nRF Connect SDK.
- Learn how to develop device drivers in the nRF Connect SDK/Zephyr RTOS.
- Implement secure Device Firmware Updates (DFU/FOTA) over different transports: Serial, USB, Bluetooth® Low Energy, Wi-Fi, Cellular; and master the memory address spaces for our different products.
Who should enroll in this course?
The course is designed for embedded software engineers, firmware developers, students, makers, or anyone with prior experience with the nRF Connect SDK/Zephyr RTOS and wishes to take their skills to the next level.
Estimated time
The estimated time needed to finish this course is about ten to twelve hours in total. However, the actual time needed to finish the course will highly depend on your technical background and experience.
Learning Objectives
-
Gain a full understanding of the different execution options and their determinism and preemption nature.
-
Fully comprehend the life cycle of a thread.
-
Gain a good grasp of the Zephyr Kernel options and how the scheduler works.
-
Understand the software and timing implications of adding subsystem and network stacks into your application.
-
Learn how to schedule application tasks using the right execution primitive with the right priority level.
-
Learn how to pass data between threads using message queues and FIFOs safely.
-
Practice through hands-on exercises how to create different types of threads and exchange data between them.
-
Delve into the common pitfalls with nRF Connect SDK applications, including stack overflows, concurrency-related issues, missing devicetree entries, and Kconfig issues.
-
Learn about build errors and fatal errors, as well as about common tools to debug these (core dump and addr2line).
-
Practice through hands-on exercises how to debug an application in Visual Studio Code using the debugger functionality.
-
Practice through hands-on exercises how to debug a fault error using core dump and addr2line.
-
Examine the hardware support hierarchy in the nRF Connect SDK, as well as explore the different options to create custom board files and the associated advantages and disadvantages.
-
Understand the role of each of the mandatory files required to describe your hardware in the nRF Connect SDK/Zephyr RTOS and all other optional and special use case files.
-
Learn how to convert hardware schematics to devicetree syntax using the nRF Connect for VS Code extension and how to write your own Kconfig files for your own custom hardware.
-
Practice through a hands-on exercise how to create a custom board for a single-core SoC.
-
Practice through a hands-on exercise how to create a custom board for a multi-core & TF-M capable SoC.
-
Understand the core principles of Pulse-width modulation (PWM), Serial Peripheral Interface(SPI), and Analog-to-digital converter (ADC).
-
Examine the PWM, SPI, and ADC peripherals inside Nordic Semiconductor SoC and SiP, and understand their capabilities and features.
-
Learn through hands-on exercises the Zephyr APIs to interact with PWM, SPI, and ADC.
-
Understand the advantages and disadvantages of using nrfx drivers directly instead of Zephyr APIs to interact with peripherals.
-
Learn how interrupts are handled in the nRF Connect SDK/Zephyr RTOS.
-
Explore the available options for adding a custom device driver.
-
Learn how to pick a standard API for your custom device driver.
-
Learn how to create custom API for your device driver.
-
Practice through hands-on exercises how to add a custom device driver.
-
Understand what a bootloader is and why we need it.
-
Learn the essential options in MCUboot, and the options to perform DFU/FOTA in MCUboot.
-
Practice through hands-on exercises how to enable and configure MCUboot.
-
Practice through hands-on exercises how to perform DFU over different transports (UART, USB, External Flash), both from the application and from the bootloader.
-
Practice through hands-on exercises how to perform Firmware Updates Over the Air (FOTA) over Bluetooth Low Energy, Wi-Fi, and Cellular.
Details
Prerequisites
- nRF Connect SDK Fundamentals course
- Adequate knowledge of the C programming language
Hardware Requirements
- Any of the following development hardware: nRF9151 DK, nRF9161 DK, nRF9160 DK , nRF7002 DK, nRF5340 DK, nRF52840 DK, nRF52833 DK, nRF52 DK
- Special requirement for Lesson 4.
- Special requirement for Lesson 5.
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:
Supported SDK versions
-
nRF Connect SDK v2.5.2 – v2.6.1
- nRF Connect SDK v2.6.0 or higher is needed for nRF9151 DK