1/27
Flashcards covering key vocabulary from lecture notes on embedded systems software design.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Embedded Systems Software
Software in embedded systems interacts directly with hardware and operates under strict timing, memory, and power limitations.
Embedded Software
Code specifically written to run on embedded systems that interacts directly with hardware through I/O ports, memory-mapped registers, and interrupts.
Bare metal programming
A type of software development where applications interact directly with a system's hardware, bypassing any operating system or virtualization layers.
Firmware
The low-level software that directly interfaces with the hardware components, stored in read-only memory or flash storage.
Real-time operating system
Designed to provide minimal services necessary for running embedded applications, managing hardware resources and meeting real-time requirements.
Middleware
A layer of software that provides additional services needed by application software, such as communication protocols and device drivers.
Application Software
Software designed to accomplish specific tasks that the embedded system is intended for, interacting with the operating system and hardware.
Sequential or Superloop Model
Organizing tasks into a continuous loop where each task executes sequentially in a predetermined order.
Event-Driven Model
Organizes system behavior around the occurrence of external or internal events, triggering specific functions or routines.
Interrupt-Based Model
Uses hardware or software interrupts to respond immediately to specific conditions or events, suspending the main program temporarily.
RTOS-Based Model
Introduces an operating system layer which schedules tasks and manages time, memory, and resources.
Threads
Schedulers
Semaphores
Timers
Queues
Concepts in RTOS-based model
Separate units of execution.
Determine which task runs when.
Manage resource sharing and prevent conflicts.
Trigger actions at defined intervals.
Used for inter-task communication
Limited RAM and ROM
Embedded systems often operate with limited memory resources.
The RAM is used for the Stack, Heap, and Buffers. The ROM is used for firmware, lookup
tables, and constant data.
Static Memory Allocation
is preferred because it is predictable and avoids memory fragmentation
Dynamic Memory Allocation
can be risky due to memory leaks and heap fragmentation, especially in systems with long uptime or safety requirements.
Optimization Technique
It is advisable that programmers will reuse memory where possible such as minimizing global variables and use smaller data types
Deterministic Behavior
Embedded software often needs predictable execution timing, especially in real-time systems. Tasks must execute within strict time limits to meet deadlines (e.g., respond to sensor input in milliseconds).
Software Delay
loops are inefficient and inaccurate because they depend on clock speed and processor load
Hardware Timer
provide precise time tracking and are better suited for generating delays, scheduling, and timeouts.
Task Scheduling
In RTOS-based systems, task priorities and deadlines must be carefully managed. Consider the worst-case execution time (WCET) of tasks to prevent deadline misses.
Power considerations
Power Budget and Energy Constraint
Usage of Low-Power Operating Modes
Peripheral Power Management
Editor
the development environment where a programmer writes the software in the programming language of choice, which becomes the source code for the device.
Compiler
transforms the code into low-level executable code that is specific to
the target microprocessor hosted by the device.
Assembler
converts human-written assembly code into machine language.
Debugger
a tool that allows a developer to thoroughly go through the code and makes sure there are no errors
Linker
that pulls together and formats low–level executable code in a
manner so that it executes properly on a target device
Libraries
rewritten program that is read to use and provides specific
functionalities. These can be system-provided or user-provided
Simulator
helps users see how the code works in real time. The input values can be changed to see corresponding outputs and parameter changes.