Index

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

802.1q Tag field, 363–364
802.2 header and data field, 364
802.15.4 stacks, 456
8259 Programmable Interrupt Controller, 48, 49f, 50, 164–165, See also Interrupt controller

A

Accelerated media decode, 301–303
lip syncing, 303
Acceleration, 216
Accelerometers, 30
Acknowledging interrupts, 128
Acknowledgment Number, 358
Active interference, 415–416
Activity manager, 384
Add function, 319f
Address fields, 368
Address resolution protocol (ARP), 360
ADSL, 9
Advanced Configuration and Power Interface (ACPI), 171, 275–281
BIOS, 276
idle versus sleep power, 277
organization of, 275–276, 276f
registers, 276
system states, 277, 277f
device power (Dx), 279–280
global (Gx), 278
Intel SpeedStep® technology, 281
processor performance (Px), 280–281
processor power (Cx), 280
sleep (Sx), 278–279
tables, 276
Advanced initialization, platform boot sequence, 164–168
cache control, 165, 166t
configuration storage, 167
debug output, 166, 167f
general-purpose Input/Output, 164
image storage, 168
interrupt controller, 164–165
PCIe bus initialization, 167–168
SATA, 168
SDIO, 168
timers, 165
UART serial ports, 166
USB, 168
Advanced Programmable Interrupt Controller (APIC), 48, 50, 55, See also Interrupt controller
internal error interrupts, 51
layout, 51f
redirection table entry, 54–55, 55f
functional block diagram of, 52, 53f
LVT register, 51–52, 53–54, 54f–52
register map (portion), 52t
sources of interrupts, 50–52
timer, 59–60
timer–generated interrupts, 51
Advanced Telecommunications Computing Architecture (ATCA), 10–11
African Network Information Centre (AfriNIC), 355
AHCI, 72–73
Aligned vectors, 330f
Allocation policy, 139–140
ALOHANET system, 361
Altera, 17
AM_ADDR field, 370–371
Amdahl’s Law, 427–428
American Registry for Internet Numbers (ARIN), 355
Analog cameras, 304
Android, 379–391
activity life cycle, 390f
application
architecture, 384–389
life cycle, 388–389
organization, 385–386
packaging, 388
battery information, 15f
deployment, 391
development environment, 389–391
framework architecture, 381–384
intercomponent communication, 386–388
libraries, 381–383
Linux kernel, 381
platform architecture, 382f
runtime, 383
Virtual Device Manager, 391
Android Development Tools (ADT), 389, 391
AndroidManifest.xml, 388
Apple iOS, 394
Apple iPhone 4
configuration and endpoints, 84t
Application binary interfaces (ABIs), 100, 107–111
data alignment and packing, 108
data representation, 108
function calling conventions, 109–110
name mangling, 111
register usage, 108
relocation/relative addressing, 110–111
stack alignment, 108
Application frameworks, 383–384
Android, 379–391
activity life cycle, 390f
application architecture, 384–389
application life cycle, 388–389
application organization, 385–386
application packaging, 388
deployment, 391
development environment, 389–391
framework architecture, 381–384
intercomponent communication, 386–388
libraries, 381–383
Linux kernel, 381
platform architecture, 382f
runtime, 383
environments, 394–395
overview, 379
application development framework, 392–394
modules, 392–393
QT Creator, 394
signals and slots, 393–394
resources, 395
Application interface, 179–181
Application processors (APs), 153–154
initialization, 163
Application programming interfaces (APIs), 214–215
framework, 383
vector graphics, 300
Application-specific hardware, 17–18, See also Hardware
Application-specific integrated circuit (ASIC), 17
Arithmetic instructions, 114–115
architecture of, 158
Embedded Application Binary Interface, 229
M3–based microcontroller devices, 12
NEON technology, 323
ARMv4 processor, 136
ARMv5 processor, 136
ARMv6 processor, 136
ARMv7 processor, 136
arqn field, 370–371
Asia-Pacific Network Information Centre (APNIC), 355
Assembly-language-critical functions, 484
Asymmetric-key cryptography, 403, 410
Asymmetric multiprocessing, 435–437
concepts and motivation, 436
system organization, 436–437
Atmel AVR Microcontrollers, 12
Attributes of embedded systems
availability, 18–19
central processing unit, 12–13
certification, 18
connecticity, 20
form factor, 15–17
hardware
application-specific, 17–18
expansion of, 17
integration level, 13–14
power consumption, 14–15
reliability, 18–19
security, 20–21
user interfaces, 19–20
ATX power supply, 471, 471f
Audio buses, 93, See also Bus(es)
Audio data path, from DECT to VOIP Interface, 462f
Availability, of embedded systems, 18–19
AVX, 323

B

Base Address Registers (BARs), 44
Baseband processor, 41–42, See also Processor
Base pointer, 102, See also Pointer
Beam forming, 340–342
Bell, Gordon, 23
Binary operations, 115, 116t
bindService(), 389
Bit/byte operations, 117, 117t
Bluetooth, 20, 369–371
application profiles, 370t
history, 369
packet format, 370–371
protocol details, 369–370
Special Interest Group (SIG), 369
usage model, 95–96, 95f
BlueZ Package, 95, 232, 233f
Blu-ray, 21
Boot sequence, embedded Linux system, 244–246
Bootstrap processor (BSP), 153–154
Bottleneck hunting, 492–493
Branch and control flow instructions, 118–119, 118t, 119t
BT656, 304–306
Buffer
management, 215
overflow, 412–413, 413f
Buildroot, 234
Bulk data transfer, 83, See also Data transfer
Bus(es)
addresses, 144–145
analyzers, 468
audio, 93
cluster, 152
drivers, 202, 212–213
enumeration, 74–75
I2C, 89–91, 90f
mastering, 74, 79
PCIe, 44, 167–168
serial peripheral interface, 92, 92f
system interface, 145
System Management, 91–92
universal serial, 80–89, 81f, 82f
Bus Device Function (BDF), 74–75
Busybox, 242–243
Byte ordering, 359

C

