Week 04 — Programming / Coding Vocabulary¶
Embedded Programming Fundamentals¶
The definition is from https://chat.deepseek.com/a/chat/s/e78beb97-d2aa-42f9-8df1-367e97350ecb
Embedded System
A computer system designed to perform a specific task within a larger system.
Source: Wikipedia – Embedded System; Barr, M., & Massa, A. (2006). Programming Embedded Systems.
Microcontroller
A compact integrated circuit containing CPU, memory, and I/O peripherals on one chip.
Source: ATmega328P Datasheet (Microchip); Wikipedia – Microcontroller
Microprocessor
A CPU without built-in memory or peripherals; requires external components to operate.
Source: Wikipedia – Microprocessor; Patterson & Hennessy (2017). Computer Organization and Design.
GPIO (General Purpose Input/Output)
Programmable pins on a microcontroller used for input or output operations.
Source: Raspberry Pi Documentation – GPIO; Arduino Reference – pinMode()
PWM (Pulse Width Modulation)
A technique to simulate analog output by rapidly switching a digital signal.
Source: Wikipedia – Pulse-width modulation; ATmega328P Datasheet (Section 14 – 8-bit Timer/Counter0 with PWM)
ADC (Analog-to-Digital Converter)
Converts analog voltage levels into digital values for processing.
Source: Wikipedia – ADC; ATmega328P Datasheet (Section 23 – Analog-to-Digital Converter)
DAC (Digital-to-Analog Converter)
Converts digital values into analog voltage levels.
Source: Wikipedia – DAC; Microchip MCP4921 Datasheet
Interrupt
A signal that temporarily halts the main program to handle urgent events.
Source: Wikipedia – Interrupt; ATmega328P Datasheet (Section 11 – Interrupts)
ISR (Interrupt Service Routine)
A special function executed when an interrupt occurs.
Source: GeeksforGeeks – Interrupt Service Routine; Barr & Massa (2006). Programming Embedded Systems.
Bootloader
A small program that loads the main firmware when the device starts.
Source: Wikipedia – Bootloader; Arduino Optiboot Bootloader Documentation
Firmware
Low-level software programmed into hardware to control device functionality.
Source: Wikipedia – Firmware; Barr & Massa (2006). Programming Embedded Systems.
Processor Architectures¶
Von Neumann Architecture
An architecture where program instructions and data share the same memory and bus.
Source: Wikipedia – Von Neumann Architecture; Patterson & Hennessy (2017). Computer Organization and Design.
Harvard Architecture
An architecture where instructions and data use separate memory and buses.
Source: Wikipedia – Harvard Architecture; Patterson & Hennessy (2017). Computer Organization and Design.
RISC (Reduced Instruction Set Computer)
A CPU design using simple instructions for faster execution.
Source: Wikipedia – RISC; Patterson & Hennessy (2017). Computer Organization and Design.
CISC (Complex Instruction Set Computer)
A CPU design with complex instructions capable of multi-step operations.
Source: Wikipedia – CISC; Patterson & Hennessy (2017). Computer Organization and Design.
Multi-Core Processor
A processor with multiple cores capable of executing tasks simultaneously.
Source: Wikipedia – Multi-core processor; Intel Corporation (2023). Multi-Core Technology Brief.
GPU (Graphics Processing Unit)
A processor optimized for parallel processing, primarily for graphics and computational tasks.
Source: Wikipedia – GPU; NVIDIA CUDA Programming Guide
Embedded Processor
A processor specifically designed for embedded applications, optimized for efficiency and reliability.
Source: Barr & Massa (2006). Programming Embedded Systems; Arm Developer – Embedded Processors
Memory Types¶
Register
A small, fast memory location inside the CPU for temporary data storage.
Source: Patterson & Hennessy (2017). Computer Organization and Design; Wikipedia – Processor register
Flash Memory
Non-volatile memory used to store program code in microcontrollers.
Source: ATmega328P Datasheet (Section 25 – Memory Programming); Wikipedia – Flash memory
EEPROM
Electrically Erasable Programmable Read-Only Memory for non-volatile data storage.
Source: ATmega328P Datasheet (Section 7 – EEPROM); Wikipedia – EEPROM
SRAM
Static Random Access Memory; volatile memory used for runtime data.
Source: ATmega328P Datasheet (Section 8 – SRAM); Wikipedia – SRAM
DRAM
Dynamic Random Access Memory; larger volatile memory requiring refresh.
Source: Wikipedia – DRAM; Patterson & Hennessy (2017). Computer Organization and Design.
Cache Memory
Small, fast memory storing frequently accessed data for CPU.
Source: Patterson & Hennessy (2017). Computer Organization and Design; Wikipedia – CPU cache
Fuse Bits
Configuration bits in microcontrollers that set device behavior (clock source, brown-out detection).
Source: ATmega328P Datasheet (Section 26 – Fuse Bits); AVR Fuse Calculator – Engbedded
Communication Protocols¶
UART
Universal Asynchronous Receiver Transmitter — a serial communication protocol.
Source: ATmega328P Datasheet (Section 19 – USART); Wikipedia – UART
I2C
Inter-Integrated Circuit — a two-wire communication protocol for connecting multiple devices.
Source: NXP I2C Specification; Wikipedia – I²C
SPI
Serial Peripheral Interface — a high-speed synchronous communication protocol.
Source: Motorola SPI Specification; Wikipedia – SPI
USB
Universal Serial Bus — a standard for wired communication and power.
Source: USB Implementers Forum; Wikipedia – USB
CAN
Controller Area Network — a robust protocol used in automotive and industrial systems.
Source: Wikipedia – CAN bus; Bosch CAN Specification 2.0
Ethernet
A family of networking technologies for local area networks (LANs).
Source: IEEE 802.3 Standard; Wikipedia – Ethernet
Bluetooth
Short-range wireless communication protocol for connecting devices.
Source: Bluetooth SIG; Wikipedia – Bluetooth
Wi-Fi
Wireless networking protocol based on IEEE 802.11 standards.
Source: IEEE 802.11 Standard; Wikipedia – Wi-Fi
RS-232
A standard for serial communication transmission of data.
Source: EIA RS-232 Standard; Wikipedia – RS-232
RS-485
A standard for serial communication supporting multiple devices over long distances.
Source: Wikipedia – RS-485; TIA-485 Standard
1-Wire
A communication protocol using a single data line and ground.
Source: Maxim Integrated – 1-Wire Protocol; Wikipedia – 1-Wire
System Classifications¶
Special Purpose System
Designed to perform a specific task only (e.g., microwave controller).
Source: Wikipedia – Embedded system; Barr & Massa (2006).
General Purpose System
Can perform multiple tasks depending on installed software (e.g., personal computer).
Source: Patterson & Hennessy (2017). Computer Organization and Design.
Real-Time System
A system that must respond within a defined time constraint. Delayed response may cause failure.
Source: Wikipedia – Real-time computing; Barr & Massa (2006).
Asynchronous System
A system that operates without strict timing requirements; tasks execute when triggered.
Source: Wikipedia – Asynchronous system; Patterson & Hennessy (2017).
RTOS (Real-Time Operating System)
An OS designed to handle tasks within strict timing constraints.
Source: Wikipedia – RTOS; FreeRTOS Documentation
Programming Tools & Concepts¶
Compiler
A program that converts high-level code into machine-readable instructions.
Source: Wikipedia – Compiler; Aho, Lam, Sethi, Ullman (2006). Compilers: Principles, Techniques, and Tools.
Assembler
A program that converts assembly language into machine code.
Source: Wikipedia – Assembler; Patterson & Hennessy (2017).
Linker
A tool that combines object files into a single executable.
Source: Wikipedia – Linker; GNU LD Documentation
Makefile
A script that automates the build process (compilation, linking).
Source: GNU Make Manual; Wikipedia – Makefile
IDE (Integrated Development Environment)
Software for writing, compiling, and debugging code.
Source: Wikipedia – IDE; Arduino IDE Documentation
Debugging
The process of identifying and correcting errors in code.
Source: Wikipedia – Debugging; GDB Documentation
Simulator
Software that mimics hardware behavior for testing.
Source: Wikipedia – Simulator; QEMU Documentation
Emulator
Hardware or software that imitates another system for running unmodified code.
Source: Wikipedia – Emulator; Barr & Massa (2006).
API (Application Programming Interface)
A set of functions and protocols for building software applications.
Source: Wikipedia – API; Redocly API Documentation Guide
Library
A collection of pre-written code for common tasks.
Source: Wikipedia – Library; Arduino Libraries Reference
Header File
A file containing declarations used by multiple source files.
Source: Wikipedia – Header file; C Programming Language (K&R)
Open Source
Software or hardware whose design is publicly available for modification and distribution.
Source: Open Source Initiative; Wikipedia – Open source
Advanced Concepts¶
Watchdog Timer
A hardware timer that resets the system if the software fails to respond.
Source: ATmega328P Datasheet (Section 10 – Watchdog Timer); Wikipedia – Watchdog timer
Clock Speed
The frequency at which a processor executes instructions (e.g., 16 MHz).
Source: Patterson & Hennessy (2017); Wikipedia – Clock rate
Multitasking
Executing multiple tasks seemingly simultaneously by rapid switching.
Source: Wikipedia – Multitasking; FreeRTOS Documentation
Bit
The smallest unit of data, either 0 or 1.
Source: Wikipedia – Bit; Patterson & Hennessy (2017).
Byte
A group of 8 bits.
Source: Wikipedia – Byte; Patterson & Hennessy (2017).
Variable
A named storage location in memory holding a value.
Source: Wikipedia – Variable; C Programming Language (K&R)
Function
A reusable block of code that performs a specific task.
Source: Wikipedia – Function; C Programming Language (K&R)
Pointer
A variable that stores the memory address of another variable.
Source: Wikipedia – Pointer; C Programming Language (K&R)
Buffer
A temporary storage area for data during transfer.
Source: Wikipedia – Buffer; Barr & Massa (2006).
Stack
A memory region for function calls and local variables (LIFO).
Source: Patterson & Hennessy (2017); Wikipedia – Stack
Heap
A memory region for dynamic allocation during runtime.
Source: Wikipedia – Heap; Barr & Massa (2006).
DMA (Direct Memory Access)
Allows peripherals to access memory without CPU intervention.
Source: Wikipedia – DMA; ATmega328P Datasheet
Brown-Out Detection
A circuit that resets the microcontroller when voltage drops below a threshold.
Source: ATmega328P Datasheet (Section 9 – System Control and Reset); Wikipedia – Brownout
JTAG
A standard for debugging and programming microcontrollers.
Source: IEEE 1149.1 Standard; Wikipedia – JTAG
SWD (Serial Wire Debug)
A two-pin debugging interface for ARM microcontrollers.
Source: Arm Debug Interface Specification; Wikipedia – SWD
PCB (Printed Circuit Board)
A board that mechanically supports and electrically connects electronic components.
Source: Wikipedia – PCB; IPC Standards
Schematic
A diagram representing the electrical connections in a circuit.
Source: Wikipedia – Schematic; KiCad Documentation
BOM (Bill of Materials)
A list of components required to build a product.
Source: Wikipedia – Bill of materials; IPC Standards
References¶
- Patterson, D., & Hennessy, J. (2017). Computer Organization and Design. Morgan Kaufmann.
- Barr, M., & Massa, A. (2006). Programming Embedded Systems. O’Reilly Media.
- Kernighan, B., & Ritchie, D. (1988). The C Programming Language. Prentice Hall.
- Aho, A., Lam, M., Sethi, R., & Ullman, J. (2006). Compilers: Principles, Techniques, and Tools. Addison-Wesley.
- Microchip Technology. (2020). ATmega328P Datasheet.
- Raspberry Pi Foundation. (2023). Raspberry Pi Documentation.
- Arduino. (2023). Arduino Reference. https://www.arduino.cc/reference/
- Espressif Systems. (2023). ESP32 Technical Reference Manual.
- NXP Semiconductors. (2021). I2C-bus Specification and User Manual (UM10204).
- FreeRTOS. (2023). FreeRTOS Documentation. https://www.freertos.org/
- GNU Project. (2023). GNU Make Manual. https://www.gnu.org/software/make/manual/
- IEEE Standards Association. (2023). IEEE 802.3 and 802.11 Standards.
- Open Source Initiative. (2023). Open Source Definition. https://opensource.org/osd/
- GeeksforGeeks. (2023). Computer Science Portal. https://www.geeksforgeeks.org/
- Wikipedia. (2023). Various Articles. https://www.wikipedia.org/