Index

Note: Page numbers followed by f indicate figures and t indicate tables.

A

Abstract Interpretation 275
Advanced Data Encryption Scheme (AES) 509
Aeronautical engineering 2
Aerospace DO-178B standard 323
Agile development process 48
and alignments 82–85, 83–85t
ART Flow 76–77
ceremonies promote and increase flow 
daily Scrum 69
detailed thinkers 68
feature writing, decomposition, and grooming 67–68
release demo 69–70
sprint backlog grooming 68–69
sprint demo 69
sprint retro 70
team meetings 68
complexity/organization scaling 53–55, 54f
definition 52–53
design cycle 52
documentation 
life cycle tooling 65
management program 65
requirements vs. acceptance criteria 66–67
Waterfall process documentation 65
Wiki-type tools 66
flow 67
organization’s roles  See Organization’s roles
product vs. project teams 74–75
program management 63
project plan 62–63
quarterly release planning 63–64
Scrum ban 75–76, 76f
sprint planning 64
between sprints 74, 74f
within sprints 
user story life cycle 70–73, 72f
vertical slices 73, 73f
system-of-systems approach 52
“unplanned” work flavors 64
upstream and downstream functional flows 52
user scenarios and activities 63
Agile software development model 4, 5f
Amazon Web Services (AWS) 239
Amdahl’s Law 348–350, 350f
Android 225–226
Application Layer Gateways 432
Application programming interfaces (APIs) 206
Application-specific fast-path (ASF) 451–455, 452–454f
ARM TrustZone technology 530
Artificial intelligence (AI)  See Machine learning (ML)
Asymmetric cryptography 509
Asymmetric multiprocessing (AMP) 341f, 342–343
Asynchronous real-time events 17
Automatic static analysis 50
Automobile antilock braking system 7
Automobile shift control system 13, 14f

B

Back end data-sharing model 487, 493–494, 494f
Backpropagation 575–578, 577f
Bagging 571
Berkley Packet Filter (BPF) 446
Big data 494–495
Bilateral rendez-vous 198–199, 199f
Binary semaphores 187
shared resource 187, 188f
Binary trees 569
Black box testing 50
Block ciphers 508–509
Boosting, decision tree 571
Brute-force attack 507–508

C

Certification killers 396–397
Chain of trust 531, 532f, 538–540, 539f, 541f
Chemical engineering 2
CIA Triad and isolation 503, 504f
Civil engineering 2
Clients and servers 
memory management 204–205, 205–206f
message queues 204, 204f
Clock tick 
definition 181
hardware timer 181
low-power applications 181
time management 182–184, 183f
wait list 181–182, 182f
Cloud-computing development 497–498
Cloud-computing nodes 484
Coarse-grained parallelism 351–352, 351f, 353f
Code size optimization 
Caveat Emptor 262–263
compilation process 259
compiler flags and flag mining 259–260
Freescale Semiconductor 261
premium- encoded instruction 261
reduced-footprint premium encoding 261
target architectures 260
variable-length instruction encoding 260–261
Coding syntax standard 
code whitespace 140–141
Motor Industry Software Reliability Association (MISRA-C) 140
personal preference 139–140
source alignment 141
source files 141
Computer-aided software engineering (CASE) tools 34
Conceptual thinkers 56–57
Conditional compilation 148–149
Configuration management (CM) system 136
Context switching 172, 172f
code 170
CPU register stacking order 171, 171f
execution time 173
fictitious CPU 170–171, 170f
interrupt stack pointer points 171
ISR stack 170–171
process 169
task stack pointer points 171
Convolutional neural networks (CNNs) 572
advantage 580
convolution 
vs. cross-correlation 581, 582f
definition 581
filter 581, 582f
layer 582–584, 583f
feature extraction 584–586, 584–586f
PyTorch 586–592, 588f
transfer learning 592
Counting semaphores 187, 189, 190f
Cryptology 
algorithms, types 508
asymmetric cryptography 509
basic 506, 506f
brute-force attack 507–508
definition 505, 505f
hash functions 509
implementation 510
algorithm registration interface 512
dynamic algorithm loader 512
kernel-level structure 512, 512f
Linux crypto APIs 511, 511f
NXP crypto accelerator 513, 513f
random number generator (RNG) 509–510
symmetric cryptography 
block ciphers 508–509
key distribution 508
stream ciphers 508
unsecure channels 505–506, 506f
view of 506, 507f
weakness 506, 507f
Cyclic redundancy check (CRC) 396

D

Daily Scrum 69
Data analytics 
analytical systems 495–496, 496t
application-specific domains 495
Big data 494–495
sensor collection 494–495
Data augmentation 560–561
Data Encryption Scheme (DES) 508
Data Path Development Kit (DPDK) 443–445, 444f
Data security 
encryption key protection 543
in motion 
definition 544
IPSec 544–545
security services 544
SSL/TLS 545
at rest 
definition 542
directory/file level encryption/authentication 543
full disk encryption/authentication 542–543, 543f
Data structures 
loop iteration 264, 264f
SIMD-based optimization and memory alignment 
data alignment 266
data types selection 267
instruction sets 263
padding elements 266–267
structure of arrays 
vs. array of structures 263–264, 263f
format 265
legacy code 265–266
loop iteration 265, 265f
Deadlocks 194–196, 195f
Decision tree 570f
bagging 571
benefit 569–570
binary trees 569
boosting 571
disadvantage 570
ensemble learning 570
graph theory 569
random forest 571, 572f
Deep-learning frameworks 593–594
Detailed thinkers 57, 68
Development tools 
compiler configuration 247–248
embedded applications 246
exemplary compiler optimization levels 248, 248t
features 246
language compilation 246–247, 247f
peripheral applications 249
Device-computing nodes 485–486
Device-to-cloud communications 489–491, 490f
Device-to-device communications 487–489
with cellular network 488–489, 489f
definition 487
without network support 488, 488f
Device-to-gateway (Fog) computing communications 491–492, 492f
Directed acyclic graph (DAG) 575, 576f
Discretionary Access Control (DAC) 534–535
Drug and Device Accountability Act 303
Dual-processor 409–410, 409f
Dynamic algorithm loader 512
Dynamic analysis, software test 273, 291–292
integration testing 293
module test 293
quick fix solution 278
single procedure 293, 294f
structural coverage analysis 276–277, 293–295, 295f
unit testing 277–278, 293
Dynamic memory (heap) allocation 608–609, 608f
Dynamic messaging subsystem interfaces 40–41