Cache, 482
-aligned data buffers, 491
coherency, 142–145
control, 165, 166t
flushing, 143
hierarchy, 138–142, 140f
-optimizing loop, 484
as RAM, 66–67
write policy, 490–491
Cairo Vector Graphics Library, 300
Capability registers, 86
Cellular Telecommunications Industry Association (CTIA), 26
Central processing unit (CPU), 12–13, 425, 431–433, 436–437
initialization, 159
Certificate Authorities (CAs), 403–404
Certification, 18
CFI field, 363–364
Character driver model, embedded Linux system, 250–256
kernel module, 252–256
user space, 250–251
Chassis-based router, 11f
Checksum, 358
Checksum field, 368
Cisco systems, 25
C language optimizations, 486–487
C library, 179, 243–244, 383
clicked() signal, 394
Clocks
operating system, 195–197
asynchronous execution, 196–197
synchronous execution, 195–196
time of day, 197, 198f
source, 56
Coalescing, interrupting, 365
Codec, 321, 337–339
Cold and warm boot, 176–177
COM Express, 16–17, 74
Commercialization, of embedded systems, 36
Common Object File Format (COFF), 174
Compare and Exchange (CMPXCHG), 198–199
Compare and Swap (CAS), 198–199
Complementary metal oxide semiconductor (CMOS), 269
Complex Instructing Set Computing (CISC), 42
Complex programmable logic device (CPLD), 156–157
Complex reciprocal, using intrinsics, 328f
Component attribute, 387
Computation, 24
Configuration storage, 167
Congatec AG, 17
Connection management, 456
Connectivity, 20, 25–27, 26f, 27f
Constant power, 271, See also Power
Consumer electronics, 3
Consumer Electronics Control (CEC), 297
Content providers, 384
Control data transfer, 83, See also Data transfer
Controller Area Network (CAN), 450
Copy on write (COW), 133–134
Copy protection, of embedded displays, 299
Core, 153
Count direction, 57
Counters, 57
Intel, 58–61
cpu_count() function, 431
CPUID instructions, 105–106
CRAMFS, 218
Critical Word First (CWF), 64–65, 140
Cryptography, 402
Current privilege level (CPL), 103–104, See also Privilege levels
CVS, 228
Cyclic redundancy check (CRC), 364

D

Dalvik VM, 383
Das UBOOT, 242
Data field, 368
Data transfer
bulk, 83
control, 83
instructions, 114–115, 115t
interrupt, 83
isochronous, 83
DDR, 62–63
DD WRT Router Firmware, 19f
Debugging, at platform, 465–466, 467f
additional resources, 474–475
process, 466–467, 467f
hardware evaluation, 470–473, 470f
software evaluation, 474
visual examination, 469–470
tools and chipset features, 467–469
bus analyzers, 468
Joint Test Action Group (JTAG) adapters, 469
logic analyzers, 468
oscilloscopes, 468
power-on self-test (POST) cards, 468–469
Debugging, embedded Linux system, 246–249
applications of, 246
cross-target, 247f, 248
Eclipse, 247f
kernel, 247–249
QEMU kernel, 249
Debug output, 166, 167f
Decimal operations, 115, 116t
Decode stage to issue stage, 151
Deferred task/work, 222–223, 223f, 259–260, See also Tasks
Delay function, 320f
Delay locked look (DLL), 161
Destination address, 357, 363–364
Device drivers, 455
models, 202–212
direct memory access, 209–210, 211f
low-level data path, 207–209, 208f, 209f
memory addresses, 210–212
relationships, 203f
Device initialization, 161
Device interconnect—low performance, 89–96
Device interface—high performance, 73–80
Device interrupt delivery, 221–222
Device wear and tear, 218
dev_queue_xmit function, 378
Digital cameras, 30
Digital interface, 304–305
Digital Rights Management (DRM), 21, 299
Digital signal processing (DSP), 317
application examples, 337–346
codec, 337–339
medical ultrasound imaging, 339–343, 340f, 341t
performance results, 344–346, 345t
building blocks, 319–321
data acquisition, 321–322
finite impulse response filter, 332–337
C code, 333
Intel® performance primitives, 333–334, 333f
Intel® SSE, 334, 334f
fixed-point and floating-point implementations, 322–323
implementation options, 325
intrinsics and data types, 325–328
microarchitecture considerations, 325
overview, 318–323
performance primitives, 331–332
signals, 318–319
single instruction multiple data (SIMD), 324
instruction, 324f
microarchitecture and instructions, 324
operating system, 324
vectorization, 328–331
Digital subscriber line access multiplexer (DSLAM), 9
Digital Visual Interface (DVI), 297
Direct memory access (DMA), 209–210, 211f
Directory descriptor entry, 132t
Direct-sequence spread spectrum (DSSS), 366
Disabled counters and statistics, 487
Discrete device expansion, 452
Discrete time signals, 318f
Display
embedded, 297–299
engine, 293–295
pipes, 294f
plane, 293
processing, 343–344
query, 299
screen, 293–297
timing, 299
DisplayPort, 297–298
Distributed Coordination Function (DCF), 367
DIX standard, 361–362
Domain name system (DNS), 360, 415
DRAM controllers, 17, 43–44, 63f, 138, See also Memory
memory banks, separate, 489–490
performance of, 63t
Driver development, embedded Linux system, 249–262
character driver model, 250–256
kernel module, 252–256
user space, 250–251
interrupt handling, 258–262, 261f
PCI device drivers, 256–258
Dual in-line modules (DIMM), 63
Duration field, 368
Dynamic host configuration protocol (DHCP), 360–361
Dynamic power, 269–273, 272f, See also Power

E

