Skip to content

An intro to embedded systems for ML application developers

License

GPL-3.0, Unknown licenses found

Licenses found

GPL-3.0
LICENSE-code
Unknown
LICENSE-presentation
Notifications You must be signed in to change notification settings

PascalBod/embedded-systems-for-ML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction to Embedded Systems for Machine Learning

Modifications in progress

07-Dec-2025: bare metal and FreeRTOS examples up to and including practice session 13 have been migrated to Simplicity SDK Suite v2025.6.2.

Overview

This repository contains a presentation providing an introduction to embedded systems. The targeted audience is machine learning application developers, who want to better understand what an embedded system is, and how it can/must be used.

The presentation DOES NOT provide information about machine learning.

The following topics are covered:

  • Interfaces: GPIO, ADC, UART, SPI, I2C
  • Software development over bare metal
  • Software development with an RTOS

Practice sessions provide hands-on experience of the presented concepts.

The hardware target for the practice sessions is the Silicon Labs EFR32xG24 Dev Kit, based on the EFR32MG24 wireless System on Chip (SoC).

This presentation is used as a support for the 22-hour course taught at IMT Atlantique in January.

Prerequisites for the practice sessions

Software

Silicon Labs Simplicity Studio 5 (based on Eclipse CDT) is used for bare metal (i.e. no RTOS) practice sessions and for FreeRTOS-based practice sessions.

Simplicity Studio 5, abbreviated as SSv5 hereinafter, can be installed on Linux, Apple macOS (Arm or Intel) and Microsoft Windows.

The sections below explain how to create a Linux virtual machine (VM) so that the configuration specific to SSv5 can be isolated from your other projects. A drawback is that the host PC must be powerful enough and must have enough memory (a minimum of 8 GB must be assigned to the VM).

You can also decide on installing SSv5 directly on the OS of your PC. In this case, you can refer to the instructions provided by Silicon Labs. But be prepared to possibly have to spend some time tinkering with your setup on your own :-)

Important

Be sure to install version 5 of Simplicity Studio, not version 6.

Hardware

As mentionned above, the practice sessions use the following hardware:

Software development competencies

C language is used, for the practice sessions. This Standford Computer Science Education document provides a good presentation of the language.

What to do before going through the presentation

  1. Create a Linux Mint VM, configure it and install Simplicity Studio
  2. Get an EFR32xG24 Dev Kit (see the link provided in the Hardware section above.
  3. If you need it, spend some time browsing the documents listed above (Git, GitHub, Linux, C, etc.)
  4. Ensure that you can build and program the sample application, as presented in the lm-efr32-simplicityStudio repository (the one linked in list item 1 just above)

Licenses

The presentation is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

The source code is licensed under the GNU General Public License v3.

Sponsorship

Solutions to the practice sessions are available to IMT Atlantique students attending the course, and to sponsors. To become a sponsor, check the sponsorship page.

Presentation

  • Preamble
    • Document history
    • Licenses
    • Credits
    • How to navigate
  • Foreword
    • Who am I?
    • Needs of embedded ML applications
    • Technical domains
    • Presentation goal
  • Introduction
    • Hardware progress
    • Embedded applications
  • Microcontrollers and boards
    • Reminders: memory
    • Microcontroller
    • Board architecture
    • Important characteristics?
    • Some common microcontroller families
      • Arm cores
      • STM32
      • EFR32
      • ESP32
      • RISC-V
  • Software development - Introduction
    • Cross development
    • Debugging
  • Interfaces - Part 1
    • GPIO
    • Hardware API
  • Execution environments
    • Bare metal
    • RTOS
    • OS
    • Practice sessions:
      • Hello World! in bare metal
      • A debug session
  • Peripherals
    • Sensors
    • Actuators
  • Interfaces - Part 1 - continued
    • More about GPIO
    • Practice sessions:
      • Display button state changes
      • Make the red LED blink
  • Software development - Design pattern
    • Finite State Machine
  • Interfaces - Part 2
    • ADC
    • UART
    • SPI
    • I2C
    • Practice sessions:
      • ADC: convert an analog signal
      • UART: send characters to the PC
      • UART: echo received characters
      • SPI: get data from the inertial sensor
      • I2C: get data from the temperature sensor
  • Software development - Part 3
    • Floating-point arithmetic
    • Memory: code and data
    • Memory: static, automatic and dynamic storage
    • Stack and heap
    • How an application starts
    • Interrupts and background task
    • Sleep modes
    • Practice sessions:
      • GPIO and interrupt
      • Timer and interrupt
      • Application and interrupts
  • More about what an RTOS is
    • Problems and solution
    • Soft and hard real time
    • Benefits
    • Drawbacks
    • Components
  • Tasks
    • States
    • The scheduler
    • Practice session:
      • Creating and starting a task
  • Concurrency control
    • Shared resources
    • Critical section
    • Mutex
    • Priority inversion
    • Deadlock
    • Semaphore
    • Practice sessions:
      • Sharing data bug
      • Mutex
      • Semaphore
  • Communication
    • Queues
    • Benefits
    • Practice session:
      • Using a queue
      • Time-stamped button presses
      • A log server
  • Concurrency summary
  • Time
    • Timer
    • Time functions
    • Device time
  • Memory allocation
    • Dynamic memory allocation
    • Drawbacks
  • Middleware

About

An intro to embedded systems for ML application developers

Resources

License

GPL-3.0, Unknown licenses found

Licenses found

GPL-3.0
LICENSE-code
Unknown
LICENSE-presentation

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published