E

Edge learning/training 598–599
Edge routing 429
Electrical engineering 2
Embedded device development 498
Embedded Linux networking 
Application Layer Gateways 432
edge routing 429
ethtool 432–433
Firewalls 432
Hub 431
ifconfig 433–434
IoT domain 429
ip 434, 435f
IP address 431–432
nettools package 434
network stack 429–431, 430f
open-source utilities 432
requirement 428
Routers 431–432
Switch 431
tcpdump 435
wireshark 435
Embedded systems 
analog I/O 8
components 8, 8f
definition 7
emulation and diagnostics 9
hardware acceleration 9
hardware and software components 8
processor core 8
reactive systems  See Reactive systems
sensors and actuators 8
software 9
software system build process 
advantages 22
desktop system 22, 23f
relocation process 22
source code 22
user interfaces 9
volatile and nonvolatile memory 9
Embedded target architecture 249, 249–250t
Engineering, definition 2
eNodeB real-time task 92, 92f
Ensemble learning, decision tree 570
Ethtool 432–433
eXpress Data Path (XDP) 455–457, 456f

F

Factory automation 
aluminum coils 474, 475f
data architecture model 473
factors 475
overhead crane 473–474
Failure mode and effects analysis (FMEA) 401
Falcon mode, U-Boot 236–237, 237f
False sharing 368f, 369–370, 370f
Fault handling 
avoidance 403–404
prediction 405
removal 404
tolerance 404
types 403
Fault injection attacks 523–525, 524f
Feature extraction 562–563, 563f
File-scope variables 145–146
Fine-grained parallelism 351, 351f, 353f
Firewalls 432
Floating-point unit (FPU) registers 163, 175–176
Flow control 202–203, 203f
Fog/edge-computing nodes 484–485
Four-core multicore processor 348, 349f
FRDM-KW41Z reference board, NXP Semiconductor 102–103, 102f
FreeRTOS 
add-on software products 243
Amazon Web Services (AWS) 239
architecture 240, 240–241f
debugging 243
features 
debugging 242
IPC and synchronizations 242
low power 241–242
memory management 243
scheduling 241, 242t
licensing 239
portability 240–241
real-time kernel 239
SAFERTOS 239
support 243
supported architectures 240
“Front light management” system 29, 30–31f
Futex 375, 375f

G

Global variables 143–145
Graph theory 569

H

Hard real-time system 14f, 154
automobile shift control system 13, 14f
characteristics 16
computing system 16
deadline first algorithm 17
feasibility and costs 16
monotonic algorithms 17
Nyquist 15
resource allocation 17
sampling period 15
scheduling algorithms 17
signal sample 16
vs. soft real-time systems 13, 14f
timeliness 16
Hardware abstraction layers (HALs) 
automotive application 28, 29f
code compliant creation 29
embedded system development flow 29, 31f
“front light management” system 29, 30–31f
real-time operating system (RTOS) 28
Hardware mapping 
CPU mapping 94–95, 94f
DSPLIB documentation 94–95
FIR algorithm component 93–94
I/O and channel mappings 94–95, 94f
I/O interface 95–96
sampling frequency 95
Hash functions 509
Hazard analysis 
event tree 406, 407f
fail-safe 405
fault tree 406, 407f
subsystem design 405–406
work product 406, 406t
Hub 431

I

IEC 62304 standard 303
Integration testing 50
Internet of Things (IoT) 
applications 
factory automation 472–475
market segments 472
rail transportation 475–479
architecture 
applications 483
cloud-computing nodes 484
device-computing nodes 485–486
fog/edge-computing nodes 484–485
and cloud 
in agriculture 468, 469f
data size 470, 470f
disadvantages 469
fog-oriented architectures 469–470
RFID-enabled device 468
cloud-based fitness server 467–468
communications 
back end data-sharing model 487, 493–494, 494f
device-to-cloud communications 489–491, 490f
device-to-device communications 487–489
device-to-gateway (Fog) computing communications 491–492, 492f
factors 486
multiple technologies 486
connected devices 471, 472f
data analytics 
analytical systems 495–496, 496t
application-specific domains 495
Big data 494–495
sensor collection 494–495
definition 466
development 496
cloud-computing development 497–498
embedded device development 498
mobile app developer 497
silos integration 499
fitness device 467–468, 468f
industrial revolutions 470–471, 471f
microcontrollers 459–463, 461–462f
microprocessor vs. microcontroller architecture 479–480, 479f
power storage 483
relay node 466
“smart” device 466
smart home 467, 467f
wired communications 482–483, 482f
wireless communications 480–482, 481t
Interrupt controller 174, 174f
Interrupt management 
asynchronous event 173
CPU interrupts 
“global” interrupts 174
interrupt controller 174, 174f
ISR epilog 176
Kernel-aware interrupt service routine 174, 175f
models 174
worst-case interrupt stack 175–176
disabling interrupts 173
interrupt vectors 180–181
ISR process 173
microprocessors 173
multiple interrupt priorities 177–178, 178–179f
nonkernel-aware interrupt service routine 177, 177f
recovery 173
response 173
single interrupt vector 179, 179f
task latency 173
“while” loop 180
Interrupt nesting 166
Interrupt recovery 173
Interrupt response 173
Interrupt service routines (ISRs) 155
Isochronous real-time events 17
ISO 26262 recognized process standard 
ASILs levels 306
demands 306
E/E/PE systems 306
objectives 307–308
and SAE J3061 
automotive-embedded applications 311
functional safety 311–312
safety-critical system development 311
sound development process 311