E6x5C series package partitioning, 453f
E6XX QSeven module block diagram, 463f
Early initialization, platform boot sequence, 159–163
CPU initialization, 159
device initialization, 161
IA microcode update, 159–161
memory configuration, 161–162
post-memory setup, 162–163
shadowing, 163
Eboot, 171
EBP, 100
EBX, 100, 114
Eclipse, 389–391
debugger, 247f
ECX, 100
Edge packet throttle, 495
EDI, 100
EDX, 100
EEPROM, 91
EFI Development Kit (EDK), 173
EFLAGS register, 101, 102f
EG20T platform controller hub, 448–450, 451f
EGL, 300
eLILO UEFI boot, 175
Embedded Application Binary Interface (EABI), 229
Embedded DisplayPort (eDP), 297–298
Embedded displays, 297–299
copy protection, 299
display query and timing, 299
Embedded graphics, 291–315, 292f
accelerated media decode, 301–303
embedded displays, 297–299
graphics stack, 299–300
media frameworks, 310–315
screen display, 293–297
video capture and encoding, 304–310
Embedded Linux system, See also Linux
anatomy of, 231–234
BlueZ Package, 232, 233f
boot sequence, 244–246
Busybox, 242–243
C library, 243–244
debugging, 246–249
applications of, 246
cross-target, 247f, 248
Eclipse, 247f
kernel, 247–249
QEMU kernel, 249
driver development, 249–262
character driver model, 250–256
interrupt handling, 258–262, 261f
PCI device drivers, 256–258
GNU tools, 227
kernel
building, 234–235, 235f
compressed images, 238f
options, 236–239, 236f
memory management, 262–267
arguments, 263
context, 263
description, 263
function, 262, 263f
kernel allocation, 263–264
kmalloc() function, 232, 266t
page allocation, 264–265
PCI memory allocation and mapping, 265–267
synopsis, 262
user space access from kernel, 262–263
user space, 262
root file system, building, 239–242, 240f
synchronization/locking
atomic operations, 267
semaphore, 268
spinlock, 267–268
tool chain, 227–229
cross-tool chain programs, 230t
tools, getting, 228–229
Embedded systems
applications of, 4, 7t
defined, 3–5
form factors, 4
power of, 4–5
range of, 7
system resources and features of, 5
transition of, 5–7
user assumptions of, 5
Encapsulation and the four-layer internet model, 358f
Encryption and cryptography, 402–404
End of Interrupt (EOI) register, 128
Energy consumption, 30–32, 31t
Enumeration, 212
Envelope detector, 333f, 342–343, 342f
Error Correcting Code (ECC), 19, 66, 70, 162–163
Error messages and basic connectivity, 361
ESI, 100
ESP, 100, 102
ETA system, 436
prototype, 436f
Ethernet, 12, 20, 74–75, 361–365
802.3 frame format, 363f
gigabit ethernet controller and features, 364–365
history, 361–362
packet format, 363–364
protocol description, 362
MAC addresses, 363
Example designs
Intel®Atom™ E6XX series platforms, 445–452
architecture overview, 446–448
platform controller hub(s), 448–452
modular references, 463–464
multimedia design, 458–462
hardware platform, 458–459
software platform, 459–462, 461f
multi-radio communications design, 452–458, 454f, 457f
hardware platform, 452–455
software platform, 455–458
Exception frame, 126, 127f
Exceptions/interrupts model, 121–123, 123t, 124f
Exclusivity, 140–141
Executable and Linking Format (ELF), 229
eXecute in Place (XIP), 155, 163, 238–239
Explicitly don’t vectorize loop, 329f
Explicit registers, 485
EXT2, 202–204
Extended debug ports (XDP), 469
Extended Host Controller Interface (EHCI), 86
register classification, 87–88, 87f
software stack on, 86f
Externally connected I/O devices, 51
Extras attribute, 387

F

Faults, 122
Federal Communications Commission, 18
Federal Information Processing Standards Publications (FIPs), 18
Fedora/Centos, 227–228
Feedback system, 321f
Feedforward system, 320f
Field-programmable gate array (FPGA), 17
expansion of, 18f, 452
File Allocation Table 32 (FAT32), 202–204, 216–217
Filesystem Hierarchy Standard (FHS), 239
Filters and fast Fourier transforms (FFTs), 324
Finite impulse response filter, 332–337
C code, 333
Intel® performance primitives, 333–334, 333f
Intel® SSE, 334, 334f
Firewalls, 416–419
Firmware, 41–42
First in, first out (FIFO), 207–208
scheduler, 186, 187f
fit-PC2, 271–275
Fixed address memory mapped address, 44
Fixed-point implementations, 322–323
Flags, 101
Flash, 202
Floating-point implementations, 322–323
Floating-point units, 104–105
Flow field, 370–371
Flow Label field, 357
Form factors, 4, 15–17
FP/SIMD execution cluster, 152
Fragment Offset, 356
Frame(s)
check sequence (FCS), 364
control field, 367–368
cropping/transforming, 295f
scaling, 295f
FreeBSD, 215
Free RTOS, 12
Free run/one shot, 57
FreeType, 383
Freeing memory, 195, See also Memory
Frequency-hopping spread spectrum (FHSS), 366
From DS field, 367–368
Front end, of processor, 149–151
Full virtualization, systems with, 438
Future of embedded systems, 23–37
challenges and uncertainties, 34–36
commercialization, 36
internet access, 34–35
neutrality, 35
open systems, 34
privacy, 35–36
energy, 30–32
health, 33–34
security, 32
technology trends, 23–30
computation, 24
connectivity, 25–27
sensing, 30
storage, 29
FXRSTOR, 105
FXSAVE, 105

G

General-purpose input/output (GPIO), 48, 96–97, 96f, 164, 448
General purpose registers, 100, 100f, See also Registers
GIT, 228
Gnu
Compiler, 107, 112
Public License 2 (GPL2), 224–225
tools, 227, 246
Google, 380–381
GRand Unified Bootloader (GRUB 2), 170–171
UEFI boot, 174–175
Graphics stack, 299–300, 301f
Graphic user interface (GUI), 393
GStreamer, 310–314, 311f
graph, 312f
graph setup, code flow for, 312f

H

Handset, 379, 395
hard_start_xmit function, 378
Hard disk drive (HDD), 72–73, 170
Hardware
application-specific, 17–18
expansion of, 17
power sequences, 156–157, 157f
support, from receive and transmit ring management, 365
Header Checksum, 356
Header Length, 358
Health, 33–34
Hibernation, 219–220
High-bandwidth Digital Content Protection (HDCP), 299
High-Definition Multimedia Interface (HDMI), 297
High precision event timers (HPET), 58, 165
registers, 59, 60t
Hop Limit, 357
Host access point, 456
Host controller interface (HCI), 95, 204
Hot plug, 74

