Index

As this ebook edition doesn't have fixed pagination, the page numbers below are hyperlinked for reference only, based on the printed edition of this book.

Symbols

6LoWPAN 215, 216

8-bit microcontrollers 5

32-bit cores

characteristics 17

A

Access Control Register (ACR) 121

ACK 177

address frame 177

Ad-hoc, On-demand, Distance Vector (AODV) 231

Advanced Encryption Standard (AES) 16

Advanced Peripheral Bus (APB) bus 131

analog-to-digital signal converter (ADC) 145

Application 82

application binary interface (ABI) 73

application protocols 237

distributed systems 239

message protocols 238

REST architectural pattern 238

ARM Cortex-M

address space 90, 91

ARM reference design 16, 17

asymmetric cryptography 61

B

Better Approach to Mobile Ad Hoc Networking (B.A.T.M.A.N.) 231

bitwise operations 118

examples 118

block-based SRAM protection 301, 302

Block Started by Symbol (BSS) 22

Bluetooth technology 216

boot code

application, running 80

building 77

makefile 77-80

running 77

bootloader 81-83

boot, stages 80, 81

bootloader 81-83

image, building 83

multi-stage system, debugging 84, 85

remote firmware updates 87

secure boot 87

shared libraries 85, 86

bug report 55

C

C compiler 20

commit 54

communication

authentication 233

confidentiality 233

integrity 233

Configurable Fault Status Register (CFSR) 74

configuration-management tools 53, 54

activities, tracking 55

code reviews 56

continuous integration 56, 57

revision control 54, 55

context switching 244, 247-249

Continuous Integration (CI) 62

Controller Area Network (CAN) bus 6

Core-Coupled Memory (CCM) 92

Cortex-M 38

Cortex Microcontroller Software Interface Standard (CMSIS) 58

Cortex-M instruction

barriers 93, 94

Cortex-M microprocessor 17, 18

cross compilation 21

cross compiler 21

cross compiler, GCC toolchain 29-31

crosstool-NG 31

cryptography algorithms 61

D

DAC controllers 11

DASH7 218

data memory barrier (DMB) 94

data synchronization barrier (DSB) 94

debugger 25

Destination Sequence Distance Vector (DSDV) 231

development boards 204, 205

Device Firmware Upgrade (DFU) 40

Digital Rights Management (DRM) 292

Direct Memory Access (DMA) 156

distributed embedded systems

challenges 15

Doxygen 66

dynamic IP routing

proactive dynamic-routing protocols 230

reactive dynamic-routing protocols 230

E

earliest-deadline-first scheduling (EDF) scheduling 265

efficiency 44

embedded Linux systems 4

embedded operating systems 282, 283

FreeRTOS 284-286

Riot OS 286-288

selecting 283, 284

embedded project, life cycle 62, 63

API 65, 66

documentation 66

project steps, defining 63, 64

prototyping 64, 65

refactoring 65

embedded systems 3, 5

8-bit microcontrollers 5

challenges 8, 9

hardware architecture 5, 7

multithreading 9

embedded TCP/IP stack implementations 264

emulators 48

enable wake-up pin (EWUP) 194

end of conversion (EOC) 148

Ethernet 214

Ethernet MAC controller 214

event mask register (EMR) 144

Executable and Linkable Format (ELF) 21

execute in place (XIP) 10, 121

execution program status register (xPSR) 250

execution stack 94, 95

overflows 96, 97

painting 98, 99

placement 95, 96

EXTI 143

F

falling trigger select register (FTSR) 144

fault handlers 73, 74

flash memory 10, 11, 300

flash power down in deep sleep (FPDS) mode 194

FreeRTOS 284-286

heap memory management 285

functional tests 43, 57

G

GCC toolchain 19, 29

binary format conversion 37

compiler, compiling 31, 32

cross compiler 29-31

executable, linking 32-37

general-purpose input/output (GPIO) 11, 133

analog input 145-148

ADC controllers 11

DAC controllers 11

digital input 142

digital output 134-137

interrupt-based input 143-145

pin configuration 133

Pulse Width Modulation (PWM) 12, 137-141

timers 12

Generic Attribute Profile (GATT) 216

generic timers 129-133

registers 130

Gerrit 56

Git 54

Global TrustZone Controller (GTZC) 300

GNRC 287

GNU Compiler Collection (GCC) 20

GNU Debugger (GDB) 25, 43

commands 41-43

session 40, 41

GNU GCC manual

reference link 31

GPIOx_SECCFG register 303

GTZC configuration 301, 302

H

hash algorithms (SHA) 61

heap management 99, 100

custom implementation 100-102

heap, limiting 104, 105

multiple memory pools 105-107

newlib, using 103, 104

usage errors 107-109

heap memory management

approaches 288

I

Implementation-Defined Attribution Unit (IDAU) 297

In-Application Programming (IAP) 10

input data register (IDR) 142

input/output (I/O) device 256

Input/Output (I/O) interface 234

instruction synchronization barrier (ISB) 94

integrated environments

versus text editors 28

inter-domain transitions 307-310

interfaces 12

