Embedded System Design using UML State Machines
What you’ll learn
Event driven programming paradigm
Flat and hierarchical state machines (Simple FSMs and H-FSMs)
UML state machine semantics and state chart drawing
Converting UML statecharts into executable C/C++ code
Action objects design approach
Different state machine implementation strategies
Nested switch implementation of state machines
State table approach to implementing the state machines
State-Handler approach to implementing the state machines
Usage of function pointers in ‘C’
Hands-on projects using simple FSM and HSMs
Step by step code development
Graphically modeling event-driven embedded application using UML statecharts modeler tools
Working with QP™ embedded real-time framework and QM™ tool of Quantum Leaps, LLC to draw and implement the HSMs
Requirements
Basics of ‘C’ or ‘C++’ programming
Description
Learn the fundamentals of simple and hierarchical UML state machines in easy stepsThe course emphasizes project-based learning, learning by doing. The goal of this course is to introduce an event-driven programming paradigm using simple and hierarchical state machines.After going through this course, you will be trained to apply the state machine approach to solve your complex embedded systems projects.Some of the highlights of this course are as belowyou will learn,1) UML(Unified Modeling Language) state machine semantics like simple/composite states, events, signals, transitions, entry/exit actions, guards, pseudo-states, etc2) Drawing UML state machines using graphical modeling tools such as Astah and QM™ modeling tool3) Implementing embedded applications using Hierarchical state machines and Active objects design approach4) Using QP™ real-time embedded framework and QP™-Nano Arduino library in your embedded projects5) Active objects 6) Hands-on event-driven project implementation and testing on Arduino UNO board (Please check the preview videos)Hardware:If you want to test the code developed on the target hardware, you need the below-mentioned boards and components1. Arduino UNO(1)2. 16×2 character LCD (1)3. Pushbuttons (3)4. 10KΩ resistors (3)5 . 220Ω resistor (3)6. 100KΩ Potentiometer (1)7. Arduino buzzer (1)8. Jumper wires-M2MSoftware:Installation procedure for important software are covered in this course1. Arduino IDE (Free and Open source )2. Microsoft visual code (Free)3. PlatformIO VS code extension(Free and Open source )4. QM™ modeling tool by Quantum Leaps, LLC (Free GPL version)5. Astah by Change Vision, Inc.(Trial version)Learning order of FastBit Embedded Brain Academy Courses,If you are a beginner in the field of embedded systems, then you can take our courses in the below-mentioned order. This is just a recommendation from the instructor for beginners. 1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)3) Mastering Microcontroller with Embedded Driver Development(MCU1)4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)5) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)6) Embedded System Design using UML State Machines(State machine)7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)10) Embedded Linux Step by Step using Beaglebone Black(Linux)11) Linux device driver programming using Beaglebone Black(LDD1)
Overview
Section 1: Introduction
Lecture 1 About the instructor
Lecture 2 Important Note
Lecture 3 Course Repository and Slides
Lecture 4 Introduction to Finite State Machine
Lecture 5 Mealy and Moore machine
Lecture 6 Mealy and Moore State Transition Table
Lecture 7 Exercise-0001 LED control Mealy machine example
Lecture 8 Exercise-001 LED control Mealy machine implementation part 1
Lecture 9 Exercise-001 LED control Mealy machine implementation part 2
Lecture 10 Exercise-002 LED control Moore machine implementation
Section 2: UML Flat state machine and Implementation
Lecture 11 Exercise-003 Productivity Timer demo
Lecture 12 Astah UML download
Lecture 13 UML Simple and Composite states
Lecture 14 UML state machine internal state activities(entry/exit/do)
Lecture 15 UML state machine types of Transitions
Lecture 16 Events and Signals
Lecture 17 Exercise-003 States and Initial Psuedostates
Lecture 18 Exercise-003 Defining states Entry and Exit actions
Lecture 19 Exercise-003 Drawing state transitions
Lecture 20 Exercise-003 Implementing TIME_SET state
Lecture 21 Exercise-003 Implementing PAUSE state
Lecture 22 Exercise-003 Implementing STAT state
Lecture 23 Installing Microsoft VS Code and PlatformIO extension
Section 3: Flat state machine exercise implementation
Lecture 24 Exercise-003 Create new project
Lecture 25 Exercise-003 Data structure explanation
Lecture 26 Exercise-003 Defining initial transition function
Lecture 27 Different approach to implement state machine
Section 4: Nested switch technique to implement State Machine
Lecture 28 Exercise-003 Nested switch implementation of an FSM part 1
Lecture 29 Exercise-003 Nested switch implementation of an FSM part 2
Lecture 30 Exercise-003 Hardware connections
Lecture 31 Exercise-003 Implementing event producer code
Lecture 32 Exercise-003 Dispatching time tick event
Lecture 33 Button bouncing explanation
Lecture 34 Exercise-003 Button software de-bouncing implementation
Lecture 35 Adding arduino Library to project in platformIO
Lecture 36 Exercise-003 Implementing LCD functions Part 1
Lecture 37 Exercise-003 Implementing LCD functions Part 2
Lecture 38 Exercise-003 Helper function implementation
Lecture 39 Exercise-003 Implementing initial transition actions
Lecture 40 Exercise-003 Testing on hardware
Section 5: Function pointers in ‘C’
Lecture 41 Function pointers in C
Lecture 42 Passing function pointers as function arguments
Section 6: State handler technique to implement State Machine
Lecture 43 Exercise-004 Implementation using state handler approach
Section 7: State table technique to implement State Machine
Lecture 44 Exercise-004 State table approach for implementation of an FSM part-1
Lecture 45 Exercise-004 State table approach for implementation of an FSM part-2
Lecture 46 2D arrays in C
Lecture 47 Exercise-004 State table approach for implementation of an FSM part-3
Lecture 48 Exercise-004 State table approach for implementation of an FSM part-4
Section 8: UML Hierarchical State Machines and QP™ framework
Lecture 49 Hierarchical State Machines(HSMs)
Lecture 50 Run-to-completion and QP™ framework
Lecture 51 Download QP™ Nano Arduino library
Lecture 52 HSM transition execution sequence testing
Section 9: UML HSM transition execution sequences
Lecture 53 Exercise-006 Test HSM transition execution sequence on Arduino
Lecture 54 Adding files in QM tool
Lecture 55 Adding codes to files using QM tool
Lecture 56 Adding a class attribute
Lecture 57 Adding class operation
Lecture 58 Adding assertion failure callback
Lecture 59 QHSM_INIT() and QHSM_DISPATCH() APIs
Lecture 60 Exercise-006 Testing
Lecture 61 Exercise-006 Testing History state
Section 10: UML HSM exercise using QM tool
Lecture 62 Exercise-007 Clock Alarm Introduction
Lecture 63 Exercise-007 Clock Alarm demo
Lecture 64 Exercise-007 States, Signals and Data structure used
Lecture 65 Exercise-007 Drawing an HSM
Lecture 66 Exercise-007 Adding main application object and constructor
Lecture 67 Atmega328p Timer peripheral explanation
Lecture 68 Atmega328p Timer registers and setup code
Lecture 69 Exercise-007 Adding class operations
Lecture 70 Exercise-007 Defining initial transition actions
Lecture 71 Exercise-007 Coding for the TICKING state
Lecture 72 Exercise-007 Adding free operations
Lecture 73 Exercise-007 Reading curr_time through class operation
Lecture 74 Exercise-007 Handling TICK event in TICKING state and testing
Lecture 75 Exercise-007 Drawing CLOCK_SETTING state
Lecture 76 Exercise-007 Implementing CLOCK_SETTING state part-1
Lecture 77 Exercise-007 Implementing CLOCK_SETTING state part-2
Lecture 78 Exercise-007 Implementing CLOCK_SETTING state part-3
Lecture 79 Exercise-007 Implementing CLOCK_SETTING state part-4
Lecture 80 Will You Write Us a Course Review?
Lecture 81 Exercise-007 Updating real time
Lecture 82 Exercise-007 ALARM_SETTING state
Lecture 83 Exercise-007 Implementing ALARM_SETTING state
Lecture 84 Exercise-007 Implementing ALARM_NOTIFY state
Section 11: Active Objects
Lecture 85 Active Objects
Lecture 86 Orthogonal state pattern
Lecture 87 Exercise-008:Implementation part 1
Lecture 88 Exercise-008:Implementation part 2
Lecture 89 Exercise-008:Implementation part 3
Lecture 90 Exercise-008:Implementation part 4
Lecture 91 Exercise-008:Implementation part 5
Lecture 92 Will You Write Us a Course Review?
Lecture 93 Exercise-008:Implementation part 6
Lecture 94 Exercise-008:Implementation part 7
Lecture 95 Exercise-008:Implementation part 8
Lecture 96 Exercise-008:Implementation part 9
Lecture 97 BONUS LECTURE
Anyone who wants to learn and explore embedded system programming,Students and working professionals
Course Information:
Udemy | English | 12h 13m | 8.68 GB
Created by: FastBit Embedded Brain Academy
You Can See More Courses in the IT & Software >> Greetings from CourseDown.com