I

I/O privilege level (IOPL), 104, See also Privilege levels
IA-32, 51
IA microcode update, 159–161
Identification field, 356
IEEE Standard for Floating-Point Arithmetic (IEEE 754), 13
ifconfig
program, 372
commands, 372t
utility, 359–360
Image storage, 168
Immediate operands, 113
Imprecise exceptions, 122–123
Impulse function, 319f
Infineon Bluetooth module, 95
INI-TRAMFS, 218
Inline functions, 484
Input sample waveform for benchmarks, 338f
In-Service Interrupt Request registers, 52–53
Instruction(s)
classes, of processors, 112–121
arithmetic instructions, 114–115
branch and control flow instructions, 118–119, 118t, 119t
data transfer instructions, 114–115, 115t
immediate operands, 113
memory operands, 114
register operands, 113–114
SIMD instructions, 120–121, 120f
structure/procedure instructions, 119
decode, 150–151
-level parallelism, 13
pointer, 101
stall, 488
Instruction Set Architecture (ISA), 42
Insulet Corporation
OmniPod diabetes therapy system, 33, 34f
Integer execution cluster, 152
Integration level, 13–14
Intel®
82546-gb dual port gigabit ethernet controller, 364f
Active Management Technology, 369
architecture
EFLAGS register, 101, 102f
memory map at power-on, 162f
memory protection on, 131
processors, 42
specifics, 48–55
Centrino® Ultimate-N 6300 network adapter, 368, 368f
Core™ 2 Duo, 330–331
Core™ i7 processors, 324
E600 Series Q7 Module, 16f
Hyper-Threading Technology, 150
Integrated Performance Primitives, 331–332
Pentium® II Processor, 324
Pentium® Processor with MMX™ technology, 324
Performance Libraries, 325
Performance Primitives, 325
SIMD Extensions (Intel SSE), 324
SpeedStep® technology, 270, 281
SSE4.2, 324
Supplemental Streaming SIMD Extensions 3 (Intel® SSSE3), 13
timers/counters, 58–61
Xeon™, 51
Intel®Atom™, 8, 13, 21, 43, 50, 380
microstructure, 145–152, 147f, 324
in-order execution, 149f, 150f
integer pipeline, 148f
processor pipeline, 148t
Processor E6xx Series device, 43–44, 63, 91, 156, 166, 172–173, 293, 300, 301f, 321, 322f
architecture overview, 446–448
hardware-based video decoding support, 302–303, 302t
platform controller hub(s), 448–452
video encoding, 308–309
Z530, 272–275
Intent class, 386–387
Intent constants, 386
Inter IC Sound (I2S), 93
Inter-Integrated Circuit (I2C) bus, 89–91, 90f, See also Bus(es)
International Telecommunication Union (ITU), 304–305
Internet, 6
access, 34–35
-embedded devices, 10f
protocol array organization, 377f
Internet Assigned Numbers Authority (IANA), 355, 360
Internet control message protocol (ICMP), 361
Internet Engineering Task Force (IEFT), 213, 354
Internet Security Association and Key Management Protocol (ISAKMP), 410
Internet Society, 354
Interprocessor interrupts (IPIs), 50–51
Interrupt acknowledgment cycle (INTA), 50
Interrupt controller, 44–55, 164–165, 202
8259 Programmable Interrupt Controller, 48, 49f, 50
acknowledgement and priority schemes of, 47, 47f
Advanced Programmable Interrupt Controller, 48, 50, 55
edge-triggered, 48
functions of, 46f
hierarchy of, 55, 56f
level-triggered, 48
Interrupt data transfer, 83, See also Data transfer
Interrupt Descriptor Table (IDT), 123–125, 165
Interrupt handling, embedded Linux system, 258–262, 261f
Interrupt In-Service (ISR), 49
Interrupt latency, 128–130
components of, 129f
Interrupt Mask Register (IMR), 50
Interrupt Request Register (IRR), 49
Interrupt service routines, 483
Intrinsics and data types, 325–328
In-vehicle information systems, 3
iOS, Apple, 394
IP address
dynamic assigning, to hosts, 360–361
mapping, to link-layer addresses, 360
IP Authentication Header, 409–410
ip link commands, 373t
IPv6, 355, 356f
Isochronous data transfer, 83, See also Data transfer

J

Joint Test Action Group (JTAG) adapters, 469
Journaling Flash File System (JFFS2), 69, 202–204, 217–218

K

Kermit, 94
Kill-a-Watt meter, 283
kmalloc() function, 232, 266t
Kontron, 17

L

Latin American and Caribbean Internet Addresses Registry (LACNIC), 355
LCD panel, embedded display connection to, 298f
Legacy interrupts, 258
Legacy operating system boot, 169–173
LIBVA library, 310
Licensing, operating system, 224–225
Licensing Verification Library, 391
Lighttpd, 456
Linaro project, 234
Line-allocation policy, 490
capture loop, video for, 308f
GNU C Library (GLIBc), 179, 180f
Kernel, 69, 107, 135, 166
scheduler, 189–190
timer and clock services in, 196–197
MMAP buffer mapping, video for, 306, 307f
networking, 372–378
kernel networking structures, 376–378
network stack, 376f
programming sockets in C, 372–374
tools and monitor and control network interfaces and sockets, 372
New API (NAPI), 215–216
PowerTOP tool, 282–289
scatter gather list, 207
security, 21
SMP support, 433–435
storage file systems, 216
Ubuntu, 227–228, 272
uCLinux, 194
USB driver, 89
Vservers, 439
Linux Standard Base (LSB), 239
Lip syncing, 303
Live lock, 215–216
Local area networks (LANs), 361
Local interrupt controller (LAPIC), 153–154
Local interrupt sources, 51
Locally connected I/O devices, 50
Local variables, minimizing, 485
Local vector table (LVT), 51, 53–54, 54f, 60, 164–165
Logical operations, 116, 116t
Logical processor organization, high-level depiction of, 432f
Logic analyzers, 468
Logic gate memory, 137–138, See also Memory
Low-level data path, 207–209, 208f, 209f
Low Voltage Differential Signal (LVDS), 297–298

