Companies Home Search Profile

Mastering Embedded 'Systems programming' on ARM Cortex-M4

Focused View

Diptopal Basu

27:29:05

107 View
  • 1 - A few words on embedded systems and ARM Cortex M4 introduction.mp4
    12:52
  • 2 - CortexM4 Features.mp4
    21:36
  • 3 - Processor Architecture Bus Matrix and Memory Map.mp4
    26:50
  • 4 - STM32F411xCxE Datasheet Walkthrough CortexM4 Registers and Memory Map.mp4
    38:54
  • 5 - Program Execution and Pipeline Details.mp4
    24:45
  • 6 - STM32F411 Discovery Board Datasheet Walkthrough.mp4
    16:49
  • 7 - Toolchain installation on Windows.mp4
    47:14
  • 8 - Toolchain installation on Linux.mp4
    49:31
  • 9 - Connect the Discovery board for the first time.mp4
    03:12
  • 10 - Getting started with the STM32 CUBEIDE for the first time.mp4
    40:55
  • 11 - Embedded C Code for Download.html
  • 11 - Embedded-C-Code.zip
  • 12 - Embedded C Part 1 Address Pointer Basics and Memory Access Macros.mp4
    24:19
  • 13 - Embedded C Part 2 Demo on Address Pointers with Macros.mp4
    45:51
  • 14 - Embedded C Part 3 Accessing Memory through structures and Demo.mp4
    32:08
  • 15 - Embedded C Part 4 Bitwise Operators and Pointer Arithmetic.mp4
    20:01
  • 16 - Embedded C Part 5 Demo on Bitwise Operators and Pointer Arithmetic.mp4
    40:25
  • 17 - Embedded C Part 6 Inline Assembly.mp4
    11:00
  • 18 - Embedded C Part 7 Demo on Inline Assembly.mp4
    11:25
  • 19 - Embedded C Part 8 Header file creation heuristics and CMSIS memory map header.mp4
    19:36
  • 20 - Linker-Makefile.zip
  • 20 - Necessary code for Linker and Make.html
  • 21 - Introduction to Linker and Make.mp4
    27:02
  • 22 - ELF file format.mp4
    31:43
  • 23 - ELF Object Code.mp4
    22:15
  • 24 - Linker Relocation.mp4
    28:16
  • 25 - Symbol Table and Symbol and Segment Relocation.mp4
    58:07
  • 26 - Linker Control Scripts VMA and LMA.mp4
    58:32
  • 27 - Make Basics and Makefiles.mp4
    36:36
  • 28 - Putting it all together.mp4
    19:45
  • 29 - Demo on Make.mp4
    59:43
  • 30 - Startup and Reset handler on the STM32F11.mp4
    51:18
  • 31 - CortexM4 Startup Demo on the STM32F11.mp4
    51:18
  • 32 - IO-Port-Code.zip
  • 32 - Necessary Code for GPIO.html
  • 33 - IO Circuitry and Electricals.mp4
    43:10
  • 34 - IO Pin Configuration and Registers Overview.mp4
    34:26
  • 35 - IO Pin Configuration Demo.mp4
    58:53
  • 36 - Exception-Handling.zip
  • 36 - Necessary Code on Exception Handling.html
  • 37 - Exception Handling Basics.mp4
    10:51
  • 38 - Basics of Interrupt Behaviour and Introduction to Exception Vector Table.mp4
    13:13
  • 39 - The SCB Exception Control and NVIC Registers Walkthrough.mp4
    36:42
  • 40 - Interrupt Priority Management.mp4
    20:47
  • 41 - Advanced Interrupt Behaviour.mp4
    15:22
  • 42 - Interrupt Entry and Exit Sequence.mp4
    29:51
  • 43 - Systick Interrupt Theory.mp4
    12:22
  • 44 - SysTick Demo Part 1.mp4
    22:21
  • 45 - Systick Demo Part 2.mp4
    36:43
  • 46 - Interrupt stacking for NonFloating point mode.mp4
    01:08:18
  • 47 - Demo on Interrupt Unstacking.mp4
    12:41
  • 48 - Demo on Stacking for Floating Point Enabled Mode.mp4
    25:59
  • 49 - External Interrupts Theory.mp4
    35:00
  • 50 - Demo on External Interrupts Part 1.mp4
    30:08
  • 51 - Demo on External Interrupts Part 2.mp4
    13:16
  • 52 - Demo on Interrupt Preemption.mp4
    15:03
  • 53 - Reset Handler Theory.mp4
    03:37
  • 54 - Clock-Tree.zip
  • 54 - Necessary Code on Clock Tree Configuration.html
  • 55 - Introduction to the Clock Tree PLL Basics and Register Walkthrough.mp4
    39:05
  • 56 - PLL Internal Circuitry and Operation.mp4
    35:47
  • 57 - Clock Tree Walkthrough and PLL Configuration.mp4
    39:01
  • 58 - Demo on Clock Tree Configuration and PLL Configuration.mp4
    01:04:31
  • Description


    An Exhaustive Hands-on Teardown of Startup, Memory Access, Interrupts, Linker, Make, I/O and the Clock Tree

    What You'll Learn?


    • Understand the ARM Cortex-M4 Core on the STM32F411 Discovery Board, Datasheets and Reference Manuals
    • Learn Embedded C for 32 bit controllers. Different methods for Register and Memory Access, Bitwise operations, Inline Assembly
    • Learn the Interrupt Subsystem for both Non Floating and Floating Point modes. Set up the Exception Vector Table, Set up the Systick and EXTI interrupts
    • Learn ELF object file format, Linker Symbol Relocation and Resolution, Linker variables, VMA and LMA. Write Linker Script files.
    • Understand the Clock subsystem, learn about PLL operation, bare-metal configuration of clock tree and PLL without configuration tool
    • Learn about the I/O subsystem, circuitry of the I/O pins. Learn different pin modes like open drain, push pull, alternate functions and internal pull ups
    • Understand the startup process, setup the interrupt vector table and learn how to write the reset handler, set up the data, stack and .bss sections

    Who is this for?


  • Computer Science, Electrical and Electronics Undergraduates and Fresh Graduates looking for a career in Embedded Systems
  • Working professionals looking to upgrade to an ARM Cortex-M4 controller from 8 bit or 16 bit counterparts
  • Hobbyists and Enthusiasts interested in Bare-metal programming on the STM32F4 Microcontroller
  • More details


    Description

    A deep dive into the ARM Cortex M4 architecture and Systems programming with the STM32F411 Discovery board with the GNU ARM Cross Toolchain. Understanding the programmers model, IDE (Integrated Development Environment). Detailed discussions, In depth  study of Datasheets and Reference Manuals, Demos and Case Studies on Memory access and its pitfalls (Different methods like Macros with offsets and Structures), Compilation and Linking process, Input/Output Subsystem, Interrupts (Both non-floating and floating point) and Clock Tree Configuration with in depth discussion on PLL circuitry and operation. Slideshows, Code Walkthroughs, Whiteboard and Debug Sessions are an integral part of the course. 

    I have kept the complete first chapter of the course with preview enabled for you to evaluate the course and learn some basic concepts to get started on any microcontroller.

    There are certain topics in Embedded Systems especially for advanced microcontrollers which pose unique challenges

    • The process of manipulating the memory directly on a microcontroller either through macros or through structure pointers

    • Pointers for embedded systems. Though looking similar to their workstation counterparts, there are subtle differences which could mess up the application if not carefully handled

    • In embedded firmware development since application efficiency, determinism, power efficiency, memory size, writing efficient C programs and keeping track of the assembly code compiled from C/C++ are of paramount importance.

    • The Interrupt Handling Process is complicated and the stack frames created, vary between implementations like Floating point and Non Floating point Stacking and Unstacking. Interrupt preemption is a complicated feature and needs to be handled with care.

    • The process of Linking and Make is grossly misunderstood as well. The topics of object files, relocation, symbol resolution pose unique challenges and consolidated information on these is scarce.

    • Object File Formats are a grey area as well which causes much distress when the process of linking is to be understood. The different tables in the object file like the Symbol Table, Relocation Table are difficult to comprehend without proper guidance.

    • Input/Output pin configuration also pose challenges if the electricals and circuitry of the pins are not understood well. There are multiple configuration in which each pin of a microcontroller can operate like open drain, push-pull, high impedance etc.

    • The Clock Tree for a high end microcontroller is quite complex as well. Multiple clock sources feeding clocks to different subsystems make the initial learning curve quite steep. Over and above that the high frequency clocks are driven by PLLs which are complex circuits themselves and need a good deal of understanding when configuring them.

    • The processor startup could be tricky especially the part where the memory is set up after every reset. The understanding of .text, .data, .bss sections and setting them up properly during boot up poses unique challenges.

    In this course I strive to address all of the challenges above with theory, diagrams, animation and code. There are plenty of demos to explain difficult to understand concepts. I have cleared all concepts through extensive debugging sessions on the IDE while inspecting the different subsystems of the controller in real time.

    I have taken the following steps to address the challenges

    • Approached memory access and operations in different ways like Macros and Structures. I have built up the concepts gradually until I arrived at the final form of the expressions. I have shown examples of misaligned accessing of memory through structures and their mitigation. Bitwise operations have been dealt with in real time on the debugger.

    • For understanding the Linking process, I created code examples and first manually compile each source file and look into the ELF object files, the symbol tables and relocation tables along with the disassembly. Once the files are compiled into a single object file by the linker, the symbol resolution and code and symbol relocation are clearly explained by looking into the final object file. The linker script file is explained in detail with diagrams of before and after initialisation diagrams of memory.

    • An extensive debug session of the startup process explaining how the processor sets up memory, in real time. The reset handler is explained and demonstrated in C. The process of initialising the .data section in the RAM and setting up the .bss section and stack are demonstrated.   

    • The Make process is explained using multiple Makefiles each with slightly increasing complexity in each until the final 'cryptic' makefile is written and fully understood. The dependency graph is explained and many possible error scenarios are discussed on make so as to explain how make tackles Makefiles. It's a decently exhaustive treatment of Make which will facilitate developers to write makefles for deeply embedded systems.

    • Interrupt Handling is demonstrated in detail along with theory. Demonstration and Theory of Interrupt Handling and preemption for both non-floating and floating point configuration. Concepts like lazy stacking explained and demonstrated on the debugger.

    • The Clock Tree is explained in detail. PLL calculations for setting frequency. Theory of PLL operation with explanation of different PLL sub systems such as the Voltage Controller Oscillator, Frequency Divider, Phase Frequency Detector, Low Pass Filter with illustrations, animations and timing diagrams. Demonstration of initialisation of registers in the clock tree subsystem on the debugger.

    • I/O circuitry and then configuring the I/O pins. All pin modes explained like push-pull, open drain, analog and alternate functions. 


    Who this course is for:

    • Computer Science, Electrical and Electronics Undergraduates and Fresh Graduates looking for a career in Embedded Systems
    • Working professionals looking to upgrade to an ARM Cortex-M4 controller from 8 bit or 16 bit counterparts
    • Hobbyists and Enthusiasts interested in Bare-metal programming on the STM32F4 Microcontroller

    User Reviews
    Rating
    0
    0
    0
    0
    0
    average 0
    Total votes0
    Focused display
    Diptopal Basu
    Diptopal Basu
    Instructor's Courses
    20 years of industry experience in deeply embedded systems, embedded Linux and Enterprise Software with a graduate degree in Electronics and Communication. I am an avid learner with interest in Real-Time Embedded Systems, Hardware Design especially for Industrial Control. I love science fiction and am an avid fan of BSG, StarTrek and Star Wars franchises among others
    Students take courses primarily to improve job-related skills.Some courses generate credit toward technical certification. Udemy has made a special effort to attract corporate trainers seeking to create coursework for employees of their company.
    • language english
    • Training sessions 53
    • duration 27:29:05
    • Release Date 2023/04/25