K

Kerckhoffs’s principle 508
k-NN (nearest neighbor) algorithm 568–569, 568f
Knots and cyclomatic complexity 
blocks and control flow branches 286–287
control flow graphs 287
cyclomatic complexity value 289
dynamic flow graphs 287
knots value 287
modified static flow graph 290
static flow graphs 287
structured programming templates 290, 290–291f

L

Life cycle management, embedded system 514, 514f
Linaro 225
Linux  See also Networking software
acceptance of 209
architecture 
communication protocol stack 219
components 217
device driver framework 217, 218f
hardware components 216
high-level view 216, 216f
interrupt 218–219
memory management 219
object-oriented languages 216
privileged mode 216–217
schedulers 218
unprivileged mode 217
user interface (UI) 219–220
benefits 
free of cost 213
no “vendor lock-in” 214–215
software driver and Linux kernel version 215–216
software maintenance 215
software releases, product shipping 215
stable operating system 215
time to market 214
code review, upstream community 227–229, 227–228f
coding guidelines 226–227, 226–227f
configuration 
boot performance 222
buffers 223
core affinity 222
interrupt coalescing 222–223
latencies 224
low memory footprint 221
user space drivers 223–224
desktop operating systems 208–209
development 
Android 225–226
community releases 224
Linaro 225
Linux Foundation 225
long-term support (LTS) 225
Ubuntu 226
versions 225
vs. embedded Linux 210
and embedded systems 209–210
features 
complete network stack solution 211
CPU architectures 211
debuggability 213
endianness 213
peripheral devices 211
portability 210–211
POSIX compliance 211
security 212
task schedulers 212
user space drivers 212–213
GNU General Public License (GPL) 229–230
kernel compilation 220
market segments 208, 208f
root filesystem 
applications 220
Yocto 220–221
Linux crypto APIs 511, 511f
Linux Unified Key Setup (LUKS) 543
Local variables 146
Lock mechanism 187
Loop transformations 
loop unrolling 256–257, 256f
multi-ALU processors 256
multisampling 257–258
NXP’s i.MX RT1050 Crossover Processor and Zephyr™ real-time operating system 
advantages 603
analysis results 614, 615f
application peripheral interface (API) 607
configuration 605
context switching 613–614, 613f
dynamic memory (heap) allocation 608–609, 608f
EEMBC benchmark 603
hardware and software 605–606, 605f
“heap deallocation” loop 608–609
i.MX 6UL configuration 606–607, 606f
microbenchmarks 604
MIMXRT1050-EVK board 607
mutex lock and unlock 612–613
performance analysis 603
thread creation and joining 610–611, 610f
partial summation 258
software pipelining 258–259
Low-Power Timer (LPTMR) 123
application 127
interrupt handler routine 125–126
program debugging 128
sample driver program 124, 125–126f

M