M

Machine check exceptions, 122
Machine State Register (MSR), 158
Magnetic media hard drives, 156
Main Memory Address Range, 43–44
map() method, 431
Masking interrupts, 126–128
Mass storage, 138, See also Memory
Media access control (MAC) protocol, 362
Media frameworks, 310–315
GStreamer, 310–313, 311f, 312f
OpenMAX, 313–315
Media libraries, 383
Media phone reference, 460f
Medical ultrasound imaging, 339–343, 340f, 341t
Medium dependent interface (MDI), 364–365
Meego, 239
IVI home screen user interface, 20f
Memory
addresses, 210–212
alignment property and discarding assumed data dependences, 330f
allocation, 191–195, 192f
freeying memory, 195
swapping memory, 194–195
virtual memory and protection, 192f, 193–195, 193f, 194f
configuration, 161–162
execution cluster, 117, 151–152
flash, 156
hierarchy, 136–145, 137f
management, embedded Linux system, 262–267
arguments, 263
context, 263
description, 263
function, 262, 263f
kernel allocation, 263–264
kmalloc() function, 232, 266t
page allocation, 264–265
PCI memory allocation and mapping, 265–267
synopsis, 262
user space, 262
user space access from kernel, 262–263
mapping, 130–131, 171
operands, 114
protection, 130–131
shared, 435
technology, 145
types of, 141–142
Memory management unit (MMU), 130–136, 132f, 132t, 133t
directory descriptor entry, 132t
page table entry, 133t
translation caching, 135
Memory-mapped I/O (MMIO), 43–44, 61–62, 75, 167
Memory Type Range Registers (MTRRs), 141
Mercurial, 228
MESI (modified, exclusive, shared, invalid), 143–144
cache line states, 144t
Message queues, 435
Message signal interrupts (MSI), 48, 258
Message Signal Interrupts eXtension (MSIx), 258
Metal oxide semiconductor field effect transistors (MOSFETs), 269
MF field, 367–368
Microphones, 30
MIME type, 387
MIPS, 42
MMAP buffer mapping, 306, 307f
Mobile Industry Process Interface Alliance (MIPI), 298
Model View Controller (MVC), 459–460
MontaVista Linux, 239
Moore’s Law, 24, 30, 36, 269–270
trend for, 25f
MPEG2, 308–309
MPEG4, 308–309
MSI/MSI-X, 79
Multi-card PXE download scenario, 177f
Multi-core boot, 153–154, 428, 432
Multilevel secure (MLS), 18
Multimedia acceleration, 291–315
Multi Media Card (MMC), 72, 155
Multimedia design, 458–462
hardware platform, 458–459
software platform, 459–462, 461f
Multiple input multiple output support (MIMO), 369
Multiply Accumulate operation (MAC), 323
Multiply function, 320f
Multiprocessing, 424–433
asymmetric multiprocessing, 435–437
concepts and motivation, 436
system organization, 436–437
history and motivation, 424–428
example, 428–432
impact on systems and software, 432–433
physical versus logical cores, 432
symmetric multiprocessing, 433–435
interprocess communication, 435
Linux SMP support, 433–435
overview, 433
Multi-processor boot, 153–154
Multi-processor specification, 171
Multi-radio communications design, 452–458, 454f, 457f
hardware platform, 452–455
software platform, 455–458
Multithreading, 426, 427f
Mutual exclusion/synchronization, 197–202

N

Names and addresses, translating, 360
NAND
controllers, 72
device representation, 71f
flash memory, 70–72, 73t, 155
interfaces, 71–72
Native boot environments, 175
net_device struct, 378
Netfilter, 417
Netflix, 6, 21
netif_receive_skb function, 378
netif_rx function, 378
Netstat program, 360
commands, 373t
Network(ing), 213–216
acceleration, 216
address translation (NAT), 355
buffer management, 215
device drivers, 202
polling interface, 215–216
stack and device drivers, 214f
stack, 456
Network connectivity, 347–348
basics, 349–353
layering and network software, 349–350
node operation and network hardware, 350
sockets, 351–353, 351t
bluetooth, 369–371
application profiles, 370t
history, 369
packet format, 370–371
protocol details, 369–370
ethernet, 361–365
802.3 frame format, 363f
gigabit ethernet controller and features, 364–365
history, 361–362
MAC addresses, 363
packet format, 363–364
protocol description, 362
TCP/IP networking, 353–361
addresses, packets, and routes, 355–359
governance, IETF, and RFCs, 354–355
port numbers, byte ordering, and OS tools, 359–360
supporting protocols and services, 360–361
Wi-Fi and IEEE 802.11, 365–369, 366t, 367f
frame format, 367–368
history, 366
protocol description, 366–367
Wi-Fi adapter and features, 368–369
Network Time Protocol (NTP), 197
Neutrality, 35
New API (NAPI), 215–216
New Technology File System (NTFS), 216
Next Header field, 357
Node operation, 349
Non-maskable interrupt (NMI), 57
Nonvolatile storage, 67–73
hard disk drives, 72–73
NAND
controllers, 72
flash memory, 70–72
interfaces, 71–72
NOR flash memory, 68–70
solid state drives, 72–73
Nonvolatile storage technologies, price trends for, 29f
NOR flash memory, 68–70, 73t, 155
Notification manager, 384
Nyquist sampling theorem, 318

O

