Skip to content

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

  1. Patterson, D., & Hennessy, J. (2017). Computer Organization and Design. Morgan Kaufmann.
  2. Barr, M., & Massa, A. (2006). Programming Embedded Systems. O’Reilly Media.
  3. Kernighan, B., & Ritchie, D. (1988). The C Programming Language. Prentice Hall.
  4. Aho, A., Lam, M., Sethi, R., & Ullman, J. (2006). Compilers: Principles, Techniques, and Tools. Addison-Wesley.
  5. Microchip Technology. (2020). ATmega328P Datasheet.
  6. Raspberry Pi Foundation. (2023). Raspberry Pi Documentation.
  7. Arduino. (2023). Arduino Reference. https://www.arduino.cc/reference/
  8. Espressif Systems. (2023). ESP32 Technical Reference Manual.
  9. NXP Semiconductors. (2021). I2C-bus Specification and User Manual (UM10204).
  10. FreeRTOS. (2023). FreeRTOS Documentation. https://www.freertos.org/
  11. GNU Project. (2023). GNU Make Manual. https://www.gnu.org/software/make/manual/
  12. IEEE Standards Association. (2023). IEEE 802.3 and 802.11 Standards.
  13. Open Source Initiative. (2023). Open Source Definition. https://opensource.org/osd/
  14. GeeksforGeeks. (2023). Computer Science Portal. https://www.geeksforgeeks.org/
  15. Wikipedia. (2023). Various Articles. https://www.wikipedia.org/