Inter-integrated circuit (I2C) bus 13, 175, 176

clock stretching 179, 180

controller, programming 180-183

interrupt handling 184

multiple masters 180

protocol description 177-179

URL 176

International Electrotechnical Commission (IEC) 215

International Society of Automation (ISA) 215

Internet of Things (IoT) 14

Internet Protocol (IP) 14

interrupt controller 118

peripherals’ interrupt configuration 119, 120

interrupt mask register (IMR) 144

interrupt service routines (ISRs) 70

interrupt vector table (IVT) 69, 70, 91

fault handlers 73, 74

reset handler 72, 73

stack, allocating 73

startup code file 71, 72

IPs 220

connectionless protocols 229

custom implementations 220

dynamic routing 230-232

mesh networks 229-232

network device drivers 221-223

socket communication 226-229

standard protocols 220

TCP/IP stack 220, 221

TCP/IP stack, running 223-226

isolation mechanisms 15

Issue tracking systems (ITSs) 54

using 55

J

Jenkins 56

L

libopencm3 58

lightweight IP stack (lwIP) 221

linker 21, 22

linker script 32

linking process 32

link register (LR) 250

Linux kernel 4

Load Memory Address (LMA) 75

Load Register Exclusive (LDREX) 270

local 4444 TCP port 38

LoRa/LoRaWAN 217

low-power deep sleep (LPDS) mode 194

low-power embedded applications

busy loops, replacing with sleep mode 205, 206

clock speed, selecting 207

deep sleep mode, during longer inactivity periods 206

designing 205

power state transitions 207, 208

low-power operating modes 192

deep-sleep configuration 193-195

normal operation mode 192

sleep mode 192, 195

standby mode 192, 198-202

stop mode 192, 195-198

wait for event (WFE) instruction 193

wait for interrupt (WFI) instruction 193

wake-up time intervals 203

Low-Speed External (LSE) 200

Low-Speed Internal (LSI) 200

LR-WPANs 214, 215

industrial link-layer extensions 215

M

makefile 23, 77-80

Make tool 22-25

reference link 25

Master Stack Pointer (MSP) 274

Media Access Control (MAC) 212, 213

6LoWPAN 215, 216

Bluetooth 216

ethernet 214

Low-Power Wide Area Networks (LPWANs) 217

Low-Rate Wireless Personal Area Networks (LR-WPANs) 214, 215

LR-WPAN industrial link-layer extensions 215

mobile networks 217

Wi-Fi 214

memory-array allocator 288

memory layout 74-77

memory management unit (MMU) 4, 8

memory mapping 90

address space 90, 91

code region 91

memory model 90, 91

order of memory transactions 93, 94

peripheral-access regions 93

RAM regions 92

system region 93

memory protection unit (MPU) 17, 109

configuration registers 109

programming 110-114

merge operation 55

Message-Queuing Telemetry Transport (MQTT) protocol 238

microcontrollers 7

components 5

development boards 204

low-power operating modes 192

power, measuring 204

microcontroller unit (MCU) 5, 143

Micro IP (uIP) 221

Mobile Ad Hoc Networks (MANETs) 230

Most Significant Bit (MSB) 178

move special from register (msr) 82

MPU Control Register 109

MPU Region Attribute and Size Register 109

MPU Region Number Register 109

MPU Type Register 109

multi-stage system

debugging 84, 85

mutexes 269

mutex (mutual exclusion) 273

N

Nested Vector Interrupt Controller (NVIC) 17, 118

network interfaces 212

selecting 218, 219

Non-Secure Callable (NSC) 296

Non-Secure (NS) execution domain 295

Non-secure applications

compiling 306, 307

linking 306, 307

O

one-time static allocation 288

on-the-go (OTG) mode 14

OpenOCD target

interacting with 37-40

Open On-Chip Debugger (OpenOCD) 38

Optimized Link-State Routing (OLSR) 231

P

pending interrupt register (PR) 144

PendSV 247

peripherals 12

peripherals’ interrupt configuration 119, 120

phase-locked loop (PLL) 120

Physical Layer Transceiver (PHY) 212

picoTCP 221, 231

POSIX tool 22

power

measuring 204

power down in deep sleep (PDDS) mode 194

preemption 244

preemptive scheduler 255

priority inheritance 274

priority inversion 273

Process Stack Pointer (PSP) 274

program counter (PC) 250

pulse-wave modulation (PWM) 12

Pulse Width Modulation (PWM) 137

registers 139

Q

Quick EMUlator (QEMU) 48, 125

R

R0-R3 250

RAM 9, 10

Raw Interrupt Status (RIS) register 125

real-time clocks (RTCs) 191

real-time operating systems (RTOSs) 128

real-time processing 4

real-time systems 4

reduced instruction set computer (RISC) 16

refactoring 63

reference board 204

reference platform 16

ARM reference design 16, 17

characteristics 16

Cortex-M microprocessor 17, 18

Regulator Voltage-Scaling Output Selection (VOS) 194

Reload Value Register (RVR) 127

Renode 48, 49

URL 48

repository control platforms 56

Reset and Clock Control (RCC) register 121

