Real-time Embedded System

I blinked my first LED by using a 51 microcontroller with the KEIL IDE in 2005. I was super excited on this “magic”. Later, I studied how to program the AVR microcontrollers, such ATmega16, ATmega328, using the ICC AVR IDE. At that time, Arduino was not introduced to China. I had to buy various of AVR development boards to play and explore.

I learned TI MSP430, C2000, Arm microcontrollers at University of Illinois from my teacher Dan Block. I took almost all his courses/labs in control, signal processing and embedded system. At the same time, I learned STM32 microcontrollers from YouTube, Udemy etc.

From my experience, there is no short-cut on learning hands-on embedded programming. I always tried to make my hands dirty, be patient, be careful and be safe. Learning from the bare metal programming might be wise. Third-party optimized libraries are really for experts who have been very very familiar with the low level programming. Learn to read datasheet and learn to use oscilloscope are necessary.

I personally use

FreeRTOS on STM32 microcontrollers with STM32CubeIDE, CMSIS, HAL
  • stm32f407_template
  • stm32f407_freertos_template
  • stm32f767_template
  • stm32f767_freertos_template
  • stm32h753_template
  • stm32h753_freertos_template

  • TI-RTOS (SYS/BIOS) on TI C2000 microcontroller with CCS, Bitfield, Driverlib
  • f28377s_template (for single CPU & CLA)
  • f28377s_tirtos_template (for single CPU & CLA)
  • f28379d_template (for dual CPUs & CLAs)
  • f28379d_tirtos_template (for dual CPUs & CLAs)
  • f28388d_tirtos_template (for dual CPUs & CLAs & CM)
  • f28388d_freertos_template (for dual CPUs & CLAs & CM)

  • Cyber-physical System: systems where software and hardware components are seamlessly integrated towards performing well defined tasks.

    Real-time System: an operating system (OS) for real-time computing applications that processes data and events that have critically defined time constraints.

    Embedded System: a microprocessor or microcontroller based computer hardware system with software that is designed to perform a dedicated function, either as an independent system or as a part of a large system. At the core is an integrated circuit designed to carry out computation for real-time operations.

    AVR / MSP430 Microcontroller
    STM32 Microcontroller
    TI C2000 Microcontroller
    TI ARM-based Microcontroller

    Altera FPGA (Intel)
    Xilinx FPGA (AMD)

    Single Board Computer:
    NVIDIA Jetson

    Websites of Digital Signal Processing:
    Filter Design and Analysis
    TFilter FIR Filter Design Tool
    Serial Oscilloscope Plotting Tool

    Websites of Embedded System:
    Lightweight IP Stack (LwIP)

    Popular Scheduling Algorithm:
  • First Come First Serve (FCFS) – Non-preemptive
  • Earliest Deadline First (EDF) – Dynamic Preemptive Scheduler
  • Round Robin (RR) – Static Preemptive Scheduler
  • Weighted Round Robin (WRR)
  • Deadline Monotonic Scheduler (most important = highest RRI)
  • Rate Monotonic Scheduler (RMS)
  • Shortest Job First (SJF)
  • Dynamic Priorities (deadline approaching = raise PRI)

  • Abbreviation (Embedded System):
    APU: Application Processing Unit
    ARM: Advanced RISC Machines
    ASIC: Application Specific Integrated Circuit
    AXI: Advanced eXtensible Interface (between PS and PL)
    CLB: Configurable Logic Blocks (CLB)
    CISC: Complex Instruction Set Computer
    CPLD: Complex Programmable Logic Device
    DDR: Double Data Rate
    DRAM: Dynamic RAM
    DSP: Digital Signal Processor
    FPGA: Field Programmable Gate Array
    HDL: Hardware Description Language
    HLS: High Level Synthesis
    LUTs: Lookup Tables
    MCU: Microcontroller Unit
    MMU: Memory Management Unit
    OCM: On-chip Memory
    PAL: Programmable Array Logic
    PL: Programmable Logic (FPGA)
    PLL: Phase Lock Loop
    PLC: Programmable Logic Controller
    PLD: Programmable Logic Device
    PS: Processing Subsystem (ARM processor)
    RAM: Random Memory Access
    RISC: Reduced Instruction Set Computer
    ROM: Read-only Memory
    RTL: Register Transfer Logic
    SoC: System on Chip
    SoM: System on Module
    SRAM: Static RAM

    Abbreviation (MCU):
    ADC: Analog to Digital Converter
    CAN: Controller Area Network
    CAN FD: Controller Area Network Flexible Data-Rate
    DAC: Digital to Analog Converter
    DMA: Direct Memory Access
    FPU: Floating-point Unit
    I2C: Inter-Integrated Circuit
    SPI: Serial Peripheral Interface
    UART: Universal Synchronous/Asynchronous Receiver/Transmitter

    Back to top of page