OKI Semiconductor, 450
OmniPod diabetes therapy system, 33, 34f
On-chip memory, 491
One Time Protect/Programmable (OTP) storage, 70
onPause() method, 389
onReceive(), 389
onRestoreInstanceState(), 389
onSaveInstanceState(), 389
OpenEmbedded, 234
OpenGL, 300, 383
OpenGL ES, 300
Open Handset Alliance, 380
Open Host Controller Interface (OHCI), 85
OpenMAX, 313–315
application layer, 313–314, 313f
capabilities, 314f
integration layer, 314
OpenMAX DL, 314–315
summary, 315
Open Mobile Alliance (OMA), 457–458
Open NAND Flash Interface (OnFi), 71–72, 155
Open systems, 34
OpenVG, 300
Operating system (OS)
application interface, 179–180
boot loader, 171–173, 172f
buffer pool, avoiding, 486
device driver models, 202–212
direct memory access, 209–210, 211f
low-level data path, 207–209, 208f, 209f
memory addresses, 210–212
handoff, 171
memory allocation, 191–195, 192f
freeying memory, 195
swapping memory, 194–195
virtual memory and protection, 192f, 193–195, 193f, 194f
mutual exclusion/synchronization, 197–202
networking, 213–216
acceleration, 216
buffer management, 215
polling interface, 215–216
organization of multiprocessor-aware, 433f
process, 181–186
real-time behavior of, 221–224
adjuncts, 224–225
characteristics of, 223–224
deferred task, 222–223, 223f
device interrupt delivery, 221–222
interrupt delivery to thread flow, 221f
processor interrupt handler, 222
scheduling, 186–191
FIFO scheduler, 186, 187f
Linux Kernel’s scheduler, 189–190
POSIX-compliant scheduler, 190–191
round-robin scheduler with priority and preemption, 187–189, 188f
service calls, 180–181, 180f
storage file systems, 216–219
device wear and tear, 218
power interactions, 219
tasks, 181–186
state, 184–186, 185t
state transitions, 184–186, 185f
threads, 181–186
timer and clock services, 195–197
asynchronous execution, 196–197
synchronous execution, 195–196
time of day, 197, 198f
Operational registers, 87
Optimized hardware register use, 485–486
Optimized libraries, 491–492
Options field, 357
Organization for Economic Cooperation and Development (OECD)
Directorate for Science, Technology and Industry, 27
Orthogonal frequency-division multiplexing (OFDM), 366
Oscilloscopes, 468

P

Package, 153
Packet analyzers, 360
Packet processing engine (PPE), 436–437
Page table entry, 133t
Paravirtualization, 438–439
Path Maximum Transmission Unit (PMTU), 213
PC/104 Consortium, 16–17
PCH power-on-timing diagram, 472f
PCI Express (PCIe), 12, 17
bus, 44
initialization, 167–168
physical hierarchy of, 76f
PCI-SIG, 74, 77–78
Pentium 4, 51
Perceptual Evaluation of Speech Quality (PESQ) score, 339
Performance tuning, 477
code and design, 483–487
assembly-language-critical functions, 484
avoiding OS buffer pool, 486
cache-optimizing loop, 484
C language optimizations, 486–487
disabled counters and statistics, 487
explicit registers, 485
inline functions, 484
interrupt service routines, 483
minimizing local variables, 485
optimized hardware register use, 485–486
reordered struct, 483
general approaches, 478–482
best complier for application, 480–481
compiler optimizations, 481
data cache, 482
defined performance requirement, 478
performance design, 478–479
premature code tuning avoidance, 479
slam-dunk optimization, 480
step-bystep records, 479–480
networking techniques, 492–496
bottleneck hunting, 492–493
environmental factors, 494–496
traffic generator and protocols evaluation, 493–494
patterns, 477
processor-specific, 488–492
avoidance of modulo/divide, 492
cache write policy, 490–491
cache-aligned data buffers, 491
line-allocation policy, 490
on-chip memory, 491
optimized libraries, 491–492
prefetch instructions, 489
profiling tools, 488
separate DRAM memory banks, 489–490
stall instructions, 488
Peripheral Component Interconnect (PCI), 74–80, 448
configuration header, 77, 77f
device drivers, embedded Linux system, 256–258
logical view, 449f
memory allocation and mapping, 265–267
Physical (PHY) device, 362, 364–365
Piconet, 369
Pipeline, 426, 426f
Pipes, 435
Plane mapping/blending, 294f
Platform and content security, 400t
security concepts and building blocks, 402–420
encryption and cryptography, 402–404
firewalls, 416–419
secure shell (SSH), 407–408
security architecture for IP (IPSec), 408–411
security attack categories, 411–416
servers and logs, 419–420
Transport Layer Security (TLS), 404–407
two-factor authentication, 411
security principles, 398–401
availability, 401
confidentiality, 401
integrity, 401
support, 420–421
Platform architecture, of embedded systems
device interconnect—low performance, 89–96
device interface—high performance, 73–80
DRAM controllers, 43–44, 62–66, 63f
general-purpose input/output, 48, 96–97, 96f
interrupt controller, 44–55, 46f, 47f
nonvolatile storage, 67–73
power delivery, 97
processor, 41–43
SRAM controllers, 66–67
system memory map, 43–44, 45f
Universal Serial Bus, 80–89, 81f
Platform boot sequence
advanced initialization, 164–168
cache control, 165, 166t
configuration storage, 167
debug output, 166, 167f
general-purpose input/output, 164
image storage, 168
interrupt controller, 164–165
PCIe bus initialization, 167–168
SATA, 168
SDIO, 168
timers, 165
UART serial ports, 166
USB, 168
application processors initialization, 163
cold and warm boot, 176–177
early initialization, 159–163
CPU initialization, 159
device initialization, 161
IA microcode update, 159–161
memory configuration, 161–162
post-memory setup, 162–163
shadowing, 163
flow, 160f
hardware power sequences, 156–157, 157f
image storage boot considerations, 156t
legacy operating system boot, 169–173
OS boot loader, 171–173
OS handoff, 171
multi-core and multi-processor boot, 153–154
reset, 157–159
technology considerations, 154–156
unified extensible firmware interface, 173–176
Point Coordination Function (PCF), 367
Pointer
base, 102
instruction, 101
stack, 102
Polled packet processor, 494–495
Polling interface, 215–216
pool() method, 431
Portable Executable (PE), 174
Port numbers, 359
POSIX-compliant scheduler, 190–191, 198
complexity of, 190–191
Post-memory setup, 162–163
Power, 4–5, 31t
active, 269
basics, 269–270
constant, 271
consumption, 14–15
delivery, 97
dynamic, 269–273, 272f
efficiency, 273–275, 274f
interactions, 180f, 219
management, 219–220
performance, optimizing software for, 281–289
Linux PowerTOP tool, 282–289
race to sleep, 281–282
profile, of embedded systems, 270–271
Power-on self-test (POST) cards, 468–469
Power-on signal timing, 472f
for AMI BIOS, 473f
PowerPC, 42–43
Power supply timing diagram, 471f
PowerTOP, 282, 284–289
interactive console interface, 283f
software and systems evaluation using, 284–289
usage of, 282–284
PPC Architecture, 158
Preamble field, 363
Preboot execution environment (PXE), 169–170, 365
Precise exceptions, 122–123
Predecode bits, 150
Prefetch instructions, 489
Priority field, 363–364
Priority inversion, 199
Privacy, 35–36
Privilege levels, 103–104
current, 103–104
I/O, 104
Processor, 41–43
baseband, 41–42
interrupt handler, 222
specifics, 105–107
Processor architecture, of embedded systems
32-bit execution environment, 99–107, 103f
acknowledging interrupts, 128
application binary interfaces (ABIs), 100, 107–111
exception frame, 126, 127f
exceptions/interrupts model, 121–123, 123t, 124f
floating-point units, 104–105
instruction classes, 112–121
masking interrupts, 126–128
memory
hierarchy, 136–145
management unit, 130–136, 132f, 132t, 133t
mapping, 130–131
memory protection, 130–131
privilege levels, 103–104
processor specifics, 105–107
vector table structure, 124–126
Product requirements document (PRD), 458
Profile-based approach, and bluetooth, 370
Profiling tools, 488
Programmable interrupt routing (PIR), 171
Programmable Interrupt Timer (PIT), 58, 165
Programmable logic controller (PLC), 21
Programming interface, 85–88
Protocol agnostic interface, 376
Protocol field, 356
Protocol layering, 349, 350f
PS_ON# signal, 471
Public-key cryptography, 403
Public-key infrastructure (PKI), 404
Pulse Code Modulation (PCM), 95
Python, 352–353, 364