reset handler 72, 73

REST

architectural pattern 238, 239

REST-based communication 237

revision control system 54

rings 292

Riot OS 286-288

rising trigger select register (RTSR) 144

S

Secure access

configuring, to peripherals 302, 303

sandboxing 291-293

Secure application entry point 304, 305

compiling 305, 306

linking 305, 306

SAU_CTRL 298

SAU_RBAR 298

SAU_RLAR 298

SAU_RNR 298

scheduler implementation 252

concurrency and timeslices 255, 256

cooperative scheduler 254, 255

I/O events, waiting from specific resources 262-264

real-time scheduling 264-269

supervisor calls 252-254

securable peripherals 302

Secure Encrypted Virtualization (SEV) 293

Secure Gateway (SG) 305

Secure (S) execution domain 295

Secure Socket Layer (SSL) 15, 234

Security Attribution Unit (SAU) 297

regions 299

security considerations

hardware cryptography 62

software cryptography 61

untrusted code, running 62

vulnerability management 60, 61

semaphores 269-272

sem_trywait function 270

events sequence 270

sequence registers (SQRs) 148

serial clock (SCL) 13

serial communication 154

bus wiring 155, 156

clock and symbol synchronization 155

peripherals, programming 156

serial data (SDA) 13

Serial Peripheral Interface (SPI) bus 13, 167

interrupt-based SPI transfers 175

protocol description 167, 168

transactions 172-174

transceiver, programming 168-171

Serial Peripheral Interface (SPI) controller 119

serial ports 12

shared libraries 85, 86

Sigfox 218

Slave Select Output Enable (SSOE) 169

slave select (SS) signal 13

sleep_ms function 257-260

Software Guard Extensions (SGX) 292

software interrupt enable register (SWIER) 144

source code organization 57

application code 59, 60

hardware abstraction 57, 58

middleware 58, 59

stack frame 248

stack pointer limit (SPLIM) register 296

START condition 177

static priority-driven preemptive scheduling 265

STM32F746-Discovery target 38

STOP condition 177

Store Register Exclusive (STREX) 270

SVCall 247

Secure watermarks 300

Secure-world elf file 309

symmetric cryptography 61

synchronization 269

mutex 273

priority inversion 273

semaphores 269-272

system configuration 188

clock management 189-191

hardware design 188

voltage control 192

System Control Block (SCB) 17

System Control Register (SCR) 193

flag fields 193

System-on-Chip (SoC) 5

system resource separation 274

memory segmentation strategies, integrating in scheduler 276-279

privilege levels, implementing 274-276

system call interface, implementing 279-282

system resources separation, TrustZone-M 296

block-based SRAM protection 301, 302

flash memory 300

GTZC configuration 301, 302

memory regions 296-300

secure access, configuring to peripherals 302, 303

security attributes 296-300

secure watermarks 300

system time 120

clock configuration 121-125

clock distribution 126

flash wait states, adjusting 121

SysTick, enabling 127, 128

SysTick

bit 0 128

bit 1 128

bit 2 128

enabling 127, 128

T

tags 55

task management 244

context switch 247-249

task block 244-247

tasks, creating 249-252

TCP/IP 14

test-driven development (TDD) 43

text editors

versus integrated environments 28

timekeeping 120

toolchain 20

Transport Layer Security (TLS) 15, 59, 212, 232, 233

socket communication, securing 234-237

True Random Number Generators (TRNGs) 62

Trusted Execution Environment (TEE) 16, 291, 292

TrustZone 293

TrustZone-A 293

TrustZone-aware peripherals 302

TrustZone-M 293, 294

enabling 304

example, building 303

example, running 303

non-secure execution domain 295, 296

reference platform 294

secure execution domain 295, 296

TrustZone S Controller (TZSC) 302

two-level segregate fit (TLSF) allocator 288

U

UART-based asynchronous serial bus 157

controller, programming 158-161

data, receiving 164

Hello world! 161, 162

interrupt-based input/output 165-167

newlib printf 163, 164

protocol description 157, 158

UART Bit Rate Register (BRR) 159

UART Configuration Registers (CRxs) 159

UART_Data Register (DR) 159

UART Status Register (SR) 159

unicore-mx 58

unit tests 45, 46

Universal Asynchronous Receiver-Transmitter (UART) 12

Universal Serial Bus (USB) 13, 14

V

validation 43

emulators 48, 49

functional tests 43

hardware tools 44

target, testing 45-47

Vector Table Offset Register (VTOR) 82

version control system (VCS) 54

Virtual Memory Address (VMA) 75

W

wait for event (WFE) instruction 193

wait for interrupt (WFI) instruction 193

wake-up flag (WUF) 194

wake-up time intervals 203

watchdog timer 149-152

key register 149

prescale register 150

reload register 150

status register 150

Weightless 218

WFI(wait for interrupt) assembly instruction 129

wolfBoot 87

wolfMQTT 238

wolfSSL 233

workflow

C compiler 20, 21

debugger 25, 26

embedded workflow 26-28

linker 21, 22

Make tool 22-25

overview 20

..................Content has been hidden....................

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