Course Highlights
  • Be able write firmware using bare-metal embedded-c
  • Write Embedded programs using just pointers and and memory addresses
  • Write more professional and efficient Embedded programs.
  • Understand the Cortex-M Architecture
  • Understand Load - Store Architecture
  • Understand ARM Cortex-M Debugging
  • Write UART drivers using ASSEMBLY code
  • Thoroughly understand the CMSIS core
  • Write firmware using only bare-metal embedded-c
  • Write TIMER drivers using ASSEMBLY code
  • Write Interrupt drivers using bare-metal embedded-c
  • Write Analog-to-Digital Converter (ADC) drivers using bare-metal embedded-c
Skills you will learn!
Curriculum

2 Topics
Welcome
Set Up Info

10 Topics
The RISC Design Philosohpy
The ARM Design Philosophy
Embedded Systems with ARM Processors
ARM Bus Technology and AMBA Bus Protocol
Memory
Peripherals
Von Nuemann and Harvard architecture
Cache and Tightly Couple Memory
Memory Management extensions
Cooprocessor extensions

11 Topics
Data Types
Processor Modes
ARM7TDMI Vector Table
ARM7TDMI Registers
ARM Cortex-M Registers
ARM Cortex-M Vector Table
ARM Data Flow Model
The Pipeline
ARM Processor Family
ARM Cortex-A and Cortex-R
ARM Cortex-M

5 Topics
What is the ARM Cortex-M ?
What are 32-bits processors ?
The Cortex-M family of 32-bits processors
Microprocessor vs. Microcontroller
Introduction to ARM Cortex-M

4 Topics
Load - Store Architecture
The Register Bank (Again)
PSR - Program Status Register
The Cortex-M Architecture

12 Topics
Counting
First look at the Debug View
The Memory Views
Changes in the View
Counting version 2
How conditions behave
How conditions behave (continued)
The Cortex-M Memory Map
The Cortex-M Memory Map (continued)
Big Endian vs. Little Endian
Global Variables and RAM Storage
The ARM Cortex-M Internals and Debugging

26 Topics
The Instruction Set Architecture
Upward Compatibility
Assembly Language Syntax
Assembly Directives
Overview of the TM4C123 Tiva C LaunchPad
Project1 Overview
Project 1 Opcodes
Project 1 Source code inspection
Coding : Setting up project 1
Coding : Project 1 Part 1
Coding : Project 1 Part 2
Coding : Project 1 Part 3
Logical Operations
Coding : Project 1 Part 4
Coding : Project 1 Final
Project 2 Opcodes
Coding : Project 2 Part 1
Coding : Project 2 Part 2
Coding : Project 3 Part 1
Coding : Project 3 Part 2
Coding : Project 3 Part 3
Coding : Project 3 Final Part
Exporting an Assembly function to C
Importing a C function to Assembly
Creating variables in Assembly
Complete List of Cortex-M Assembly Instructions

6 Topics
Sourcecode Download.
Pointers
Pointers : Dropping BEEF into Memory
Blinky with Pointers and Raw Addresses
Blinky with Pointers and Raw Address (Pat II)
Blinky with Pointers and Raw Address (Part III)

13 Topics
Using Preprocessors
Using Preprocessors from the Datasheet
Adding Silicon Vendors' Header Files
The importance of the Volatile Keyword
The importance of the Volatile Keyword (continued)
Introduction to Bitwise Operations
Applying Bitwise Operations
Applying Bitwise Operations (continued)
Writing Functions
Function Arguments
Importing Functions from another file
Using IFNDEF to prevent multiple declaration
Declaring fixed width variables

4 Topics
Introduction to Structures
Simplifying Structures with typedef
Accessing Structure members using the dot operator
Accessing Structure members using the dot operator (continued)

