Midterm #2 Review Topics
The following list is intended as a general guide of new topics to
review. The exam may cover topics not explicitly listed here. In
particular, we may revisit topics listed on the first midterm review
on which additional light has since been shed.
- Book and lecture topics (mostly Chapters 7-10)
- semaphores in an RTOS
- queues in an RTOS
- other queue-like things: pipes and mailboxes
- delaying tasks
- the heartbeat timer
- clock jitter, challenges of accurate timing
- time-out functionality in RTOS function calls
- timer callback functions
- events, event management in an RTOS
- tradeoffs between semaphores, queues, and events
- using malloc/free vs fixed-size buffer management
- problems with RTOS function calls from ISRs, alternatives
- spotting bugs in code (problems at end of Chapter 7)
- bug frequency in typical code; added challenges of developing, debugging real-time code
- increasing customer confidence: process quality standards (ISO 9000, CMM)
- Therac-25: case history of problematic software, lessons learned
- application code design principles (8.1, 8.2)
- supplemental design example: USB driver for HP Inkjet printers
- problems with too many or too few tasks
- preferred task structure (single blocking point, etc.)
- relative overhead of task creation, task switching, other RTOS services
- design principles reflected in detailed example in 8.3
- encapsulating semaphores and queues
- hard real-time scheduling issues
- academic contributions: principally rate monotonic scheduling
- jitter, variability in task periods
- uC/OS scheduling approach with constant overhead
- saving memory space, considerations for code and data
- power saving modes commonly found in microprocessors, design implications
- terminology: cross-compilers, cross-assemblers, linkers, loaders, locators
- address resolution: mapping variables and functions to addresses
- mechanisms to map code and data to ROM and RAM
- segments, what they are and why they are important
- assigning segments to memory address ranges
- special cases: initialized data, constant strings, executing out of RAM
- techniques of getting embedded software into the target system
- terminology: ROM emulators
- writing flash-resident code that can load new updates of itself
- organizing code to facilitate testing and debugging
- limitations and advantages of host-based testing
- terminology: test scaffold code, script file parsers
- limitations and advantages of instruction set simulators
- "assert" macros: usefulness, implementation
- useful tools: scopes, logic analyzers, in-circuit emulators,
software-only monitors
- challenges in extracting the data you want: signal pins very
close together, ASICs, on-chip caches
- Lab and HW topics
- synchronization and mutual exclusion: implementing acquire
and release
- special hardware support: test&set and swap instructions
- software solutions
- C topics
- arrays and structs
- pointers (to ints, arrays, structs, functions, pointers, ...)
- linked lists
- debugging code: common cases
- mapping of C constructs to assembly
- function calls, parameter passing, function return values
- switch statements
- global, local, and static local variables
- YAK structure and organization
- functional specifications
- operational characteristics
- organization of application code
- required conventions in application code
- execution details of application code
- saving and restoring state in context switches
- tradeoffs of alternatives to storing on stack vs ISR
- tradeoffs of saving at different points in call sequence
- stack frame and return address consistency
- using semaphores, queues and events in application code
- implementing semaphores, queues, and events; kernel internals
- potential problems in using queues, semaphores, and events
- general understanding of how to add new features and functions
- Assigned case studies (from supplemental reading)
- Operational details of underlying technology
- Facts of specific case study (what happened, why important?)
- Implications (technological, social, political, etc.)
Last updated 26 August 2019