Machine learning (ML) 
architecture design 597–598
artificial intelligence (AI) 551–552
bias vs. variance tradeoff 555, 556f
binary classification 553–554
classification task 550, 554f
coding 550–551
computational resources 594
data 557
augmentation 560–561
classification algorithm 563
feature extraction 562–563, 563f
grooming 558
preparation 558
preprocessing 558
probability theory and statistics 557
semantic gap 559–560, 559–560f
training/test 558–559
validation data split 558–559
decision tree 570f
bagging 571
benefit 569–570
binary trees 569
boosting 571
disadvantage 570
ensemble learning 570
graph theory 569
random forest 571, 572f
definition 552
edge learning/training 598–599
k-NN (nearest neighbor) algorithm 568–569, 568f
low-rank factorization 596–597
memory footprint 594
multiclass classification 554
multilabel classification 554
neural networks (NNs) 551
activation function 574, 575f
backpropagation 575–578, 577f
classifications 572
deep-learning frameworks 593–594
directed acyclic graph (DAG) 575, 576f
motivation 572, 573–574f
pruning 595–596
recurrent neural networks (RNNs) 592–593, 593f
synapses 573–574
polynomial complexity 555–557, 556f
postprocessing vs. dynamic optimization 596
power efficiency 594
quantization 594–595
regression task 550, 554f
regularization techniques 555
semisupervised learning 553
supervised learning 553
support vector machine (SVM) algorithm 
classifier visualization 564, 565f
code sample 566
data distribution 563–564, 564f
feature space transformation 566–567, 567f
linear 566–567, 567f
quadratic programming 565
training criteria 564
unsupervised learning 553
Maintenance costs 3–4
Mandatory Access Control (MAC) 534–535
Market Functional Requirements (MFRs) 60
Measured boot 532–533
Mechanical engineering 2
Memory management 204–205, 205–206f
Message passing 
global variables 199–200
intertask communication 199
message queue 200–202, 201–202f
messages 200–201
Message Passing Interface (MPI) 361
Metrics 
blocked work 78
export vs. live data paradigm 80–81
life cycle cost estimation 78–79
micromanagement 79
size estimation 78
spanning work items 78
statistical process control 78–79
and tooling 81–82
unorganized data 79–80
unplanned work 78
Microcontrollers 427
Internet of Things (IoT) 459–463, 461–462f
Minimal viable product (MVP) 53–54
Motor Industry Software Reliability Association (MISRA-C) 140
Multicore processor system 
algorithm 340
application locality 
access, rows and columns 354, 355f
blocking optimization 356, 356f
code segments 355
data locality 354
data parallelism 358, 359f
data reuse 352
load imbalance 357, 358f
matrix multiply algorithm 354, 354f
memory hierarchies 352, 353f
results 356, 357f
row-major storage, C/C++ 354, 354f
task parallelism 358–359, 360f
architectural styles 340
asymmetric multiprocessing (AMP) 341f, 342–343
code optimization 382
correct/Smooth/detect functions 391, 391f
work queues 390–391, 390–391f
exploration 382
results 387–388
heterogeneous system 340, 341f
image-processing 382–384, 382–383f
language extensions, OpenMP 
execution flow 379, 380f
execution graph 379, 379f
loops 380
mode 378, 378f
multiple worker threads 379, 380f
multithreading method 378
runtime system 381
specification 379
performance and optimization 
affinity scheduling 370–371, 370f
communication latencies 372–373
concurrency abstractions 376–378
data locality 367, 368f
false sharing 368f, 369–370, 370f
futex 375, 375f
kernel queue 375–376, 376f
latency-oriented core 363
load balancing (SMP Linux) and scheduling 366–367
lock granularity and frequency 371–372, 372f
Multicore Programming Practice Guide 362, 362f
serial performance 363–366, 365–366f
synchronization barrier 372
thread count management 374–375
thread pools 373–374, 374f
process flow 381, 381f
programming models 
control 360
data 360
decision 360–361, 361f
factors 361
Message Passing Interface (MPI) 361
shared memory 361
synchronization 360–361
requirements 381
sequential analysis 381
symmetric multiprocessing (SMP) 341f, 342
task parallel 386–387, 386–387f
tuning 382, 388, 388f
types 340
Multicore Programming Practice Guide 362, 362f
Multicore system architecture 
compiler and build tools 
algorithmic components selection 98
compilation tool chain 97–98, 97f
high-level language 96–97
computational and memory bottlenecks 93, 93f
estimation results 96
hardware mapping 
CPU mapping 94–95, 94f
DSPLIB documentation 94–95
FIR algorithm component 93–94
I/O and channel mappings 94–95, 94f
I/O interface 95–96
sampling frequency 95
implementation and analysis 89–90
informed decision making 90
optimization 90–91
power optimization 
batch and buffer 99–100
code and data placement 99
code size 99
coprocessors 99
direct memory access 99
interrupt driven design 99
over calculation 99
software architecture 98–99
speed and idle modes 99
voltage and frequency 100
processing components 92–93
requirements 
eNodeB real-time task 92, 92f
functional requirements 91, 91f
pseudo real-time tasks 92, 92f
system dimensions and questions 91–92, 91f
system performance 93
Multiprocessor systems 
centralized resource allocation and management 24
hardware processing elements 24
load distribution 24
processor interfaces 24
system initialization 24
Multitasking 156, 158
Mutual exclusion mechanisms 185–187, 186t
Mutual exclusion semaphore (mutex) 193–194, 193f

N

NATO conference 3
Nettools package 434
Networking software 
autonomous packet 428
embedded Linux networking 
Application Layer Gateways 432
edge routing 429
ethtool 432–433
Firewalls 432
Hub 431
ifconfig 433–434
IoT domain 429
ip 434, 435f
IP address 431–432
nettools package 434
network stack 429–431, 430f
open-source utilities 432
requirement 428
Routers 431–432
Switch 431
tcpdump 435
wireshark 435
Linux kernel to user space 
Berkley Packet Filter (BPF) 446
compliance and quality assurance 436
Data Path Development Kit (DPDK) 443–445, 444f
direct access 439, 439f
network stack 436
OpenDataPlane (ODP) 440–443, 441f
packet rates 437–439, 438f
polling/events 440
protocols and devices 436
stack unsuitability 437
virtual I/O layer and HugePages 439–440
low-end single-core network processors 448
microcontrollers 427, 459–463, 461–462f
network packet processing 
application-specific fast-path (ASF) 451–455, 452–454f
architecture 448–449, 448f
eXpress Data Path (XDP) 455–457, 456f
implementation 449–450
optimization 450–451, 450–451f
resource utilization 457–458
ultra-low-end microcontrollers 448
Network packet processing 
application-specific fast-path (ASF) 451–455, 452–454f
architecture 448–449, 448f
eXpress Data Path (XDP) 455–457, 456f
implementation 449–450
optimization 450–451, 450–451f
resource utilization 457–458
Neural networks (NNs) 551
activation function 574, 575f
backpropagation 575–578, 577f
classifications 572
deep-learning frameworks 593–594
directed acyclic graph (DAG) 575, 576f
motivation 572, 573–574f
pruning 595–596
recurrent neural networks (RNNs) 592–593, 593f
synapses 573–574
Next Generation Firewalls 432
Nonembedded system build process 22, 23f
Nuclear engineering 2
NXP crypto accelerator 513, 513f
NXP KW41Z512VHT4 System on Chip (SoC) device 102–103
NXP’s i.MX RT1050 Crossover Processor 
advantages 603
analysis results 614, 615f
application peripheral interface (API) 607
configuration 605
context switching 613–614, 613f
dynamic memory (heap) allocation 608–609, 608f
EEMBC benchmark 603
hardware and software 605–606, 605f
“heap deallocation” loop 608–609
i.MX 6UL configuration 606–607, 606f
microbenchmarks 604
MIMXRT1050-EVK board 607
mutex lock and unlock 612–613
performance analysis 603
thread creation and joining 610–611, 610f

