Embedded MCUs & Linux Systems


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.

Hardware Peripheral
STM32 Microcontroller
TI C2000 Real-time Microcontroller
TI ARM-based Microcontroller
Simulink Embedded Coder

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 , EmbeddedExpertIO, 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)
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)
Embedded System Abbreviations
Abbreviation Meaning
APUApplication Processing Unit
ARMAdvanced RISC Machines
ASICApplication Specific Integrated Circuit
AXIAdvanced eXtensible Interface (between PS and PL)
CLBConfigurable Logic Blocks
CISCComplex Instruction Set Computer
CPLDComplex Programmable Logic Device
DDRDouble Data Rate
DRAMDynamic RAM
DSPDigital Signal Processor
FPGAField Programmable Gate Array
HDLHardware Description Language
HLSHigh Level Synthesis
LUTLookup Table
MCUMicrocontroller Unit
MMUMemory Management Unit
OCMOn-chip Memory
PALProgrammable Array Logic
PLProgrammable Logic (FPGA)
PLLPhase Lock Loop
PLCProgrammable Logic Controller
PLDProgrammable Logic Device
PSProcessing Subsystem (ARM processor)
RAMRandom Access Memory
RISCReduced Instruction Set Computer
ROMRead-only Memory
RTLRegister Transfer Logic
SoCSystem on Chip
SoMSystem on Module
SRAMStatic RAM


Back to top of the page