Bare-Metal (low level) Embedded Software "Kick-Starter" Program

CURRICULUM

(over 9 hours of training videos)

Module 1: Getting Started (1h 56min)

This module is all about getting to know the development kit and IDE.

Getting Set Up (8 min)

Installing required software.

Introduction to Hardware (5 min)

Connecting up the development kit and saving the pre-installed MBed operating system to our hard-drive before erasing the chip.

Documentation and other references (5 min)

Where to find relevant documentation online for our microprocessor and our development kit.

Micro Overview - GPIO (7 min)

An introduction to the microprocessor and its GPIO registers and configuration.

Hello World bare-metal style - Flash an LED (29 min)

Configuring registers using C Programming to flash an external LED.

PicoScope Introduction (8 min)

An introduction to using your PicoScope Oscilloscope - basic usage.

Flash LED comparison between bare-metal, HAL and FreeRTOS : Setting up (29 min)

Creating HAL and FreeRTOS projects as well as adding code to flash the LED.

Flash LED comparison between bare-metal, HAL and FreeRTOS : Analysis (13 min)

Comparing the ease of implementation as well as performance of the three projects created so far, bare-metal, HAL and FreeRTOS.

Obtaining all the definitions we need "Shortcut" (12 min)

So far all the address definitions for configuration registers have been hand-crafted / created long-hand. In this video we obtain full verified register map definitions for all the micro's configuration registers.

Module 2: Lets Get Professional (33 min)

This module is all about operating as a professional software developer while on the program. Creating repositories and going through code reviews.

Repositories Overview and GitHub Sign Up (13 min)

What are Repositories and how / what do we use them for, plus signing up for a GitHub Account.

Creating your bare-metal repo and its configuration (4 min)

Repo setup and configuration.

Using a Desktop Git Application (10 min)

A walk-around using GitHub Desktop.

Pull requests and code reviews (6 min)

How pull requests and code reviews are performed.

Module 3: Getting the most from our chip / board (36 min)

In this module we configure the PLL within our micro to "step up" the system clock for our micro from 16MHz to 72MHz.

Overview - internal / external clocks (9 min)

How the internal clocks within the micro work as well as the PLL.

Programming our chip to use external clock source (23 min)

Documentation walkthrough as well as code walkthrough to configure the internal System Clock.

Tidy up, add function headers and finalise (4 min)

Getting our code looking more professional.

Module 4: Systick (53 min)

In this module we get our SysTick interrupt running as our 'heartbeat' timer.

Creating our heartbeat (8 min)

Documentation walk-through, how we create the heartbeat interrupt using a timer.

SysTick Low Level Implementation (17 min)

Configuring the timer interrupt and handling it.

SysTick Implementation into project and it's usage (28 min)

How to use the SysTick interrupt and timer registers to accurately calculate time.

Module 5: PWM Generation (34 min)

In this module we configure a timer to produce a configurable PWM output signal.

What is PWM (7 min)

PWM Explained in layman's terms.

Configuring Timers to perform PWM (27 min)

Documentation walkthrough as well as code walkthrough to configure the internal System Clock.

Module 6: Digital to Analogue Conversion (DAC) (29 min)

In this module we start performing Digital to Analogue conversions using the DAC peripheral.

DAC (& ADC) Explained (7 min)

How Digital to Analogue and Analogue to Digital conversions are performed.

Implementation (19 min)

Implementation of first waveform output via main loop (Sawtooth)

Challenge (3 min)

Performance Challenge - Taking what's been done so far (sawtooth output on DAC) and creating a Triangular waveform, as well as also outputting this on the PWM channel.

Module 7: Generating Standard Waveforms (23 min)

In this module we develop the project further to enable outputting of standard waveforms on the DAC and PWM outputs; Sine, SawTooth, Triangular & Square waves.

Introduction (3 min)

Detailing what we'll be doing in this module.

PicoScope Tips (3 min)

More PicoScope training - how to monitor two traces (DAC and PWM) as well as adding trend lines.

Implementation and Challenge(17 min)

Creating standard waveforms in code.

Module 8: USART - Communicating with PC (1h)

In this module we start performing serial communications with our PC USB port via the USART peripheral.

Introduction to USART and Module Overview (9 min)

Covering "What is a USART" and what are we doing in this module.

USART Documentation walk-through (8 min)

A walk through the relevant sections of our micro reference document.

Implementation phase 1 - Echoing Bytes (11 min)

Simply echoing back any byte of data received.

Implementation phase 2 - Echoing Complete Messages (13 min)

Capturing the end of messages and handling them as a whole echoed response.

Implementation phase 3 - Using interrupts for communications (19 min)

Offloading the main loop work by using interrupts to pump bytes in/out of the USART port.

Module 9: DMA (Direct Memory Access) Controller (47 min)

In this module we delve in to using the DMA controller for the first time - to manage the automated transmission and reception of complete messages via the USART.

Overview - what is DMA and what does it do for us (7 min)

Layman's introduction to the power of DMA in an embedded system.

Documentation register walkthrough (18 min)

A deeper look at the configuration registers used to work with DMA

Code walkthrough - Switching the USART over to using DMA instead of IRQs (22 min)

Creating standard waveforms in code.

Module 10: Adding commands and Custom Waveform Handling (1h 17 min)

In this module we add serial command / response handlers and implement custom waveform generation.

Introduction and Overview (5 min)

Covering what are we doing in this module in layman's terms.

Moving Waveform Control into Waveform Generator (10 min)

Project restructuring to accommodate custom waveforms.

USART Driver Modifications (9 min)

Modifications required to the USART interface to accommodate command / response handlers..

Adding commands and custom waveform handling (53 min)

Command / response handler implementation including custom waveform data.

Module 11: Creating faster waveforms through automation (57 min)

In this module we use many of the skills we've learned to far to combine the DAC with a timer and DMA to fully automate the generation of waveforms to achieve higher output frequencies.

Introduction and Overview (4 min)

Layman's introduction to this module.

Documentation register walkthrough (5 min)

A deeper look at the configuration registers we need to work with to harmonise DMA, a Timer and the DAC together autonomously.

Register Configuration Walkthrough (25 min)

Step by step walkthrough of all register settings needed.

Finishing off, plus challenges (13 min)

Wrapping up lose ends.

Insights into debugging register configurations (10 min)

How to find out what's wrong when register configuration doesn't work as planned.

Once the above modules have been completed, you will have a fully programmable dual channel waveform generator at your disposal, and the best part... You'll have created it all yourself!

Perfect for interview demonstrations!

Start your FREE training below...

I agree to the terms and privacy policy and by providing my details, I agree to receive communications.

For answers to any questions about this program, please Contact Us.

"Your Engineering Success" is a program trading name for Your Enlightened Potential Ltd. Registered in England and Wales, Co.No: 14074871.

* Earnings and income representations made by Your Engineering Success, and and their advertisers/sponsors are aspirational statements only of your earnings potential. These results are not typical and results will vary. We can in NO way guarantee you will get similar results.

Copyright 2025 Your Engineering Success All Rights Reserved.

Contact Us: [email protected]