O

Object code verification (OCV) 
aerospace DO-178B standard 323
application 322
industry standards 322–323
object vs. source code control flow 
applications 331
automated OCV solutions 330
basic block 325
compiler/assembler code 326–327
DO-178C standard 327
flowchart 327, 328–329f
source code 324
source code coverage 329–330
unit level 330–331
requirements traceability 322
software certification 322–323
Object-oriented programming 
benefits 43
class identification 45
class variable 43
design modeling 45–46, 45f
object variable 43
system context 44, 44f
types 43
OpenDataPlane (ODP) 440–443, 441f
OpenMP, language extensions 
execution flow 379, 380f
execution graph 379, 379f
loops 380
mode 378, 378f
multiple worker threads 379, 380f
multithreading method 378
runtime system 381
specification 379
Open-source software 
FreeRTOS  See FreeRTOS
Linux  See Linux
U-Boot  See U-Boot
Operating systems 
application programming interfaces (APIs) 206
bilateral rendez-vous 198–199, 199f
clients and servers 
memory management 204–205, 205–206f
message queues 204, 204f
clock tick 
definition 181
hardware timer 181
low-power applications 181
time management 182–184, 183f
wait list 181–182, 182f
context switching 172, 172f
code 170
CPU register stacking order 171, 171f
execution time 173
fictitious CPU 170–171, 170f
interrupt stack pointer points 171
ISR stack 170–171
process 169
task stack pointer points 171
embedded systems 154
flow control 202–203, 203f
foreground/background systems 155, 156f
hard real-time systems 154
interrupt management  See Interrupt management
message passing 
global variables 199–200
intertask communication 199
message queue 200–202, 201–202f
messages 200–201
preemptive scheduling 167–168, 168f
real-time kernel 
central processing unit (CPU) 156
functions 156
multitasking 156
preemptive kernels 157, 157f
tasks and managing system resources 157
real-time operating system (RTOS) 
critical region 158
preemption lock 158
task management  See Task management
resource management 
critical section 185
deadlocks 194–196, 195f
disable/enable interrupts 185–186, 186f
mutual exclusion mechanisms 185, 186t
mutual exclusion semaphore (mutex) 193–194, 193f
priority inversions 191–193, 192f
semaphore  See Semaphores
shared resource 184
time-of-day algorithm 184, 185f
round-robin scheduling 169
scheduling points 168–169
soft real-time systems 154
stack size 
floating-point unit (FPU) registers 163
idle task 166
interrupt nesting 166
link map 164
priority levels 166–167
ready list 167
safety factor 164
states 164, 165f
synchronization 
credit tracking 197–198, 198f
ISR execution 196
semaphores 196–197, 196f
task priorities 162–163, 163t
Optimization goals and practices 
cache accesses 255–256
calling conventions 251–252, 251f
C optimization techniques 250
data types 250
DSP intrinsic function 250–251, 251t
features 251
FIR filter 251, 251f
function inlining 256
loops 254–255, 254f
memory alignment 252
memory contention 255
pointer aliasing 253, 253f
restrict keyword 253, 253–254f
unaligned memory accesses 255
Organization’s roles 
architect 57
conceptual thinkers 56–57
detailed thinkers 57
Market Functional Requirements (MFRs) 60
product managers 56
project leader/manager 57
proposal cycle testers 61
proposal sprinters 61–62
proposal thinkers 56
quality 61
safety engineer 59
Scrum Master 55–56
software developer 59
software tester 59
stage gate 60, 61f
systems engineer 58
validation engineer 60

P

Pair programming approach 48
Parallelism, multicore processor system 
Amdahl’s Law 348–350, 350f
antidependencies 346–347
benefits 344
capacitance 343
circuit 343, 343f
coarse-grained parallelism 351–352, 351f, 353f
data dependencies 345, 345f
execution time 350–351
fine-grained parallelism 351, 351f, 353f
four-core multicore processor 348, 349f
granularity, types 351
instructions per cycle (IPC) 343
loop-carried dependence 346
matrix multiplication 352, 352f
output dependency 346
parallel multicore circuit 344, 344f
power 343
power comsumption 343
scalability 348, 349f
sequential 345, 347, 347f
single-core processor 348, 348f
two-core multicore processor 348, 348f
work 343
Performance testing 51
Periodic Interrupt Timer (PIT) 123
Periodic messaging subsystem interfaces 41
Periodic waveforms (PWM) 123
Physical tampering 520–521
Power-saving super loop 26–27, 26f
Preemptive scheduling 167–168, 168f
Priority inversion 191
Program management 63
Programming and implementation guidelines 
embedded programmers 
characteristics 134
embedded system, definition 134–135
hardware features 135
performance 135
resources 135
embedded software project 
hardware platform input 136
project files/organization 136–138
safety requirements, source code 142–143
source code 135
syntax standard 139–141
team programming guidelines 138–139
high-quality programming principles 
maintainability 133
performance characteristics 132
readability 133
testability 133–134
maintainability and project length 132
programmer experience and background 132
project size 131–132
safety-critical code development 132
syntax-oriented approach 131
variable structure  See Variable structure
Programming models 
control 360
data 360
decision 360–361, 361f
factors 361
Message Passing Interface (MPI) 361
shared memory 361
synchronization 360–361
Programming techniques 
“bare metal” designs 102
“behind the scenes” actions 102
blinking LED 
file saving 119
initialization 116, 117–118f
project and source folder expansion 117
FRDM-KW41Z reference board, NXP Semiconductor 102–103, 102f
hardware 103, 104f
interrupt handlers 123–124, 123t
Low-Power Timer (LPTMR) 
application 127
interrupt handler routine 125–126
program debugging 128
sample driver program 124, 125–126f
NXP KW41Z512VHT4 System on Chip (SoC) device 102–103
onboard JTAG debugging interface 102–103
operating system 101–102
polled UART send/receive 
high-level library routines 120–122
implementations 119
interrupt-driven mode 119
logic levels 119–120
program debugging 122–123
sample driver program 120, 121f
software development kits (SDKs) 
cross-development tools 103
download and installation 105
project debugging 106–107, 108–109f
project launch 105, 105–108f
target system configuration  See Target system configuration
Project files/organization 
compiler/debugger/linker suite 136
configuration management (CM) system 136
libraries 
compiler/linker toolsets 138
third parties 137–138
source files 
company libraries 137
in local 137
team preference/file organization 136
Project kickoff meeting 37
Project-planning strategies 35–36, 62–63
assessment communication 398
assessor’s role 398
built-in-test (BIT) capability 400
certification basis 398
certification block diagram 399
certification plan 401
communication integrity objectives 399
documents and artifacts 400–401
fault annunciation coverage 400
feasibility 397
“fit and purpose,” product 398–399
independent assessor 397–398
integrity level 400
Interface Control Document 399
labor-intensive analysis 401
project certification scope 397
reliance and expectation, operator/user 400
residual activity 401
safety-defensive strategies 399
user-level documentation 401
Proposal cycle testers 61
Proposal sprinters 61–62
Proposal thinkers 56
Pruning neural networks 595–596
Pseudo real-time tasks 92, 92f
PyTorch 586–594, 588f