Q

application development framework, 392–394
modules, 392–393
QT Creator, 394
signals and slots, 393–394
QtCore module, 392
QtGui module, 392
QtMultimedia module, 392
QtNetwork module, 392
QtOpenGL module, 392
QtSql module, 392
QtWebKit module, 392
QVBoxLayout class, 393

R

Race to sleep, 281–282
RAMFS, 218
RAS CAS Delay (tRCD), 63–64
RDTSC instruction, 107
Real-time clock (RTC), 470–471
Real-time operating system (RTOS), 12, 221–224, See also Operating system
adjuncts, 224–225
characteristics of, 223–224
deferred task, 222–223, 223f
device interrupt delivery, 221–222
interrupt delivery to thread flow, 221f
processor interrupt handler, 222
Receive beam former, 340–342, 341f, 342f
Reduced Instruction Set Computing (RISC), 42
Register_netdevice, 378
Registers
general purpose, 100, 100f
operands, 113–114
segment, 100–101
Reliability, of embedded systems, 18–19
Remote Interrupt Request Register (RIRR), 55
Reordered struct, 483
reqCode value, 388
Request for Comments (RFC) process, 354–355
Reset, 157–159
Resistive compensation (RCOMP), 161
Resource collision detection, 496
Resource managers, 384
Retry field, 367–368
RIPE NCC, 355
Root complex integrated end points, 448
Root file system (ROOTFS), 218
building, 239–242, 240f
Round-robin scheduler with priority and preemption, 187–189, 188f
Row Address Strobe (RAS), 63–64
RSA, 403

S

Safe instruction recognition, 152
Safety Integrity Level (SIL), 18
Sampling frequency, 318
Scatter gather list, 205–207, 206f
sched_set_affinity(), 435
Scheduling, operating system, 186–191
FIFO scheduler, 186, 187f
Linux Kernel’s scheduler, 189–190
POSIX-compliant scheduler, 190–191
round-robin scheduler with priority and preemption, 187–189, 188f
Screen composition, 296–297, 296f
Screen display, 293–297
display engine, 293–295
screen composition, 296–297, 296f
window management, 296
Secure Digital I/O (SDIO), 155, 168
Secure shell (SSH), 407–408
Security, 20–21, 32
architecture for IP (IPSec), 408–411
association, 410
attack categories, 411–416
Segment registers, 100–101, See also Registers
Semaphores, 435
timeline, 199–200, 200f
Sensing, 30
Sequence field, 368
Sequence Numbers, 358
Serial Advanced Technology Attachment (SATA), 72–73, 168, 202
Serial Digital Video Out (SDVO), 297–299
Serial Peripheral Interface (SPI) bus, 92, 92f, 155, See also Bus(es)
Serial port drivers, 202
Serial Presence Detect (SPD), 63
Servers and logs, 419–420
Service attack denial, 415–416
Service calls, operating system, 180–181, 180f
design pattern of, 181f
SGL, 383
Shadowing, 163
Shared memory, 435, See also Memory
Shift/rotate operations, 117, 117t
Shuffle behavior, 327f
Signal floating-point exception (SIGFPE), 104
Signals, 435
Simple firmware interface, 171
Simple vector multiply loop, 329f
Single-board computers (SBCs), 15
Single instruction multiple data (SIMD), 324
instructions, 120–121, 120f, 324f
microarchitecture and instructions, 13, 105, 324
operating system, 324
Single-key cryptography, 402
sk_buff struct, 378
organization, 377f
Skins, 441, 442f
SKTOCC# signal, 471
Slam-dunk optimization, 480
Small outline dual in-line memory module (SODIMM), 162
Snoop cycles, 143
Social engineering and phishing, 416
Sockets interface, 351
softIRQs, 260
Solid state drives (SSDs), 72–73, 73t, 155, 170
Source address, 357, 363–364
Spin lock, 199
Spread spectrum, 366
SQL injection, 413–415
SQLite, 383
SRAM controllers, 66–67, 137–138, See also Memory
Stack frames, 127f
Stack pointer, 102, See also Pointer
startActivityForResult(), 387
Start of Frame field, 363
Startup Inter Processor Interrupt (SIPI), 154
Step function, 319f
ST Microelectronics, 450
stopSelf(), 389
stopService(), 389
Storage, 29
file systems, 216–219
device wear and tear, 218
power interactions, 219
Strong un-cacheable memory, 141
Structure/procedure instructions, 119
Subversion, 228
Supervisory control and data acquisition (SCADA), 11, 21
Supplemental Streaming SIMD Extensions 3 (SSSE3), 105, 121, 323
Surface manager, 381
SUSE/OpenSuse, 227–228
Swapping memory, 194–195, See also Memory
Switched ethernet LAN, 362f
Symmetric key cryptography, 410
Symmetric multiprocessing, 433–435
interprocess communication, 435
Linux SMP support, 433–435
overview, 433
Synchronization/locking, embedded Linux system
atomic operations, 267
semaphore, 268
spinlock, 267–268
SYN flood method, 415
sysfs entry, 378
Syslinux, 171
System bus interface, 145
System Management Bus (SMBus), 91–92, See also Bus(es)
System memory map, 43–44, 45f
System on chip (SOC), 13–14, 41–44, 42f, 153
System resources, 5

