Master bare metal embedded system programming with AVR uC

Master bare metal embedded system programming with AVR uC

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 7.5 Hours | 3.03 GB

Learn bare metal embedded C, assembly & mixed programming, microcontroller internals, interrupt, stack, memory & more

Welcome to the only embedded system course you need to kick-start Embedded programming skill.

Embedded System programming is a multi-disciplinary skill and built upon solid foundation of programming and knowledge of hardware – microcontroller. The course helps you build sound understanding of C & Assembly programming. It discusses the architecture of the ATMega328 microcontroller and how software and hardware interact.

The course is taught ground up. The embedded programs are developed from the scratch and does not use libraries bundled with the C compiler or pre-built third-party libraries. Every functionality needed for the project will be implemented afresh.

You will rig-up the development board using the basic electronic components like capacitors, resistors, LEDs, microcontroller etc. And interface the development board with PC through USB-serial adaptor and in-circuit programmer. You shall setup the development environment on PC, configure the microcontroller and flash the bootloader.

You will learn memory management by C compiler, microcontroller architecture, instruction execution, interrupt handling and cross-language programming. You shall implement programs using C and assembly programming languages and implement pre-main functionalities to bring-up the development board. These topics not only introduce you to the programming but also prepare you to deal with the ecosystem of programming an embedded system.

Key Highlights

  • The embedded system course is based on open source tools and hardware
  • Rig-up your own circuit on breadboard, design and implement programs on it
  • No 3rd party software component used – all the libraries, ISR, IVT are developed from scratch
  • Based on ATmega328/P Microcontroller which is simple to understand & readily available

Teaching Methodology

  • Designed for the success
  • Complex concepts are explained in simple yet interesting manner
  • Balanced – explanation of theoretical concepts and programming exercise
  • Working of the circuit and program logic is explained step-by-step
  • Projects, handouts, source code, quizzes and references
  • Fun & Exciting

What you’ll learn

  • Micro-controller architecture & it’s working
  • Instruction execution, pipelining, stack pointer & interrupts
  • C, AVR assembly programming & implement mixed language projects
  • Arguments and return values passing from a function to another, how memory & CPU registers are allocated during program execution
  • How hardware manages program stack and management of local & global variables
  • Interrupts, interrupt vector table (IVT) and interrupt service routine (ISR), IVT & ISR programming
  • Build environment setup, GNU tools & utilities & build automation using GNU Make
  • Setup in-circuit programmer and USB-Serial adapter, flash & configure ATmega328 micro-controller
Table of Contents

Introduction
1 Course Preview
2 Course Structure
3 Hardware & Software Requirement

Introduction to Embedded System
4 What is Embedded System
5 What is Microcontroller
6 Microcontroller Architecture

Development Environment
7 Goal & Content
8 Build Process
9 Build Automation with Make – 1
10 Build Automation with Make – 2
11 Section Round-up
12 Peek into Development Environment
13 Tool Setup
14 Base Circuitry
15 In-circuit Programmer
16 AVRDUDE
17 Playing with Fuse & Lock
18 Flashing Bootloader
19 Adding USB-Serial Adapter

Embedded Programming – 1
20 Goal & Contents
21 Programming Challenge – Modulo Blink
22 Programming Challenge – Alpha Blink
23 Programming Challenge – Optical Encoder
24 Section Round-up
25 C & Its Structure
26 Identifiers & Keywords
27 Data Types & Array
28 Constant & Statement
29 Operators & Their Precedence & Associativity
30 Control Statement
31 Functions

AVR Microcontroller ATMega328P
32 Goal & Content
33 Programming Challenge – Stack Frame
34 Section Round-up
35 ATMega328P Organization
36 ATMega328P Architecture
37 Program Stack
38 Instruction Set
39 Interrupts
40 Memory
41 Programming Challenge – Status Register
42 Program Stack Frame

Embedded Programming – 2
43 Goal & Content
44 Pointers
45 Cross Language Programming
46 Inline Assembly Programming
47 Programming Challenge – Hex to BCD Conversion
48 Programming Challenge – BCD Sum
49 Section Round-up
50 Bitwise Operations – C
51 Bitwise Operations – Assembly
52 Storage Class
53 Volatile
54 Macro
55 Inline Function

Interrupts & pre-main()
56 Goal & Content
57 Interrupts
58 IVT Placement – Linker
59 IVT Placement – C Code
60 External Interrupt
61 Exercise 8 – External Interrupt
62 Pin Change Interrupt
63 Programming Challenge – Pin Change Interrupt
64 Section Round-up