R

Rail transportation 
factors 478–479
intermodal containers 475–476
rules-based decision making 476–477, 477f
smart sensor recalibration 477–478, 478f
subnetworks 476
Random forest, decision tree 571, 572f
Random number generator (RNG) 509–510
Rate monotonic scheduling (RMS) 162
Reactive systems 
application 11–12
application specific 11–12
characteristics 10–11
control 11
monitoring 10–11
multirate 11–12
processing information 11
real time 11–12
resource constrained 11–12
sensing directions 9–10, 10f
sensors and actuators 9, 10f
tire-pressure monitoring system (TPMS) 9–10
Real-time design 
automobile motor, electronic injector control 46
C++ programming language 47
dataflow diagrams 46
microcontrollers 47
“soft” system 46
state machine diagram 46, 47f
system constraints 46
Real-time events 
asynchronous 17
efficiency 18
isochronous 17
offline scheduling 17–18
resource allocation 17–18
resource management 18–19
synchronous 17
Real-time kernel 
central processing unit (CPU) 156
functions 156
multitasking 156
preemptive kernels 157, 157f
tasks and managing system resources 157
Real-time operating system (RTOS) 28
critical region 158
preemption lock 158
task management  See Task management
Real-time system 
design 
characteristics 19
failures detection and overcome 20–21
multiple tasks execution 21, 21f
response time 19–20
outputs 12–13, 13f
soft and hard 13, 14f
vs. time-shared systems 15, 15t
Receive Flow Steering (RFS) 457
Receive Packet Steering (RPS) 457
Recurrent neural networks (RNNs) 592–593, 593f
Reentrant function 161
Relay node 466
Release demo 69–70
Release testing 50–51
Requirements traceability matrix (RTM) 281, 281f, 312–313
host-based verification 283
life cycle model 281, 282f
principles 282
target-based verification 283
Resource management 
critical section 185
deadlocks 194–196, 195f
disable/enable interrupts 185–186, 186f
mutual exclusion mechanisms 185, 186t
mutual exclusion semaphore (mutex) 193–194, 193f
priority inversions 191–193, 192f
semaphore  See Semaphores
shared resource 184
time-of-day algorithm 184, 185f
Root filesystem, Linux 
applications 220
Yocto 220–221
Root of trust 531–532
Round-robin scheduling 169
Routers 431–432

S

