EMBEDDED SYSTEMS STUDY GUIDE
Arrow operator
"->" Dereference operator is a prefix (e.g. *thisPtr) So, (*thisPtr).member is a bit verbose Arrow Operator equivalent to dereference and member access thisPtr->member == (*thisPtr).member
What is information?
"Any entity or form that provides the answer to a question or resolves uncertainty"
What does Shannon's theorem mean for sampling a given frequency?
"If a function x(t) contains no frequencies higher than B hertz, it is completely determined by giving its ordinates at a series of points spaced 1/(2B) seconds apart." If a sampling rate is 2 times faster than fastest analog signal, the original signal can be reconstructed from the sampled signal
What is the compilation flow?
(Pre-processor, compiler, assembler, linker)
I2C (Inter-Integrated Circuit (I-squared-C))
- Address-based 2-wire communication interface - has only 2 data lines - Uses addresses to specify which chip listens - Address is 7 bits followed by a write bit - Write bit specifies if action is to read or write at register address
Linker
- Combines all object files and resolves addressing issues
What is a sensor? What type of signal typically comes out of a sensor (i.e. analog or digital)
- Component that measures physical phenomena Usually provides an Analog signal - Need to convert to digital Raw analog signals carry information Signal processing enables understanding of that information
Sampling?
- Converting Analog to Digital Values
Initial State
- Defines the behavior of the system on startup Initializes variables, sets outputs, prepares for input - Typically depicted as S0 or with external arrow pointing in
What is signal bias? How do you remove signal bias?
- Signal average is not centered at center of ADC value i.e. For ADC with range [-1,1], if ˆx != 0, biased in some direction For periodic signals (e.g. Alternating Current) removing bias often referred to as removing the DC (Direct Current)
What is a sample?
- Single Measurement in time
Test Vectors
- input combinations for testing Test each of the state transitions at least once Make sure border cases are represented Include additional test vectors of each type
What is a Task Control Block?
- structure containing tasks/processes
Gain
1 - buffer
What is scheduling? Name 2 and explain advantages/disadvantages for RTOS
Arrange to plan to take place at a particular time" Scheduling (Computing) - "Method by which work specified is assigned to resources to complete the work"
UART (Universal Asynchronous Receiver-Transmitter)
Asynchronous - No shared clock Data transfer is unidirectional Transmission Speed - Usually given in baud (bits per second) Receiver & transmitter have foreknowledge of transmission speed Data frame - Data transferred byte-by-byte Each frame is bordered by start & stop bit(s)
Serial Interfaces
Bits transferred one after another
Black Box vs. White Box
Black-box testing - Only check for valid output from test vector White-box testing - Examine proper state transitions & internal variables during operation White-box testing more likely to find issues Requires higher overhead in developing test mechanisms
Concurrent State Machines
Block Diagram - Used to demonstrate systems composed of concurrent SMs Each state machine has its own set of states (including initial state) Each state machine controls separate output
Dynamic Memory
C allows allocation of dynamic memory during execution Useful for: • Allocation of arrays • Allocation of memory to hold data in structures
AtoI
C function to convert from ascii to integers
Why is C the most predominant language?
C/C++ are built into development environments and compilers, industry standard, not likely to go away!
What is the most predominant language for embedded systems?
C/C++ are still the dominant languages
What are two philosophes for RTOS design?
Event-Driven - Context switch on event of higher priority • Time-Sharing - Context switch on regularly clocked interrupt
What is the trade off between precision and speed of an ADC? Why are they inversely related?
For instance, while you can get successive approximation ADCs that range from 8 to 16 bits, you won't find the 16-bit version to be the fastest in a given family of parts. The fastest flash ADC won't be the 12-bit part, it will be a 6- or 8-bit part.
Attenuator
Gain < 1
Variable Quantifiers - register
Hint to compiler that a variable will be used frequently Compiler free to ignore the hint "&" operator does not work with these variables Why? If ignored, variable equivalent to an "auto" except the "&" operator will not work Rarely used - modern compilers do better optimization
Application specific
How is the functionality different than PCs? • Implements specific functions • PCs are general purpose Performance? • Must meet real time constraints (e.g. brakes need to activate) • PC - can handle delay or crash Operation? • Processing in response to input stimuli • PC - processing in response to human/batching
How are an array identifier and a pointer to a block of memory different?
Identifier name points to first element Pointer points to any element
Pointer Arithmetic
Incrementing a pointer increments by sizeof(objectiveType)
How do interrupts enable event-driven programming constructs?
Interrupt Event - What triggers the interrupt • Interrupt Request - Flag set in register asking for handling
How does it affect the utilization calculation?
Jitter + Multitasking + Hyperperiod can cause potential missed deadlines
Can you explicitly set an enum variable as an integer that is outside the normal range?
Unfortunately yes... enum MONTHS = {JAN=1,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC}; enum months thisMonth; thisMonth = AUG; //ok, thisMonth=8; thisMonth = 42; //unfortunately, also ok
What is definition?
allocates memory • Amount depends on variable type
What does typedef?
can be used to give new name to existing type EX: typedef unsigned int my_type; my_type this_variable=5;
Give an example of a non-embedded system
computers, mobiles, tablets
Counters
count arbitrary signal changes
Timers
count clock cycles
What is a scheduler?
determine what tasks should run Tasks in TCB ready queue are selected based on scheduling algorithm
What is a signal?
functions conveying information about behavior or attributes of some phenomenon"
Name ways an RTOS is different than a desktop OS.
has time constraints that must be met Hard Real-Time - Unmet condition = System Failure • Soft Real-Time - Unmet condition = System Degradation • Firm Real-Time - Degradation leading to failure
Write a line of code that declares, defines, and initialized a variable:
int example2 = 5; //def. decl. and init.
Sequential Code in a SM
k can be considered as a single state SM with a self-transition Block needs to run to completion in the given time-period
Objective type
type of variable pointed at
Border cases
which are fringe or extreme cases such as all inputs being 0s and all inputs being 1s, and then various normal cases
Applications of PWM:
• Sensor output • Servo Input • LED dimming • Power Delivery
Quantization error?
- Difference between measured value and discrete value
Dispatcher?
- Gives control of CPU to process selected by scheduler Also handles interrupts Must: • Switch Context • Call function for new task
What is measurement error?
- Instantaneous value measurement error e.g. Voltage measurement within ± 0.05V
Parallel Interfaces
- Many binary signals to represent word-length values - D0-D7 represent a single byte to be transferred
Aliasing Error?
- Missing signals by sampling too slowly
What is the internet of things?
- Network of devices, and connectivity to interact & exchange data
What is the value of a const that is not explicitly initialized at declaration?
0 • const float PI; //valid, PI = 0
Successive approximation algorithm
1. Compare against half of range 2. Continue narrowing until limited by LSB 3. Error upper bounded by 1 LSB • Assuming value just less than next LSB, and no nearest bit comparison
What is the maximum value of an unsigned char?
A char is stored in 1 byte 256?
What is an Analog to Digital Converter?
A2D/ADC/(A/D), A to D - Device to convert physical quantity (voltage) to a discrete (digital) value
TDMA
Advantages • Nodes only need to listen during frame - save power • Guaranteed no collision Disadvantages • Lower Throughput - A node may not need to use their frame
Difference between Analog and Digital signals
Analog - Continuous in time and amplitude Digital - Discrete in time and amplitude
There are 6 Variable Quantifiers:
Auto, Register, Extern, Static, Volatile, Const
What is entropy? How does entropy relate to signal processing?
Average amount of information produced by stochastic source of data
What are some advantages of interrupts over software flags?
Avoid writing code that must frequently check status of pins/flags Polling = "busy wait" - CPU executes executions waiting for an event Example: while(!Timer1CompareFlag); //Wait for Timer1 to match
What is the difference between a string and a char array?
C doesn't have a "string" type Implemented using char arrays & "string literals" To be a "string", a char array must be null terminated • char string1[] = "hello world!"; • char string2[] = {'h','e','l','l','o',' ','w','o','r','l','d',' !','\0'}; • char string3[5] = "hello"; //Error: 6 characters in string literal • char string4[10] = "hello"; // "hello\0\0\0\0\0
What are advantages/disadvantages of each of those technologies?
CSMA Advantages • Low latency if channel is not busy • No need for centralized control Disadvantages • Busy channel causes many collisions - low throughput & high energy waste
Polling vs Interrupt Flag
Can poll from register & read value while(COUNTER_REG < VALUE); Can be used to perform timer-polling based delay Reasonable & predicable accuracy compared to software delay Especially useful when other actions are being performed (e.g. tick functions)
What is an interrupt service routine (ISR)?
Code executed to handle the interrupt event
What is an actuator?
Component with in input that converts input to energy e.g. • Servo - Kinetic Energy • LED - Light Energy • Thermal - Heating elements
What is the relationship between interrupts and tasks for concurrent FSMs?
Concurrent tasks - Tasks executed during same time window How did we implement concurrency? State machines with different tick frequencies
Compiler
Converts (nearly) machine independent C code to machine dependent assembly code
What is a mixed-signal transform?
Converts analog signal to digital signal DAC is also a mixed-signal transform - converts digital to analog
What is a Kernel?
Core" OS functions • Perform Scheduling - Handled by scheduler • Dispatch Processes - Handled by the dispatcher • Facilitate inter-process communication Must structure tasks to pass between scheduler/dispatcher/OS
Capture Register
Dedicated hardware for capture time of event When external event occurs, counter register value latched to capture register
What is jitter?
Delay between time task was ready & when it starts executing
Differences from desktop programming?
Differences from desktop programming: • Input/Output • Math • Memory and Hardware • Code Development
Analog/Digital
Digital - Discrete, discontinuous representation of information i.e. [..., -100, -99, ..., 0, 1, 2, 3, ..., 100, 101, ...] Contrasted with Analog - Continuous signal i.e. Soundwave Digital can be used to approximate analog signals Some loss of precision
Difference between continuous and discrete
Discrete data can take on only integer values whereas continuous data can take on any value.
Software Timer Extension
Effective timer/counter range can be extended using software and the overflow bit Example: count 10.5 *max counter • Start counter, value = 0 • Counter overflows (overflow bit set) • Software detects overflow, increments value resetsoverflow flag • Value reaches 10, ISR set on compare register • Counter hits 1 2 max, interrupt occurs
Pulse Width Modulation
Encoding message through pulsing signal
State Declaration
Enums are useful for defining states e.g enum elevatorStateList = {E INIT STATE, BUTTON PRESSED, ...} These labels are descriptive, can be used for switch statements in Tick function
What is thread reentrancy? What is thread safe?
Function can be interrupted in exeuction and run again (re-entered) before previous invocations complete Other threads or processes can run safely at same time. For single core, a different task can preempt and execute fully with no effect on other tasks
Amplifier
Gain > 1
Greatest Common Divisor
Good choice for tick frequency e.g. 1 second for above example
Compare Register
Hardware for control-defined comparison Detect if counter <, >, or == compare register Can: • Trigger interrupt • Set flag for polling • Drive changes on external pins • Reset counter register
Debouncing
Imperfect contact can create "glitches" Use delays to verify signal is steady
Event-Driven
Input events drive programs/threads Typically a main loop that listens for events, and calls "callback" function when event is detected Can be implemented using hardware interrupts
What is interrupt priority?
Interrupt events can co-occur Especially when waking from a sleep mode
Queues & Volatility
Interrupts may disrupt push/pull operations and corrupt data items DisableInterrupts() - Prevent the current operations from being interrupted Should be only the critical portion of code - Called atomicity EnableInterrupts() - Allows interrupts again
What is cross compiling is important?
It's a very useful technique, for instance when the target system is too small to host the compiler and all relevant files. A cross compiler is necessary to compile for multiple platforms from one machine. A platform could be infeasible for a compiler to run on, such as for the microcontroller of an embedded system because those systems contain no operating system.
Signed/Unsigned
Keep up with the signed/unsigned nature of values Representation between systems should be documented to prevent miscalculation This includes type of sign (e.g. Sign bit, one's complement, two's complement)
Variable Quantifiers - extern
Let compiler know of global variable in another file extern keyword is for declaration not definition extern keyword does not create storage Storage must be created with global definition
What are limits to physical sensors?
Limitations: • Range - How wide the physical quantity can be measured • Resolution - How specific can the measurement be • Accuracy/Precision - How close is measured value to actual value • Raw - Typically measuring voltage or other physical quantity that relates to the actual value - Requires processing
What is clipping?
Loss of signal values beyond input range
Name 2-3 wireless technologies for connecting devices
Machine-to-Machine (M2M) Communication - Systems exchange information w/ no user interaction Caller ID (1968) - Phones needed to process analog waveform to exchange identifier Smart Meters & Load balancing (1977) → precursor to smart grid / modern smart meters Cellular M2M (1995) - GSM module "M1" - share data over cellular network Device-to-Device (D2D) - Direct M2M connection without traversing WAN/core network Either cellular or unlicensed spectrum (e.g. WiFi/Bluetooth)
What is dynamic range? How does it differ from signal range?
Measure of the precision of a device w/ respect to range of values it can convert Range = peak-to-peak gap Dynamic range = Ratio of max range to minimum precision of the converter
What is gain?
Multiple that signal is multiplied by
How do you prevent/reduce timer overrun?
Need a construct for detecting timer overruns
Why should ISRs be short & atomic?
No Nested Interrupts, Generally implemented inside a function with no parameters & no return value
Can C functions have overloading?
No, C does not have function overloading Function is fully and uniquely identified by name No method overloading There can only be one main() function in a C application
What is preemptive scheduling vs. non-preemptive scheduling? What are advantages of each? What is a sleep mode? Why would you use a sleep mode?
Non-preemptive - no interrupting Preemptive - interrupts can occur ften have varying wake-up times - jitter overhead Timed events can use timer interrupts to wake from sleep (& account for wake-up)
What is signal underloading?
Not enough gain; ADC not sensitive
What is predictability? Why is it an important metric for RTOS?
OS will complete tasks by deadline Predictability/Reliability more important than speed
Name a way that interrupt priority may be implemented.
Often IVT implemented as list of unconditional jumps at top of program memory
Time ordered behavior
Outputs depend on order of input Many real-world computation challenges involve time-ordered behavior
Why are microcontrollers used for most embedded systems?
Peripheral Loaded • ADCs, DACs, GPIOs, Serial, Timers, etc... Cheap • ∼ $1 for 8-bit processor Low Power • ∼ 300µA operation (AA battery for 275 days) • < 300µA sleep (AA battery for 225 years) Programmable - Usually Assembly, C, C++
Precision
Precision of a number depends on width of the storage(in bits), and the variability of the quantity being measured Going beyond that number causes overflow/underflow
Preprocessor
Prepares file for compiler, handles processing macros, source selection, preprocessor directives, and file includes
What is aliasing noise? What are solutions for removing aliasing noise?
Presence of unexpected signal in the signal path Source of noise if unhandled Example: Car wheel in commercials Two approaches: 1. Sample fast enough to digitally eliminate noise - Overampling 2. Filter higher frequency signal Oversampling is expensive in terms of storage & processing
What is declaration?
Puts the variables name into the namespace • No memory is allocated • Sets identifier and type
What impact does the concept have on Embedded Systems development moving forward?
Real Time Operating Systems (RTOS) and microprocessors and microcontrollers, followed by memory footprints and networking, open source communities and developers.
What does RTOS stand for?
Real-Time Operating System Real Time - has time constraints that must be met
Handshake
Request/Acknowledge pattern with two 1-bit global variables
Voltage Divder
Resistor Sensors - Thermometers, Photoresistors, Force sensors, etc... Measure resistance through two known quantities Derived from Ohm's Law (w/ assumptions)
Measurement Circuits
Sensor manufacturers create elements that have a predictable response to a stimulus These responses modulate a quantity that can be sampled by a digital system Typical quantities: • Resistance • Capacitance • Inductance
Round Robin
Serialization of concurrent tasks is called multi-tasking Execution of each in every period is called "round-robin" task execution
Why is the capture register necessary?
Software driven capture may miss one or more timer counts before reading register
Shared Input/Variables
Some systems require sharing between concurrent tasks Example: Smart Stop Light Concurrent separate state machines: • Camera to detect presence • Stoplight controller Why separate tasks instead of one big state machine? "Separation of concerns" - Let each task take care of its behavior Build system from multiple concerns - Abstract some details when assembling big system
What about multiple intervals?
Some systems will have different interval requirements Choose a tick frequency that is evenly divides into all tasks Example: Stoplight turns Green after 25 seconds, yellow after 20 seconds, red after 4 seconds
SPI (Serial Peripheral Interface)
Synchronous unidirectional master-slave data transfer Master device configures clock, clock polarity, and when communication occurs Data frame - Frame started by a logic 0 on the Source Select line Determines which slave device is to listen Data is transferred bit-by-bit, latched at either rising or falling edges
What is a transform?
Takes input, modifies, & generates output
Queues/Message Passing
Tasks communicate through packets (messages) of data/commands
What is timer overrun?
Tasks have a non-negligible finite execution time If execution time + overhead > tick frequency, can miss deadlines Need a construct for detecting timer overruns
Capture/Convert Process
The process is always the same: 1. Capture - Define the process in terms of an FSM 2. Convert - Represent the FSM through C code 3. Iterate - Any changes that need to made should start at the FSM level, not the C level
Why is header guarding important?
To avoid compiler error - "multiple name definitions" To avoid errors, .h files should be guarded
What is signal overloading?
Too much gain; signal outside range of ADC
What is throughput? Latency? Fairness?
Total network bits-per-second Average time form packet creation to reception Do devices receive equal share of resource (airtime)?
What is an amplifier?
Transform - Multiplies signal by some value
Tasks
Unique continuously executing behavior e.g. • Flashing LED • Sample Sensor Input at given frequency • Refresh LCD Display Concurrent Tasks - Tasks that execute during the same time window
How do you reduce utilization?
Utilization is composed of two factors: • WCET Task Time • Tick Frequency To reduce utilization, one of these factors must change WCET Task Time - Optimize Code or split function into two states Tick Frequency - Decrease tick frequency
Loader
When executed, loads executable into memory
What is the difference between break and continue?
While "break" - Pop out of while loop While "continue" - Jump to end of control block Pressing "Break" temporarily stops program execution and highlights the next statement to execute. Pressing Continue resumes normal program execution.
Know how a successive approximation ADC works
a type of analog-to-digital converter that converts a continuous analog waveform into a discrete digital representation via a binary search through all possible quantization levels before finally converging upon a digital output for each conversion
Mealy Actions
allows actions on transitions as well as on states
What is signal processing?
analysis, synthesis, and modification of signals"
State-Diagram
drawn model of the state machine
Tick Function
executes different set of code depending on current state switch/case statement with enum helps conditional execution Each state will evaluate transition conditions and actions
Variable Quantifiers - static
extends lifetime of variable to program operation May not be accessed outside of declaring file, even if global
What is preempting? What is context? What is context switching?
interrupt a currently executing task To preempt a task: • Save state of process • Save program counter • Save any registers These in total are called the "context" saving of one state and loading another Context switching creates overhead in multitasking/preemption
GPIO (General Purpose Input Output)
is a type of pin found on an integrated circuit that does not have a specific function. While most pins have a dedicated purpose, such as sending a signal to a certain component, the function of a GPIO pin is customizable and can be controlled by software Digital signal pin with behavior definable at runtime Behavior defined by direction (input/output), enabled/disabled, interruptible, state of output (high, low, high-impedance)
Continuous in time/amplitude
known as a continuous-time signal or an analog signal
Actions
modifications to internal variables or outputs on entry to state e.g. S0 turns off LED0, S1 turns on LED0
Prescaling
modifies rate at which timer changes Allow timer/counter to cover larger range
What is utilization?
period of time in use Can be used to predict if timer overrun likely to occur
GPIO Circuitry
provides a clean interface for digtally reading/writing individual pins In Atmel, these pins can be addressed at memory-mapped registers PORTx, PINx, DDxn MSP430 has PxDIR, PxIN, PxOUT, PxSEL Arduino has PinMode, digitalWrite, digitalRead
Quantization
representing a real number in a given number of bits
"Run to completion"/States that wait
sequential block
What is digital signal processing?
signal processing in the discrete domain
What is an interrupt?
signals a request to CPU to handle an event CPU can grant request & jump to separate instruction memory to handle When finished, CPU returns to code running prior to interrupt
const modifier placement
slide 49 in lecture 5
Use pseudocode to demonstrate a basic TCB
typedef struct tcb{ void(*taskPtr)(void * taskDataPtr); //Task function & argument void *taskDataPtr; //Pointer for data passing void *stackPtr; //Individual Task's stack unsigned short priority; //Priority Information struct TCB * nextPtr; //If linked list struct TCB *prevPtr; //If doubly linked list } TCB;
What is one difference between designing for embedded vs non embedded?
• Embedded in a system • Real-time constraints • Resource Constraints • Application Specific
What are potential interrupt sources?
• Input pin change • Hardware timer overflow/compare-match • Serial Peripheral Communication • UART/SPI/I2C - Receive/Transmit Ready/Complete
What is a good strategy for keeping code thread-safe and reentrant?
• Local Variables - only using local variables makes code reentrant
Name three types of processors that may be used for embedded systems
• Microcontrollers (e.g. MSP430, PIC, Atmel) • Digital Signal Processor Controllers • Microcomputers • FPGAs • ASICs
Name 3 common kernel designs for embedded systems
• Polled Loop - Single instruction tests a flag for event • Cyclic Executive - Round robin execution of short processes to give illusion of concurrency • Cooperative Multitasking - Multiple tasks executed in state-driven fashion (code-driven finite state automata) • Interrupt-Driven System - Main program is a single jump-to-self instruction (e.g. while(1);) Short processes executed by ISRs • Foreground-Background - Interrupts do timely processing of external events - Set up process for main program
What are some advantageous traits of RTOSes?
• Scheduling Algorithms supported • Inter-process communication methods • Preempting (time-based) • Separate process address space • Memory protection • Low memory footprint (both RAM and program memory) • Timing precision • Debugging and Tracing
What are some resource constraints for embedded systems?
• Size/Form Factor • Memory Capacity • Disk Capacity • Display • Energy • Environment (vibration, temperature, radiation) • Cost!
What is the difference between hard-real time and soft-real time?
• Soft Real-Time - Failure to meet time constraint = Degraded performance • Hard Real-Time - Failure to meet time constraint = Failure
Freeing only part of data structure
• Deallocates memory pointed to by p • p must point to previously allocated memory free() returns dynamically allocated memory to the heap Freeing NULL pointer has no effect Failure to free() memory is known as "memory leak"
What is one advantage of #define compared to const modifiers?
#define • Pro - no memory is used for the constant • Con - cannot be seen when code is compiled Removed by pre-compiler • Con not real variables, have no type const variables • Pro - real variables with a type • Pro - Can be examined by debugger • Con - take up memory
Testing a pointer
(NULL on return fail) malloc(), calloc(), realloc() return NULL if not satisfied Validate the return value i.e. int* myArrPtr = malloc(10*sizeof(int)); if(myArrPtr==NULL) //DO SOMETHING
Binary
- 0 or 1 - Building block of digital systems Single binary values (bits) linked together to create larger abstractions
How is identifier different from a variable name?
...Identifier particularly names a 'variable, function, structure, enum, class etc'. An identifier distinctly identifies an entity in a program while its execution. Two identifiers cannot have the same name in a program. Variable is a "name given to a distinct memory location". This named memory location contains a value which may be modified while program gets executed. In C, variable must be declared at the beginning of a program whereas, in C++, a variable could be declared anywhere in a program. Variables can be 'local', 'global' or 'reference' . Local variables are declared inside a function; global variables are declared outside a function. Reference variables are those which provide an "alternate name" for the previously defined variable. If a variable is referenced to another variable, both the variables can be used alternately to represent that variable. If a variable accepts the value of an argument in a function, these variables are called 'formal parameter'.
What is header guarding?
A .h file may include other .h files • .h files may be included more than once • Compiler Error - "multiple name definitions" To avoid errors, .h files should be guarded • #ifndef #endif directives around header file Other compiler directives: • #ifdef - if defined • #else • #elif - else if
What is a cross-compiler?
A compiler that runs on one platform but outputs code for another target machine (e.g. Intel compilation of microcontroller code to run on embedded architecture)
What is a microcontroller?
A microcomputer on a single chip. It brings together the microprocessor core and a rich collection of peripherals and I/O capability
itoA
C function to convert from integers to ascii
Macros
C provides macros as an alternative to small functions • More common prior to C99 (inline functions) Handled by preprocessor Inline functions are usually better Macro format • #define NAME(params (if any)) code here • Note: no space b/w name and left paren a process where an identifier in a program is replaced by a predefined string or value. #define is a preprocessor statement and is used to define macros. Syntax: Form 1 : (simple macro) #define identifier predefined_string or value Example : #define pf printf
Transitions
Change in status of the internal system Reflected by transition from one state to another Transition can re-enter the same state Example: vending machine - add coin, but still not enough to buy would stay in the same state with updated "value" variable
Byte Representation
Computer Architectures started to use 8-bit bytes as the basic storage size Popularized by 1970s microprocessors (Intell 8008, predecessor of the 8080 and 8086) Arithmetic units/registers increased number of bits, but terminology of the Byte stuck A byte can represent 256 discrete values Can represent any 256 values determined by programmer To take advantage of logic, usually linearly continuous so adder circuits work Many exceptions, including ASCII 'A' + 'C' == ?
Assembler
Converts assembly language to machine language of an object relocatable file (addresses not all resolved)
Self referential structs
Create powerful data structures when struct data member is a pointer to same type
What is the difference between declaration, definition, and initialization?
Declaration - Puts the variables name into the namespace Definition - Allocates memory Initialization (optional) - Sets initial value to be stored in variable
Time-Interval Behavior
Events must be separated by specific intervals of time
Type Casting
Explicit - unary cast operator - "(type)" e.g. int i = (int)3.4; // i = 3 Implicit - when assignment/operators don't match e.g. int i1=3, i2=4; float f1 = i1/i2; // f1 = 0, should be 0.75 if explicit casts
Global vs. Static How can these variables be maintained?
Global variables Disadvantage - Can be modified outside of the tick function Static variables Disadvantage - Can only be modified in tick function Choose variable scope that makes sense in your application
Default Case
If you are using a switch/case statement for the tick function, the default case shouldn't ever be called Good practice to use it as a way to reinitialize system in case state variable is corrupted
Give an example of an embedded system
Industrial Robots, GPS Receivers, Digital Cameras, DVD Players, Wireless Routers, Set top Boxes, Gaming Consoles, Photocopiers, Microwave Ovens, MP3 Players
Demotion
Integral type → Integral type tries to shorten Bit truncation, or undefined if value cannot be stored Floating type → Integral type attempts to truncate fraction • NOT ROUNDING! • int i = 1.5; //i = 1 Unsigned → signed can be very dangerous! unsigned int j = -1; // j = maximum int value
Sequential Computation
Many programming languages are built to perform sequential computation Good at data processing, not meant for time-ordered behavior C follows a sequential computational model Each statement executed one after another
Maintaining Variables
Often, states will want to share variables & have variables exist between ticks Example: Vending machine Initial state sets value = 0 Count state adds value of coin to value Purchase state reduces value by cost of item Refund state gives coins back until value == 0
What is initialization?
Sets initial value to be stored in variable
Inline Functions
Short functions may be defined as "inline" • Suggestion to compiler that calls to the function should be replaced by body of the function • Suggestion, not a requirement Inline functions provide code the structure and readability advantages of using functions without overhead of actual function calls • i.e. inline bool isEven(int n); inline is more important in embedded environments than in other environments https://www.geeksforgeeks.org/inline-functions-cpp/
Structs vs Union
Similarities: • Syntax nearly identical • Member access nearly identical Differences: • Struct members have own memory • Size of struct at least as big as sum of sizes of members • Members of union share memory • Size of union is size of largest member
What variable modifier will initialize a variable on declaration:
Static variables are initialized to zero upon memory allocation • Good style to explicitly code it to make clear that zero initialization was intended • May initialize to other constants • Exception - pointers variables initialize to NULL
Struct Storage in Memory
Struct elements stored in order they are declared in Total size reserved not necessarily sum of size of elements • Some systems require variables aligned at certain memory addresses • Requires padding between member variables • Reordering of members may reduce padded bytes Rule of thumb: Place larger byte members at the beginning of definition
Text (ASCII/Unicode)
Text is stored in C using ASCII (which we have already covered) In practice, may need to store more than Roman characters Unicode - Character set with ∼120,000 characters Commonly used Unicode Schemes: UTF-8, UTF-16, UTF-32
Bit Fields
To save space, struct elements may be bit-packed Known as bit fields struct weather{ unsigned int temperature : 5; unsigned int windSpeed : 6; unsigned int isRaining : 1; unsinged int isSunny : 1; unsigned int isSnowing : 1; }; Above is 14 bits - uses 2 bytes Almost everything about bit fields is implementation specific Depends on machine & compiler Bit fields may only be defined as (unsigned) ints Bit fields do not have addresses (i.e. & operator does not work) are a structure that defines the exact number of bits each member of a structure will use
Determinism/ Mutually Exclusive
Transitions in a state must be mutually exclusive i.e. An FSM is only in one state at a time
What is the difference between scope and lifetime?
Variable "scope" refers to part of the program that may access the variable • Block scope - variables declared in {} are visible in that block • Nested-Bock - Inner block takes precedence, has access to outer block variables • Function Scope - variable visible from beginning to end of function - only for goto/switch labels • Program Scope - Variable declared outside function (global variables) - visible between files • Requires use of "extern" keyword • File Scope - Only visible within file - static variables in global areas, cannot be accessed by other files "Lifetime" refers to when a variable occupies memory Determined by where & how variable defined e.g. • global - lifetime from initialization to program end • static - lifetime from initialization to program end • block - lifetime from initialization to block exit • dynamic - lifetime managed by malloc/calloc to free
Address of operator (&)
Variable address accessed through ampersand (&) operator Literally the "address of" the variable Example: int val = 5; int* myPtr = &val; //myPtr now is equal to memory location of val
Are identifiers case sensitive?
YES • CASE SENSITIVE! • First character must be alphabetical or underscore • May NOT be a C keyword (e.g. int, return, this) • No length limit imposed by standard (but may have compiler limitation)
States
a description of system status while waiting to execute a transition Each state has a set of actions and transitions
What is an embedded system?
a programmed controlling and operating system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. Textbook:a computer system embedded in another device
Are embedded systems typically application specific or general purpose?
application specific
Function Pointers
are a pointer to instruction memory Can create a pointer to the instruction Type == Return type of function Also declared with parameters of function
Write a line of code that declares a variable:
char example1; //definition and declaration void example3(void){ //def. and decl. of a function int x = 7; }
Variable Quantifiers - auto
default for function/block variables auto int a == int a Storage automatically allocated on function/block entry Freed when function/block exited May not be used with global variables
Variable Quantifiers - volatile
indicates variable value may be affected outside sequential execution Two primary scenarios: • Memory mapped devices & registers • Global variables accessed by multiple tasks or interrupts Prevents the compiler from making optimizations to relationships of code - is often used to create a software delay loop that won't disappear
Example of function pointers:
int myFunction(int param1); int (*myFunctionPtr)(int) = &myFunction; int ret = (*myFunctionPointer)(10);
Inner block scope code question
int y = 0; //Global Scope void print_y(){ printf("%d\n",y) // prints 0 } int main(){ int x = 3; //block scope int y = 5; int i = 0; for(i=0;i<5;i++){ int x = 2; //nested block scope printf("%d\n",x);//prints 2 } printf("%d\n",x);//prints 3 printf("%d\n,y);//prints 5 print_y();//prints 0 } void print_z(){ static int z=0; printf("z: %d\n",z++); } int main(){ int x = 3; int i = 0; for(i=0;i<5;i++){ int x = 2; printf("x: %d\n",x); print_z(); } printf("x: %d\n",x); }
What is an identifier?
name of function or variable
Wireless Communication
or sometimes simply wireless, is the transfer of information or power between two or more points that are not connected by an electrical conductor Radio waves are analog, how are they converted to digital? Amplitude Modification (AM) Frequency Modification (FM) Phase Modification
fgets
read a line of input from file until n-1 characters or '\n' Newline then replaced with null character Safer, as max length can be specified! File can be STDIN Returns NULL when EOF detected!
scanf
scanf() - stdio function for taking input from stdin Format: scanf("%s",string1); • Reads characters from stdin until whitespace encountered • Can write beyond end of array! • Best case - "stack smashing detected" • Worst case - Overwrites other memory
Variable Quantifiers - const
used with datatype declaration to specify unchanging value const objects may not be changed e.g. const int five = 5; five += 1; //illegal
Example of objective type:
• int* p; //objective type = int • int a[10]; //objective type = int • int**p; //root objective type is int, objective type is int*