ARM Cortex-M Bare-Metal Embedded-C Programming

ARM Cortex-M Bare-Metal Embedded-C Programming

English | MP4 | AVC 1920×1080 | AAC 48KHz 2ch | 12.5 Hours | 1.51 GB

Cortex-M Internals: Master Pointers, Structures, Memory Navigation, Debugging, CMSIS etc

This course assumes no prior knowledge of neither cortex-m nor embedded-c programming. All it requires from students is curiosity.The course takes a practical approach to cover key areas such as pointers ,structures, memory navigation and the Cortex-M Software Interface Standard. The main aim of this course is to provide learners with practical skills and a strong foundation that they can build upon to start producing well written code which runs efficiently and leverages the key aspects of the ARM Cortex-M ecosystem.

What you’ll learn

  • 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
  • Be able o write assembly code
  • Thoroughly understand the CMSIS core
  • Be able to write device drivers
Table of Contents

Chapter 1
1 Welcome

Introduction to ARM Cortex-M
2 What is the ARM Cortex-M
3 What are 32-bits processors
4 The Cortex-M family of 32-bits processors
5 Microprocessor vs. Microcontroller
6 Introduction to ARM Cortex-M

The Cortex-M Architecture
7 Load – Store Architecture
8 The Register Bank
9 PSR – Program Status Register
10 The Cortex-M Architecture

The ARM Cortex-M Internals and Debugging
11 Counting
12 Big Endian vs. Little Endian
13 Global Variables and RAM Storage
14 The ARM Cortex-M Internals and Debugging
15 First look at the Debug View
16 The Memory Views
17 Changes in the View
18 Counting version 2
19 How conditions behave
20 How conditions behave (continued)
21 The Cortex-M Memory Map
22 The Cortex-M Memory Map (continued)

Introduction to Cortex-M Assembly
23 The Instruction Set Architecture
24 Upward Compatibility
25 Assembly Language Syntax
26 Assembly Directives
27 Overview of the TM4C123 Tiva C LaunchPad
28 Overview of the STM32F4-DISCOVERY Board
29 Overview of the STM32F4- NUCLEO Board

Navigating the ARM Cortex-M Internals with Embedded-C
30 Sourcecode Download.
31 Pointers
32 Pointers Dropping BEEF into Memory
33 Blinky with Pointers and Raw Addresses
34 Blinky with Pointers and Raw Address (Pat II)
35 Blinky with Pointers and Raw Address (Part III)

The ARM Cortex-M Embedded-C Essentials
36 Using Preprocessors
37 Function Arguments
38 Importing Functions from another file
39 Using IFNDEF to prevent multiple declaration
40 Declaring fixed width variables
41 Using Preprocessors from the Datasheet
42 Adding Silicon Vendors’ Header Files
43 The importance of the Volatile Keyword
44 The importance of the Volatile Keyword (continued)
45 Introduction to Bitwise Operations
46 Applying Bitwise Operations
47 Applying Bitwise Operations (continued)
48 Writing Functions

Managing Data with Structures in Embedded C
49 Introduction to Structures
50 Simplifying Structures with typedef
51 Accessing Structure members using the dot operator
52 Accessing Structure members using the dot operator (continued)

The Cortex Microcontroller Software Interface Standard
53 Introduction to CMSIS
54 Writing a CMSIS complaint program from scratch (Part III)
55 Examining the CMSIS documentation
56 Writing our first CMSIS program
57 Understanding how CMSIS works
58 Understanding how CMSIS works (continued)
59 Understanding how CMSIS works (final)
60 Making our old Blinky program CMSIS complaint
61 Writing a CMSIS complaint program from scratch (Part I)
62 Writing a CMSIS complaint program from scratch (Part II)

Input Output Programming
63 GPIO vs. SPIO
64 Blinking an LED

Interfacing with Liquid Crystal Displays
65 Introduction to LCD Programming
66 Coding LCD Program (Part III)
67 Coding LCD Program (Part IV)
68 Coding LCD 4-bits programming (Part I)
69 LCD 4-bits Write function
70 Coding LCD 4-bits programming (Part I)
71 Coding LCD 4-bits programming (Part II)
72 Coding LCD 4-bits programming (Part III)
73 Coding LCD 4-bits programming (Part IV)
74 LCD Pinout and MCU interfacing
75 Controlling the LCD
76 LCD basic program flowchart
77 LCD Initialization function
78 LCD Command and Data functions
79 Pseudo delay functions
80 Coding LCD Program (Part I)
81 Coding LCD Program (Part II)

Interfacing with Keyboards
82 Interfacing with Keybords
83 Coding Keyboard programming (Part I)
84 Coding Keyboard programming (Part II)
85 Coding Keyboard programming (Part III)

SysTick Timer
86 Coding SysTick TIMER program 1
87 The SysTick TIMER
88 Coding SysTick TIMER program 1 (Part II )

General Purpose Timers
89 General Purpose TIMERS
90 Timer Size in Seconds
91 GPTM Registers
92 Coding Programming TIMERS in 16-bits one-shot mode PART I
93 Coding Programming TIMERS in 16-bits one-shot mode PART II
94 Coding Programming TIMERS in 16-bits periodic mode PART I
95 Coding Programming TIMERS in 16-bits periodic mode PART II

Internals of A Real-Time Kernel
96 Introduction
97 Coding Creating the Stack Frames
98 Coding Switching Threads
99 Coding Setting Up the Project
100 Coding Analyzing the Reference Documents
101 Coding Pin configuration
102 Coding Testing pin configuration
103 Coding Adding a Time Base
104 Coding The blocking code
105 Coding The Exception Stack Frame
106 Coding The Exception Stack Frame (PART II)

Overview of Cortex-M OS Support Features
107 Inside the Microcontroller
108 Coding Creating SVC Services (PART VI)
109 PendSV Exceptions
110 Exclusive access instructions
111 Operation Modes
112 The Shadow Stack Pointer
113 SVC Exceptions
114 Coding Creating SVC Services (PART I)
115 Creating SVC Services (PART II)
116 Coding Creating SVC Services (PART III)
117 Creating SVC Services (PART IV)
118 Coding Creating SVC Services (PART V)

Setting up Development Environment and Toolchains
119 Downloading and Installing Keil uVision5
120 CubeMx External interrupt project
121 Downloading and Installing USB Drivers for Tiva C Microcontroller
122 Keil uVision 5 overview
123 Setting Up STM32CubeMX
124 Overview of STM32CubeMX
125 Overview of STM32CubeMX (continued)
126 Checking for Updates and Firmwares
127 Overview Peripheral Configuration
128 CubeMX InputOutput project

Closing Remarks
129 Closing