SAE J3061 standard 
automotive-embedded applications 311
functional safety 311–312
safety-critical system development 311
sound development process 311
SAFERTOS 239
Safety-critical development 
architectures 
dual-processor 409–410, 409f
single-processor 408, 409f
triple-processor 410, 410f
“voter” type 411, 411f
availability 403
certification killers 396–397
fault handling 
avoidance 403–404
prediction 405
removal 404
tolerance 404
types 403
faults, errors and failures 402–403, 403f
hazard analysis 
event tree 406, 407f
fail-safe 405
fault tree 406, 407f
subsystem design 405–406
work product 406, 406t
project-planning strategies 
assessment communication 398
assessor’s role 398
built-in-test (BIT) capability 400
certification basis 398
certification block diagram 399
certification plan 401
communication integrity objectives 399
documents and artifacts 400–401
fault annunciation coverage 400
feasibility 397
“fit and purpose,” product 398–399
independent assessor 397–398
integrity level 400
Interface Control Document 399
labor-intensive analysis 401
project certification scope 397
reliance and expectation, operator/user 400
residual activity 401
safety-defensive strategies 399
user-level documentation 401
reliability 403
requirements 395–396
risk analysis 407–408
software implementation strategies 
code sections marking 416–417
coding standards 412–414
“dead” code removal 424–425
execution order 420–421
input data 414–415
nonvolatile data checking 422–423
outputs 418–419, 419f
peer review process 412, 413f
permissive state forces 420
specific variable value checking 415–416
stale data 417–418
static code analysis 425–426
system running 423–424
timing execution checking 417
unused memory 425
volatile data checking 421–422
standards 394
Sandboxing 535–537, 536f
Scheduling algorithms 17
Secure element (SE) 529
Security 
components 
access control 534–535
attacker’s ability, mitigation 530
authenticity 537–538
boot 531, 531f
chain of trust 531, 532f, 538–540, 539f, 541f
cryptographic key 531, 532f
data security  See Data security
execution 540–542
measured boot 532–533
operating system 533–534
root of trust 531–532
sandboxing 535–537, 536f
TPM 533
Trustworthy Embedded System 530
definitions 501
embedded security 502
systems complexity 502–503
embedded system 502
design and development phase 514
life cycle management 514, 514f
software development life cycle (SDLC)  See Software development life cycle (SDLC)
threat analysis 514
policy 
CIA Triad and isolation 503, 504f
definition 503
information flow 504
physical security 505
threat analysis 
attack vectors 520–525
Bound Check Bypass 526
branch target injection 527
identification 518–519
Meltdown attack 525–526
mitigation strategy 519
modeling 519
threat matrix 519
Semaphores 
ASCII 188–189
binary semaphores 187
shared resource 187, 188f
buffer manager 189–190
counting semaphores 187, 189, 190f
lock mechanism 187
mutual exclusion 186–187
peripheral device 189, 189f
priority inversion 191
shared data structures 190
synchronization 196–197, 196f
types 187
Semisupervised learning 553
Shared memory 361
Side-channel attacks (SCAs) 521–522
SIMD-based optimization and memory alignment 
data alignment 266
data types selection 267
instruction sets 263
padding elements 266–267
Single-core processor 348, 348f, 408, 409f
“Smart” device 466
Smart home 467, 467f
Soft real-time systems 154
Software developer 59
Software development kits (SDKs) 
cross-development tools 103
download and installation 105
I/O helper routines 116
project debugging 106–107, 108–109f
project launch 105, 105–108f
Software development life cycle (SDLC) 
design 515
peer reviews 517
secure coding guidelines 515–517
security 515, 515f
static analysis 517
testing and verification 518
Software development phases 
architecture/design 5
implementation 5–6
problem definition 4–5
software components 6
verification and validation (V&V) 6
Software development process 
Agile development process  See Agile development process
architecture 
availability 42
factors 39
operating performance 40–41
performance-critical dataflows 40
reliability 42
safety-critical elements 40
security 41
computer-aided software engineering (CASE) tools 34
design 
logical data/object flows 42
object-oriented software design 42 See also object-oriented programming
real-time software design 43 See also Real-time design
fluid/ad hoc process 34–35
implementation 48
metrics 77 See also Metrics
programming languages 34
project kickoff meeting 37
project planning 35–36
requirements 34
definition 37–38
operation and functioning 38
system requirements 39
user requirements 38–39
risk analysis 36–37
risk classification 36
risk mitigation 37
testing 
automatic static analysis 50
integration testing 50
performance testing 51
release testing 50–51
software inspection 49
types 49
validation 49
verification 49
Software engineering principles 6, 7f
Software implementation strategies 
code sections marking 416–417
coding standards 412–414
“dead” code removal 424–425
execution order 420–421
input data 414–415
nonvolatile data checking 422–423
outputs 418–419, 419f
peer review process 412, 413f
permissive state forces 420
specific variable value checking 415–416
stale data 417–418
static code analysis 425–426
system running 423–424
timing execution checking 417
unused memory 425
volatile data checking 421–422
Software inspection 49
Software integrity level (SIL) 271
Software of unknown pedigree (SOUP) 
call graphs 320
code coverage 320–321
code review analysis 320
coding standards 319
dangers of 319–320
flow graphs 320
functionality 321–322
static and dynamic analysis 320–322
structure and modularity 321
Software production 3–4
Software systems 2
devices 2
properties 2
Software test 
automated code review 280
automatically generating test cases 300–302
configuration management and process 280
decisions 272–273
definition 270
dynamic analysis 273, 291–292
integration testing 293
module test 293
quick fix solution 278
single procedure 293, 294f
structural coverage analysis 276–277, 293–295, 295f
unit testing 277–278, 293
dynamic testing 271
high-integrity systems 292
quality metrics 270
quantification 270
regression testing 300
requirements traceability matrix (RTM) 281, 281f
host-based verification 283
life cycle model 281, 282f
principles 282
target-based verification 283
risk outcomes 271
safety- and security-critical standards 281
software integrity level (SIL) 271
source code 270–271
static analysis 270, 273
array-out-of-bounds error 285
blocks and branches 285, 288f
code review 274
coding standards 284, 284f
cyclomatic complexity derivation 285, 289f
dynamic behavior prediction 275–276
GCC/Microsoft Visual Studio 285
International Obfuscated C Code Contest 283
knots and cyclomatic complexity  See Knots and cyclomatic complexity
MISRA C:2012 285, 286f
peer review team 286
switch statement 285, 288f
theorem proving 274–275
system-level requirements 278–279, 279f
test-driven development (TDD) 300
test tools 272, 272f
traceability solutions, high-level requirements 279–280, 279f
validation and verification tasks 278
Software tester 59
Spiral software development model 4, 4f
Sprint backlog grooming 68–69
Sprint demo 69
Sprint retro 70
Stack size 
floating-point unit (FPU) registers 163
idle task 166
interrupt nesting 166
link map 164
priority levels 166–167
ready list 167
safety factor 164
states 164, 165f
Standards 
autogenerated code 315–318
autonomous vehicles 302
evolution 
Drug and Device Accountability Act 303
gap analysis 305
IEC 62304 303
ISO 26262 recognized process standard 305–308
risk-based approach 304
technical safety requirements 304
verification tasks 308–309, 309–310f, 316f
internal process standard 
coding rule set 313
custom software development 314–315, 317–319f, 323f, 325f
legacy code base 313–314
requirements traceability matrix (RTM) 312–313
legacy code 
software of unknown pedigree (SOUP)  See Software of unknown pedigree (SOUP)
software test tools 318
object code verification (OCV) 
aerospace DO-178B standard 323
application 322
industry standards 322–323
object vs source code control flow 324–331, 328–329f
requirements traceability 322
software certification 322–323
process/coding standards 312
software development quality 302
terminology 303
Static analysis 
software development life cycle (SDLC) 517
software test 270, 273
array-out-of-bounds error 285
blocks and branches 285, 288f
code review 274
coding standards 284, 284f
cyclomatic complexity derivation 285, 289f
dynamic behavior prediction 275–276
GCC/Microsoft Visual Studio 285
International Obfuscated C Code Contest 283
knots and cyclomatic complexity  See Knots and cyclomatic complexity
MISRA C:2012 285, 286f
peer review team 286
switch statement 285, 288f
theorem proving 274–275
Stochastic gradient descent (SGD) 
code 578
learning rate 579, 579f
neural networks vs. deep neural networks 579–580, 580f
Stream ciphers 508
Super loop architecture 25, 26f
Supervised learning 553
Support vector machine (SVM) algorithm 
classifier visualization 564, 565f
code sample 566
data distribution 563–564, 564f
feature space transformation 566–567, 567f
linear 566–567, 567f
quadratic programming 565
training criteria 564
Symmetric cryptography 
block ciphers 508–509
key distribution 508
stream ciphers 508
Symmetric multiprocessing (SMP) 341f, 342
Synchronous real-time events 17
Systems engineer 58

