66 Items from the Year 2023
![](/previews/612/1530/pages/page-0001-small.png)
A Beginner’s Guide to Designing Embedded System Applications on Arm Cortex-M Microcontrollers
This textbook is the perfect introduction for the beginner looking to enter the exciting world of embedded devices and IoT.
Over the course of twelve chapters, readers will gain the practical skills needed to build a fully functional smart home device featuring a fire alarm, motion detector and security sensor.
No prior knowledge of programming or electronics is assumed as the authors have adopted a “learn-by-doing” approach. Basic ideas are explained and then demonstrated by means of examples that progressively introduce the fundamental concepts, techniques, and tools of embedded system design.
All exercises are based on the ST Nucleo-F429ZI board, so readers can gain experience in implementing these key concepts on an industry-relevant Arm-based microcontroller.
For educators looking to adopt this textbook, the authors have conveniently organized the book to align with a typical twelve-week semester, the idea being that one chapter can be addressed each week. This textbook also takes a blended learning approach with a set of pre-lesson activities for the students which are designed to develop the reader’s curiosity and enthusiasm for embedded system design.
Interests: Embedded Systems , Internet of Things (IoT) , Cortex-M
DSP Education Kit Random Signals Materials
Additional lecture slides, laboratory exercise instructions and files covering random signals. These complement the DSP Education Kit. The C file provided will run on the Cypress FM4 Pioneer board. It may be ported to run on the STM32F746 Discovery board in due course.
Interests: Analogue Digital Converter (ADC) , Discrete time signal , Digital Signal Processing (DSP)
Efficient Embedded Education Kit
Design and program Arm-based embedded systems and implement them in low-level hardware using standard C and assembly language.
Interests: Embedded Systems , Cortex-M , STM32
Embedded System using STM32L4
his module immerses students in the realm of embedded systems, emphasizing ARM-based microcontroller programming. Participants will master bare-metal programming techniques, gaining a profound understanding of ARM processors and architectures crucial for modern embedded computing. The curriculum employs an integrated approach, guiding students to prototype real-world applications through logbook activities. Additionally, students will assemble and scrutinize complex system prototypes, delving into associated security risks. By the module's end, participants will possess a comprehensive skill set, navigating from low-level programming to real-world application development, underscored by a keen awareness of security implications in embedded systems.
Interests: Microprocessor/Microcontroller , ARM Cortex M4
![[thumbnail of Embedded Systems & IoT Concepts understood as simple as ABCD! with Simple Examples (1) [9PoUSxeUMbU].mkv]](https://compedulabs.org/style/images/fileicons/video.png)
Embedded Systems & IoT Concepts understood as simple as ABCD! with Simple Examples
We can understand the Embedded Systems and IoT by relating with ABCD! in this Video Presentation!
![](/previews/615/1536/pages/page-0001-small.png)
Emerging Computing Technologies with emphasis on Quantum computing
Emerging Computing Technologies with emphasis on Quantum computing
![](/previews/38/39/pages/page-0001-small.png)
![](/previews/556/1455/pages/page-0001-small.png)
Module 01: Lab 0 Getting Started (Adv SoC)
Setting up all the tools needed for completing the labs in this education kit.
Module 04: Lab 01: Programming a Processor
At the end of this lab, you will be able to:
- Modify a C program with assembly subroutines to perform string copy and capitalization operations.
- Compile a C program and execute the program on a Fixed Virtual Platform in the Arm Development Studio tool.
- Demonstrate how to step through the code and examine register and variable values in debug mode.
- Identify known issues related to connection issues in the debug configuration and apply troubleshooting solutions.
![[thumbnail of Lab02_AXILiteAndGPIO.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 07: Lab 02 AXI Lite and GPIO
In this lab, we will design and implement AXI-Lite peripheral to control General Purpose Input and Output Ports (GPIOs).
Module 09: Lab 03 HDMI
In this module, we will design and implement an AXI4-Stream HDMI peripheral to display a simple colored image onto an HDMI monitor.
![[thumbnail of Lab04_AndroidAppHR.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 10: Lab 04 Android App Heartrate
Design and build an app to connect to a heart rate sensor, using Bluetooth Low Energy (BLE), and display the information on-screen.
Module 10: Lab 05 Fast Fourier Transform
The examples in this exercise introduce some of the concepts behind the Fast Fourier Transform (FFT). You will write a C function to implement the Discrete Fourier transform (DFT) and assess its computational efficiency. Next, you will modify that function to use pre-computed “twiddle factors” and measure the time taken to execute the modified function. You will compare this with the time taken to execute fast Fourier transforms written in C and implemented using the CMSIS DSP library. Finally, you will embed these functions in a real-time program that acts as a simple spectrum analyzer.
Interests: Fast Fourier Transform (FFT)
![[thumbnail of Lab07_ArmCMSISandSoftwareDrivers.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 10: Lab 07 Arm CMSIS and Software Drivers
In this lab, we will introduce Cortex Microcontroller Software Interface Standard (CMSIS), which is an abstraction layer for the microcontroller, and defines generic tool interfaces. It simplifies software reuse.
![[thumbnail of Lab05_IoTSensors.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 11: Lab 05 IoT Sensors
Covers security aspects relevant to IoT, including different types of attacks and technical solutions designed to mitigate these.
![[thumbnail of Lab06_IoTSensorAndApp.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 11: Lab 06 IoT Sensor and App
Program the DISCO-L475VG-IOT01A board to operate as a weather station. This builds on previous labs where we learned how to send BLE advertisements, read from different sensors (including temperature), and connect to an embedded device via an app that we developed.
Module 11: Lab 07 Final Project
Lab exercise that brings together all of the previous labs into one project, a music player.
![[thumbnail of Lab08_APIandFinalApp.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 11: Lab 08 API and Final App
In this lab, we will develop an API that has more generic and easy-to-use functions. Then, based on the API, we will develop a final game application: Snake.
![[thumbnail of Lab07_WiFiLab.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 12: Lab 07 WiFi
Learn how to program the DISCO-L475VG-IOT01A board that has an on-board WiFi module to send and receive sensor data from the device management platform.
![[thumbnail of Lab09_PMOD.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 12: Lab 09 PMOD
In this lab, we will use the Expansion headers of the Basys 3 development board to expand our SoC with additional joystick peripherals and develop the final application further with a new API.
Module 13: Lab 06 Adaptive Filters
The examples in these exercise concern different applications of an adaptive FIR filter using the Least Mean Squares (LMS) algorithm.
![[thumbnail of Lab08_ActivityRecognition.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 13: Lab 08 Activity Recognition
Design a full-stack Internet of Things (IoT) system for real-time classification of user activities. You will use an IoT board with accelerometer and gyroscope sensors, a cloud platform where you can instantiate a virtual machine (e.g., Google Cloud Platform), and an Android mobile phone.
![](/previews/539/1419/pages/page-0001-small.png)
Module 1: Lab 0 Getting Started
Getting started manual for the digital signal processing education kit.
![[thumbnail of Lab01_AnalogIO.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 1: Lab 01 Analog IO
Lab exercise with code and documentation for analog IO. From the digital signal processing education kit.
Module 3: Lab 02 Sampling Aliasing and Reconstruction
Lab exercise involving sampling aliasing and reconstruction. Related to the digital signal processing education kit.
![[thumbnail of Lab01_CortexM0AHBLiteImplementation.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 4: Lab 01 Cortex-M0 AHB Lite Implementation
In this lab, we will begin designing a simple SoC platform that contains a Cortex-M0 microprocessor, an LED peripheral, and an on-chip memory.
![[thumbnail of Lab01_ProgrammingAProcessor.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 4: Lab 1 Programming a Processor
In this module, we will program an Arm processor on a Fixed Virtual Platform using a mixture of Assembly language and C code.
![[thumbnail of Lab02_AHBVGAPeripheral.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 5: Lab 02 AHB VGA Peripheral
In this lab, we will implement an AHB VGA peripheral and write simple program for the processor to display images onto a VGA monitor.
Module 5: Lab 2: Introduction to Kernel Modules under Yocto
Code for a simple device driver "hello world" program and BitBake recipe.
Module 5: Lab01 Digital Input and Output
Lab exercise covering how to utilize digital input and output within an embedded system.
![](/previews/533/1381/pages/page-0001-small.png)
Module 6: Lab 02 Interrupts
Lab exercise to understand how to utilize interrupts within the context of embedded systems.
![[thumbnail of Lab03_AHBUARTPeripheral.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 6: Lab 03 AHB UART Peripheral
In this lab, we will implement an AHB UART peripheral and write simple program for the processor to communicate with a PC or laptop.
![[thumbnail of Lab03_FIRFilters.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 6: Lab 03 FIR Filters
The examples in this exercise introduce some of the concepts of Finite Impulse Response (FIR) filtering. Also explored are various methods of estimating the magnitude frequency response of a filter implemented in real-time and the relative computational efficiency of different implementation options.
![](/previews/557/1457/pages/page-0001-small.png)
Module 7: Lab 0 Getting Started (IoT)
How to create a new Mbed project, import code example, compile, and execute applications for embedded devices.
Module 7: Lab 03 Analog Input and Output
Lab exercise to understand analog input and output features in embedded systems.
![[thumbnail of Lab04_TimerGPIOand7SegmentPeripherals.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 7: Lab 04 Timer GPIO and 7-Segment Peripheral
In this lab, we implement three AHB peripherals: an internal timer, a general-purpose input output (GPIO), and a 7-segment display.
Module 7: Lab 4: Lab Code
Code for creating a Linux kernel device driver for a ranging sensor module.
![[thumbnail of Lab01_IOAndGPIO.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 8: Lab 01 IO and GPIO
Learn how to configure and use the General Purpose Input/Output (GPIO) capability of a development board, at the register level without the use of an Application Programming Interface (API).
![[thumbnail of Lab04_IIRFilters.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 8: Lab 04 IIR Filters
The examples in this exercise introduce some of the concepts of Infinite Impulse Response (IIR) filtering. Also explored are various methods of estimating the magnitude frequency response of a filter implemented in real time and the relative computational efficiency of different implementation options.
Module 8: Lab 04 Pulse-width Modulation
Lab exercise to understand pulse-width modulation and how it can be utilized in embedded systems.
![[thumbnail of Lab05_InterruptMechanisms.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 8: Lab 05 Interrupt Mechanisms
In this lab, we will implement an interrupt mechanism for the timer and the UART peripherals.
Module 8: Lab 5: Lab Code
Code for running an application and using GDB debugger and Streamline to analyze performance.
![[thumbnail of Lab02_BasicMobileApp.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 9: Lab 02 Basic Mobile App
Create and build a simple Hello World application for your Android device.
![[thumbnail of Lab03_BLEProgram.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
Module 9: Lab 03 BLE Program
Learn how to program the DISCO-L475VG-IOT01A board, which has an on-board Bluetooth V4.1 module (SPBTLE-RF), and subsequently use a mobile device to connect to it via Bluetooth Low Energy (BLE).
Module 9: Lab 05 Serial Communication
Lab exercise to understand serial communication such as I2C, UART and SPI.
![[thumbnail of Lab06_ProgrammingAnSoCUsingC.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
![](/previews/610/1529/pages/page-0001-small.png)
Predictive Analytics: Introduction to Data Mining
Discusses in brief about Predictive Analytics and explains about Data Mining
![[thumbnail of Lab04_EvaluatingSchedulerResponsiveness.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
RTOS - Module 10: Lab 04 Evaluating Scheduler Responsiveness
In this lab you will evaluate how changing the scheduling approach (prioritisation and pre-emption) affects how quickly a multithreaded program responds to an input event.
![[thumbnail of Lab05_ProducerAndConsumer.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
RTOS - Module 11: Lab 05 Producer and Consumer
In this exercise, you will focus on the producer-consumer problem. You may want to use some primitives of the RTX in order to solve the problem. There may be many possible solutions and you are expected to evaluate their advantages and disadvantages.
![[thumbnail of Lab06_OSDebugging.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
RTOS - Module 12: Lab 06 OS Debugging
Tuning a program to a good, if not optimal, state is a time-consuming task. In this lab, you are expected to improve the performance of the provided project. You will first be introduced to how to evaluate the performance of the provided project with various debugging tools and techniques. By doing so, you will notice performance or, in some cases, even functional bugs.
![](/previews/546/1442/pages/page-0001-small.png)
RTOS - Module 1: Lab 0 Getting Started
Getting started with Keil MDK. KEIL µVision5 is a widely-used IDE particularly in the embedded software region. It has full support for the STM32F4 Discovery Board and is really easy-to-use.
![[thumbnail of Lab01_OCAssembly.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
RTOS - Module 3: Lab 1 Processing Text in Assembly Language
In this exercise you will execute assembly code on your board using the debugger in order to examine its execution at the processor level. This lab aims to get you familiar with the development environment and understand how the hardware “plumbing” is hard.
![[thumbnail of Lab02_RTXBasics.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
RTOS - Module 3: Lab 2 RTX Basics
In this lab you will configure the RTX and create and destroy some tasks using the RTX RTOS. You are expected to walk through how the OS performs task creation, termination and switching operations.
![[thumbnail of Lab03_ImplementingMutex.zip]](https://compedulabs.org/style/images/fileicons/archive.png)
RTOS - Module 5: Lab 03 Implementing Mutex
In this exercise, a simulated environment based on the RTX RTOS is created. From here you will explore some of the concepts and algorithms introduced during the lectures.