T

Tasklets, 260
Tasks, 181–186, 183f
deferred, 222–223, 223f
state transitions, 184–186, 185f
state, 184–186, 185t
Task State Segment (TSS), 126
TCP/IP networking, 353–361
addresses, packets, and routes, 355–359
governance, IETF, and RFCs, 354–355
port numbers, byte ordering, and OS tools, 359–360
supporting protocols and services, 360–361
Telephony, 3
Thermal design power (TDP), 4, 272
Thermal sensor interrupts, 51
32-bit execution environment, 99–107, 103f
Thread(s/ing), 153, 181–186, 183f
library, 431
Thread Local Storage (TLS), 100–101
3G/4G cellular technologies, 20, 452–458
Throughput-oriented applications, 428
Tightly coupled memory (TCM), 138
Time of day, 197, 198f
Timers, 55–61, 165
accuracy of, 56–57
attributes of, 56–57
configuration of, 57, 58f
HPET registers, 60t
Intel, 58–61
operating system, 195–197
asynchronous execution, 196–197
synchronous execution, 195–196
time of day, 197, 198f
PIT registers—in/out space, 59t
summary, 61
To DS field, 367–368
Total device power (TDP), 14
Total length, 356
Touchscreen interface chip, 459
TPID field, 363–364
Traffic generator and protocols evaluation, 493–494
Transaction ordering, 80
Translation caching, 135
Translation look-aside buffers (TLBs), 110
Transmission control protocol (TCP), 213, 352
Transmit descriptor ring, 211f
Transport Layer Security (TLS), 404–407
Traps, 123
Trusted Platform Module (TPM), 421
TTL field, 356
Two-factor authentication, 411
Type field, 363–364, 370–371

U

Ubuntu, 227–228, 272
uCLinux, 194
unBindService(), 389
Un-cacheable memory, 141
Unified extensible firmware interface (UEFI), 173–176
Development Kit (UDK2010), 173
Universal asynchronous receiver/transmitter (UART), 93–96, 166
16550A, 94
Universal Host Controller Interface (UHCI), 85, 88
Universal Serial Bus (USB), 80–89, 81f, 168, See also Bus(es)
interface, 155
Linux driver, 89
On-The-Go, 81–82, 86
transaction phases of
Universal Host Controller Interface, 88
unregister_netdevice, 378
User datagram protocol (UDP), 213, 352, 352f, 353f, 357, 357f, 373f, 374f
User interface elements, 384
User interfaces, 19–20

V

VAAPI, 310
Vectorization, 325, 328–331
Vectorized assuming no data dependency, 330f
Vector table structure, 124–126
VeriSign, 360, 404
Version field, 357
VESA, 298
Vice codec encode benchmarks, 338t
VideoAccelerationAPI, 303
Video capture, 304–315
color space, 305
drivers, 305–308
hardware path, 304f
Video encoding, 308–310, 308t
stack, media, 309f
Video for Linux 2 (V4L2), 305–307
Virtualization, 437–438
basic concepts, 437–438
history and motivation, 437
methods for platform
hardware support, 439
Linux Vservers, 439
paravirtualization, 438–439
Xenomai, 440–441
Virtual LAN (VLAN), 363–364
Virtual machine monitor, basic organization of, 438f
Virtual memory and protection, 192f, 193–195, 193f, 194f, See also Memory
Visual Network Index (VNI), 25–26, 348
Volatile memory technologies, 61–67
VServers, Linux, 439
VxWorks, 244, 495
boot loader, 171–173
branch and control flow instructions in, 118
buffer management, 215
message queues, 201–202, 201f
mutual exclusion/synchronization, 199
process, 181–182
task control block in, 184
task synchronization, 200, 201f
timer and clock services in, 196–197
UEFI boot, 175, 175t

W

Watchdog timer (WDT), 57, See also Timers
Watson, Thomas J., 23
WebKit, 383
Web server process, 456
Wi-Fi, 9, 20, 452–456, 459
and IEEE 802.11, 365–369, 366t, 367f
frame format, 367–368
history, 366
protocol description, 366–367
Wi-Fi adapter and features, 368–369
Window field, 358
Window management, 296
Wind River Linux, 239
Wired equivalent privacy (WEP), 367–368
Work queues, 260
Write-back memory, 141–142
Write-back policy, 490
Write combining memory, 141
Write One to Clear, 46
Write protected memory, 142
Write-through memory, 141
Write-through policy, 490

X

x87 Floating-Point Unit (FPU), 104
asymmetric system, 440f
Xenomai, 440–441, 441f
nano-kernel approach, 441f
Xilinx, 17
Xiph.Org Foundation, 310–311
XServer, 250

Y

Yet Another Flash File System (YAFFS2), 217–218
Yocto Project™, 234–239

Z

Zigbee, 20, 452–456
..................Content has been hidden....................

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