T

Target system configuration 
clock configuration 111, 112f
I/O pin 
configuration 111–113, 114t, 115f
initialization 113–115
SDK I/O helper routines 116
system reset 
“C” programing language 111
factors 107–109
NXP SDK boot code 110
Task Control Block (TCB) 159
Task latency 173
Task management 
central processing unit (CPU) 158
C function 160
design process 158
Ethernet controller 161–162
infinite loop 160–161
kernel’s services 158
multitasking 158
parameters 159
reentrant function 161
resources 159, 159f
run-to-completion loop 160
signaling and message-passing mechanisms 161–162
“sleep”/“time delay” services 161
Task Control Block (TCB) 159
types 160
Task priorities 162–163, 163t
Tcpdump 435
Team meetings 68
TensorFlow (TF) 593
Test-driven development (TDD) 300
Test solution environment, implementation 
automated code review 333
client organizations 332
robustness testing 333–334
test tool attributes 332, 333f
unit test 334–335
tools 335
“V” development model 332
Thread count management 374–375
Thread pools 373–374, 374f
Threat analysis 
attack vectors 520–525
classification 520
fault injection attacks 523–525, 524f
physical tampering 520–521
side-channel attacks (SCAs) 521–522
timing attacks 522–523
Bound Check Bypass 526
branch target injection 527
identification 518–519
Meltdown attack 525–526
mitigation strategy 519
modeling 519
threat matrix 519
Time-of-day algorithm 184, 185f
Timer/PWM Module (TPM) 123
Time-shared systems 15, 15t
Timing attacks 522–523
Tire-pressure monitoring system (TPMS) 9–10
“Toy” applications 3
Transport Layer Security (TLS) 545
Triple-processor 410, 410f
Trusted Computing Group (TCG) 528
Trusted execution environment (TEE) 
ARM TrustZone technology 530
definition 527, 527f
secure element (SE) 529
Trusted Platform Module (TPM) 528–529, 528f
Trusted Platform Module (TPM) 528–529, 528f, 533
Trustworthy Embedded System 530
Two-core multicore processor 348, 348f

U

U-Boot 
architecture 
single-stage boot loader 234–235, 234f
two-stage boot loader 235–236, 235–236f
types 234
boot loader 230
code and directory organization 233
fast boot approach 236–237, 237f
features 
autoboot process 232
environment variables 231
multiple boot source support 230–231
operating system boot commands 232
“sandbox” architecture 232
scripts 231
shell (user interface) 231
stand-alone applications 232
licensing 238–239
nonvolatile memory 230
open-source community 238
secure boot/chain-of-trust boot 237
“shell”-like interface 230
supported architectures and operating systems 238
Ubuntu 226
Unified Modeling Language (UML) 45–46, 45f
Unit test 277–278, 293
code coverage 
application and test environment 295
dynamic flow graph 296
exercises 296, 298f
safety-critical standards 296, 304f
safety integrity levels 296, 305f
system test 296, 297f, 299f
tools 296, 301f
“track” execution 296
“V” model 296, 307f
test-driven development (TDD) 300
Unsupervised learning 553

V

Validation engineer 60
Variable-length instruction encoding 260–261
Variable structure 
conditional compilation 148–149
data types 147–148
declarations 
components 143
file-scope variables 145–146
global variables 143–145
local variables 146
types 143
#define 149–151
Virtual I/O layer and HugePages 439–440
“Voter” type processor 411, 411f

W

Waterfall design 54
Waterfall software development model 4, 4f
Window lift embedded design 27, 27–28f
Wired communications 482–483, 482f
Wireless communications 480–482, 481t
Wireshark 435

X

Z

Zephyr™ real-time operating system 
advantages 603
analysis results 614, 615f
application peripheral interface (API) 607
configuration 605
context switching 613–614, 613f
dynamic memory (heap) allocation 608–609, 608f
EEMBC benchmark 603
hardware and software 605–606, 605f
“heap deallocation” loop 608–609
i.MX 6UL configuration 606–607, 606f
microbenchmarks 604
MIMXRT1050-EVK board 607
mutex lock and unlock 612–613
performance analysis 603
thread creation and joining 610–611, 610f
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.222.93.132