10 Topics
Introduction to CMSIS
Examining the CMSIS documentation
Writing our first CMSIS program
Understanding how CMSIS works
Understanding how CMSIS works (continued)
Understanding how CMSIS works (final)
Making our old Blinky program CMSIS compliant
Writing a CMSIS complaint program from scratch (Part I)
Writing a CMSIS complaint program from scratch (Part II)
Writing a CMSIS complaint program from scratch (Part III)

4 Topics
Overview of ARM Cortex-M General Purpose Input/Output Module
Coding : GPIO Driver
Coding : GPIO Input Driver
Coding : Unlocking GPIO Pins

17 Topics
Introduction to LCD Programming
LCD Pinout and MCU interfacing
Controlling the LCD
LCD basic program flowchart
LCD Initialization function
LCD Command and Data functions
Pseudo delay functions
Coding : LCD Program (Part I)
Coding : LCD Program (Part II)
Coding : LCD Program (Part III)
Coding : LCD Program (Part IV)
Coding : LCD 4-bits programming (Part I)
LCD 4-bits Write function
Coding : LCD 4-bits programming (Part I)
Coding : LCD 4-bits programming (Part II)
Coding : LCD 4-bits programming (Part III)
Coding : LCD 4-bits programming (Part IV)

4 Topics
Interfacing with Keybords
Coding : Keyboard programming (Part I)
Coding : Keyboard programming (Part II)
Coding : Keyboard programming (Part III)

3 Topics
Coding : SysTick TIMER program 1
The SysTick TIMER
Coding : SysTick TIMER program 1 (Part II )

16 Topics
General Purpose TIMERS
Timer Size in Seconds
GPTM Registers
Coding : Programming TIMERS in 16-bits one-shot mode PART I
Coding : Programming TIMERS in 16-bits one-shot mode PART II
Coding : Programming TIMERS in 16-bits periodic mode PART I
Coding : Programming TIMERS in 16-bits periodic mode PART II
Coding : Counting Rising-Edges using TIMERS PART I
Coding : Counting Rising-Edges using TIMERS PART II
Coding : Counting Rising-Edges using TIMERS PART III
Measuring time between events using TIMERS PART I
Measuring time between events using TIMERS PART II
Measuring time between events using TIMERS PART III
Measuring time between events using TIMERS PART IV
Measuring time between events using TIMERS PART V
Coding : Programming 32/64-bits Wide Timers

6 Topics
Introduction to Interrupts
Coding : Sytick Interrupt
Coding : GPIO Interrupt
Coding : Multiple GPIO Interrupts
Coding : Timer Interrupt programming PART I
Coding : Timer Interrupt Programming PART II

3 Topics
Introduction to Analog to Digital Conversion
Coding : ADC Driver
Coding : ADC Temp sensor

6 Topics
Introduction to Serial Peripheral Interface (SPI)
Key SPI Registers
Coding : Developing a simple SPI Driver
Coding : Developing an LCD SPI Interface Driver (PartI)
Coding : Developing an LCD SPI Interface Driver (PartII)
Coding : Developing an LCD SPI Interface Driver (PartIII)

6 Topics
Overview of ARM Cortex-M General Purpose Input/Output Module
Coding : Assigning Symbolic Names to Relevant GPIO Output Registers
Coding : Writing the GPIO Output Driver
Coding : Toggling GPIO Outputs
Coding : Assigning Symbolic Names to Relevant GPIO Input Registers
Coding : Writing the GPIO Input Driver

4 Topics
Overview of the System Tick Timer
Coding : Assigning Symbolic Names to Relevant SysTick Registers
Coding : Writing the SysTick Timer Driver
Coding : Creating Delay Subroutines with SysTick Timer

4 Topics
Overview of the UART Protocol
Coding : Assigning Symbolic Names to Relevant UART Registers
Coding : Writing the UART Driver
Coding : Testing the UART Driver

4 Topics
Downloading and Installing Keil uVision5
Notice
Downloading and Installing USB Drivers for Tiva C Microcontroller
Keil uVision 5 overview

1 Topic
Closing

  Write a Review

Complete ARM Cortex-M Bare-Metal Programming (TM4C123)

Go to Paid Course