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.
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:
- stm32f407_template
- stm32f407_freertos_template
- stm32f767_template
- stm32f767_freertos_template
- stm32h753_template
- stm32h753_freertos_template
- 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)
- 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 | Meaning |
|---|---|
| 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 |
| 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 |
| LUT | Lookup Table |
| 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 Access Memory |
| RISC | Reduced Instruction Set Computer |
| ROM | Read-only Memory |
| RTL | Register Transfer Logic |
| SoC | System on Chip |
| SoM | System on Module |
| SRAM | Static RAM |
Back to top of the page
