Index
A
- activities
- tracking / Tracking activities
- Ad-hoc, On-demand, Distance Vector (AODV) / Mesh networks and dynamic routing
- address frame / Protocol description
- Advanced Encryption Standard (AES) / The reference platform
- analog to digital signal converter (ADC) / Analog input
- API
- design considerations / API and documentation
- application binary interface (ABI) / Allocating the stack
- application code / Application code
- application protocols
- about / Application protocols
- message protocols / Message protocols
- Representational State Transfer / REST architectural pattern
- distributed systems / Distributed systems – single points of failure
- appropriate network interfaces
- selecting / Selecting the appropriate network interfaces
- ARM reference design / ARM reference design
- asynchronous UART-based serial communication / Asynchronous UART-based serial communication
B
- Better Approach To Mobile Ad-hoc Networking (B.A.T.M.A.N.) / Mesh networks and dynamic routing
- Block Started by Symbol (BSS) / Linker
- Bluetooth / Bluetooth
- boot code
- building / Building and running the boot code
- executing / Building and running the boot code
- makefile / The makefile
- application, executing / Running the application
- bootloader / Bootloader
- boot stages
- about / Multiple boot stages
- bootloader / Bootloader
- image, building / Building the image
- multi-stage system, debugging / Debugging a multi-stage system
- shared libraries / Shared libraries
- build automation
- with Make / Build automation
C
- ChibiOS / ChibiOS
- clock management / Clock management
- clock synchronization / Clock and symbol synchronization
- code region / The code region
- code reviews / Code reviews
- concurrency / Concurrency and timeslices
- Configurable Fault Status Register (CFSR) / Fault handlers
- configuration management
- about / Configuration management
- revision control / Revision control
- activities, tracking / Tracking activities
- code reviews / Code reviews
- continuous integration / Continuous integration
- configuration registers, MPU
- MPU Type Register / MPU configuration registers
- MPU Control Register / MPU configuration registers
- MPU Region Number Register / MPU configuration registers
- MPU Region Base Address Register / MPU configuration registers
- MPU Region Attribute and Size Register / MPU configuration registers
- connected systems / Connected systems
- context switch / Task management, Context switch
- Contiki OS / Contiki OS
- continuous integration / Continuous integration
- Controller Area Network (CAN) / Hardware architecture
- cooperative scheduler / Cooperative scheduler
- Core-Coupled Memory (CCM) / The RAM regions
- Cortex-M instruction set, barriers
- data memory barrier (DMB) / Order of memory transactions
- data synchronization barrier (DSB) / Order of memory transactions
- instruction synchronization barrier (ISB) / Order of memory transactions
- Cortex-M microprocessor
- characteristic / The Cortex-M microprocessor
- about / The Cortex-M microprocessor
- Cortex Microcontroller Software Interface Standard (CMSIS) / Hardware abstraction
- cross-compilation / C compiler
- cross-compiler / The cross-compiler
D
- DASH7 / Low-power Wide Area Networks (LPWANs)
- debugger / Debugger
- deep-sleep modes
- configuration / Deep-sleep configuration
- regulator voltage scaling output selection (VOS) / Deep-sleep configuration
- flash power down in deep-sleep (FPDS) / Deep-sleep configuration
- power down in deep sleep (PDDS) / Deep-sleep configuration
- low-power deep sleep (LPDS) / Deep-sleep configuration
- enable wake-up pin (EWUP) / Deep-sleep configuration
- Destination Sequence Distance Vector (DSDV) / Mesh networks and dynamic routing
- development boards / Development boards
- Device Firmware Upgrade (DFU) / Interacting with the target
- Direct Memory Access (DMA) / Programming the peripherals
- distributed embedded systems
- challenges / Connected systems
- documentation / API and documentation
- Doxygen / API and documentation
- dynamic routing / Mesh networks and dynamic routing
E
- earliest-deadline-first scheduling / Real-time scheduling
- embedded project
- life cycle / The life cycle of an embedded project
- embedded systems
- about / Domain definition
- embedded Linux systems / Embedded Linux systems
- low-end 8-bit microcontrollers / Low-end 8-bit microcontrollers
- hardware architecture / Hardware architecture
- challenges / Understanding the challenge
- multi-threading / Multithreading
- future / The future of safe embedded systems
- embedded workflow / Embedded workflow
- emulators / Emulators
- end of conversion (EOC) / Analog input
- Ethernet / Ethernet
- event mask register (EMR) / Interrupt-based input
- Executable and Linkable Format (ELF)
- execute in place (XIP) / Flash memory
- execution stack
- about / The execution stack
- placement / Stack placement
- overflows / Stack overflows
- painting / Stack painting
F
- falling trigger select register (FTSR) / Interrupt-based input
- flash memory / Flash memory
- FreeRTOS / FreeRTOS
- Frosted / Frosted
- functional tests / Functional tests
G
- GCC toolchain
- about / The GCC toolchain
- cross-compiler / The cross-compiler
- compiler, compiling / Compiling the compiler
- executable, linking / Linking the executable
- binary format conversion / Binary format conversion
- general-purpose I/O
- about / General-purpose I/O
- pin configuration / Pin configuration
- digital output / Digital output
- PWM / PWM
- digital input / Digital input
- interrupt-based input / Interrupt-based input
- analog input / Analog input
- Generic Attribute Profile (GATT) / Bluetooth
- generic timers / Generic timers
- Gerrit / Code reviews
- GitLab / Tracking activities
- GNU Compiler Collection (GCC) / C compiler
- GNU Debugger (GDB)
- about / Debugger
- session / The GDB session
- commands / The GDB session
- GNU GCC manual
- reference / The cross-compiler
- GNU Make
- URL / Build automation
H
- hardware abstraction / Hardware abstraction
- hardware design / Hardware design
- hardware tools / Hardware tools
- heap
- management / Heap management
- custom implementation / Custom implementation
- newlib, using / Using newlib
- limiting / Limiting the heap
- multiple memory pools / Multiple memory pools
- usage errors / Common heap usage errors
I
- I2C bus
- about / I2C bus
- URL / I2C bus
- protocol / Protocol description
- clock, stretching / Clock stretching
- multi-master, detecting / Multi-master
- controller, programming / Programming the controller
- interrupt, handling / Interrupt handling
- In-Application Programming (IAP) / Flash memory
- input data register (IDR) / Digital input
- instruction set, Cortex-M3/M4
- inter-integrated circuit (I2C) / I2C
- interfaces
- about / Interfaces and peripherals
- asynchronous UART-based serial communication / Asynchronous UART-based serial communication
- Serial Peripheral Interface (SPI) / SPI
- inter-integrated circuit (I2C) / I2C
- Universal Serial Bus (USB) / USB
- International Electrotechnical Commission (IEC) / LR-WPAN industrial link-layer extensions
- International Society of Automation (ISA) / LR-WPAN industrial link-layer extensions
- Internet of Things (IoT) / Connected systems
- Internet Protocol (IP) / Connected systems, The Internet Protocols
- interrupt controller
- about / The interrupt controller
- peripherals interrupt, configuration / Peripherals interrupt configuration
- interrupt mask register (IMR) / Interrupt-based input
- interrupt service routines (ISR) / The interrupt vector table
- interrupt vector table (IVT)
- about / The interrupt vector table, The code region
- startup code / Startup code
- reset handler / Reset handler
- stack, allocating / Allocating the stack
- fault handlers / Fault handlers
- Issue tracking systems (ITSs) / Configuration management
J
- Jenkins / Continuous integration
L
- 6LoWPAN / 6LoWPAN
- Lesser General Public License (LGPL) / Riot OS
- libopencm3 / Hardware abstraction
- life cycle, embedded project
- about / The life cycle of an embedded project
- project steps, defining / Defining project steps
- prototyping / Prototyping
- refactoring / Refactoring
- API / API and documentation
- documentation / API and documentation
- lightweight IP (lwIP) / TCP/IP implementations, ChibiOS
- linker / Linker
- Load Memory Address (LMA) / Memory layout
- LoRa/LoRaWAN / Low-power Wide Area Networks (LPWANs)
- low-end 8-bit microcontrollers / Low-end 8-bit microcontrollers
- low-power embedded applications
- designing / Designing low-power embedded applications
- busy loops, replacing with sleep mode / Replacing busy loops with sleep mode
- deep sleep, during longer inactivity periods / Deep sleep during longer inactivity periods
- clock speed, selecting / Choosing the clock speed
- power state, transitions / Power state transitions
- low-power IoT systems
- about / Low-power IoT systems
- Contiki OS / Contiki OS, Riot OS
- Riot OS / Riot OS
- low-power operating modes
- about / Low-power operating modes
- normal operation mode / Low-power operating modes
- sleep mode / Low-power operating modes
- stop mode / Low-power operating modes
- standby mode / Low-power operating modes
- wait for interrupt (WFI) / Low-power operating modes
- wait for event (WFE) / Low-power operating modes
- Low-power Wide Area Networks (LPWANs) / Low-power Wide Area Networks (LPWANs)
- Low-Rate Wireless Personal Area Networks (LR-WPAN)
- about / Low-Rate Wireless Personal Area Networks (LR-WPAN)
- industrial link-layer extensions / LR-WPAN industrial link-layer extensions
- Low-Speed External (LSE) oscillator / Standby mode
- Low-Speed Internal (LSI) oscillator / Standby mode
M
- Make
- about / Build automation
- used, for build automation / Build automation
- makefile / The makefile
- Media Access Control (MAC) / Network interfaces, Media Access Control
- memory layout / Memory layout
- memory management unit (MMU) / Embedded Linux systems
- memory mapping
- about / Memory mapping
- memory model / Memory model and address space
- address space / Memory model and address space
- code region / The code region
- RAM region / The RAM regions
- peripheral-access region / Peripheral-access regions
- system region / The system region
- memory transactions, order / Order of memory transactions
- memory protection unit (MPU)
- about / The Cortex-M microprocessor, The memory protection unit
- configuration registers / MPU configuration registers
- programming / Programming the MPU
- memory segmentation / Memory segmentation
- mesh networks / Mesh networks and dynamic routing
- Message-Queuing Telemetry Transport (MQTT) / Message protocols
- microcontroller unit (MCU) / Hardware architecture
- middleware / Middleware
- mobile ad-hoc networks / Mesh networks and dynamic routing
- mobile networks / Mobile networks
- Most Significant Bit (MSB) / Protocol description
- move special from register (msr) / Bootloader
- multi-threading / Multithreading
- multiple memory pools / Multiple memory pools
- mutex / Mutex
- mutual exclusion / Mutex
N
- near-field magnetic induction (NFMI) / Selecting the appropriate network interfaces
- Nested Vector Interrupt Controller (NVIC) / The Cortex-M microprocessor, The interrupt controller
- network device drivers / Network device drivers
- network interfaces
- about / Network interfaces
- Media Access Control (MAC) / Media Access Control
- Ethernet / Ethernet
- Wi-Fi / Wi-Fi
- Low-Rate Wireless Personal Area Networks (LR-WPAN) / Low-Rate Wireless Personal Area Networks (LR-WPAN)
- 6LoWPAN / 6LoWPAN
- Bluetooth / Bluetooth
- mobile networks / Mobile networks
- Low-power Wide Area Networks (LPWANs) / Low-power Wide Area Networks (LPWANs)
- LoRa/LoRaWAN / Low-power Wide Area Networks (LPWANs)
- Sigfox / Low-power Wide Area Networks (LPWANs)
- Weightless / Low-power Wide Area Networks (LPWANs)
- DASH7 / Low-power Wide Area Networks (LPWANs)
- newlib
- using / Using newlib
- printf function, using / Newlib printf
- NuttX / NuttX
O
- off-target
- testing / Testing off-target
- on-the-go (OTG) mode / USB
- Open On-Chip Debugger (OpenOCD)
- about / Interacting with the target
- configuring / Interacting with the target
- Optimized Link-State Routing (OLSR) / Mesh networks and dynamic routing
P
- pending interrupt register (PR) / Interrupt-based input
- peripheral-access region / Peripheral-access regions
- peripherals / Interfaces and peripherals
- physical layer transceiver (PHY) / Network interfaces
- POSIX-compliant systems
- about / POSIX-compliant systems
- NuttX / NuttX
- Frosted / Frosted
- power measurement
- about / Measuring power
- development boards / Development boards
- preemption / Task management
- priority inheritance / Priority inversion
- priority inversion / Priority inversion
- privilege levels / Privilege levels
- protocols, mesh networks
- proactive dynamic-routing protocols / Mesh networks and dynamic routing
- reactive dynamic-routing protocols / Mesh networks and dynamic routing
- prototyping / Prototyping
- Pulse Width Modulation (PWM) / PWM
R
- raising trigger select register (RTSR) / Interrupt-based input
- RAM / RAM
- RAM region / The RAM regions
- real-time application platforms
- about / Real-time application platforms
- FreeRTOS / FreeRTOS
- ChibiOS / ChibiOS
- real-time clock (RTC) / Clock management
- real-time systems / Embedded Linux systems
- reduced instruction set computer (RISC) / The reference platform
- refactoring / The life cycle of an embedded project, Refactoring
- reference platform
- about / The reference platform
- characteristics / The reference platform
- selecting / The reference platform
- ARM reference design / ARM reference design
- Cortex-M microprocessor / The Cortex-M microprocessor
- Reload Value Register (RVR) / Enabling the SysTick
- Representational State Transfer (REST)
- architectural pattern / REST architectural pattern
- about / REST architectural pattern
- Reset and Clock Control (RCC) / Clock configuration
- responsibilities, Transport Layer Security
- confidentiality / Transport Layer Security
- authentication / Transport Layer Security
- integrity / Transport Layer Security
- revision control / Revision control
- Riot OS / Riot OS
S
- scheduler implementation
- about / Scheduler implementation
- supervisor calls / Supervisor calls
- cooperative scheduler / Cooperative scheduler
- concurrency / Concurrency and timeslices
- timeslices / Concurrency and timeslices
- tasks, blocking / Blocking tasks
- resources, waiting for / Waiting for resources
- real-time scheduling / Real-time scheduling
- Secure Socket Layer (SSL) / Connected systems
- semaphore / Semaphore
- separate stack-pointer CPU register, Cortex-M
- Master Stack Pointer (MSP) / Privilege levels
- Process1 Stack Poitner (PSP) / Privilege levels
- serial clock (SCL) / I2C
- serial communication
- about / Introducing serial communication
- symbol synchronization / Clock and symbol synchronization
- clock synchronization / Clock and symbol synchronization
- bus, wiring / Bus wiring
- peripherals, programming / Programming the peripherals
- serial data (SDA) / I2C
- Serial Peripheral Interface (SPI)
- about / SPI, SPI bus
- protocol / Protocol description
- transceiver, programming / Programming the transceiver
- transactions / SPI transactions
- interrupt-based SPI transfers / Interrupt-based SPI transfers
- serial ports / Asynchronous UART-based serial communication
- shunt resistor / Measuring power
- Sigfox / Low-power Wide Area Networks (LPWANs)
- slave select (SS) signal / SPI
- Slave Select Output Enable (SSOE) flag / Programming the transceiver
- socket communication
- about / Socket communication
- securing / Securing socket communication
- software interrupt enable register (SWIER) / Interrupt-based input
- source code, organization
- about / Source code organization
- hardware abstraction / Hardware abstraction
- middleware / Middleware
- application code / Application code
- ST-Link / Interacting with the target
- stack frame / Context switch
- START condition / Protocol description
- static priority-driven preemptive scheduling / Real-time scheduling
- STOP condition / Protocol description
- supervisor calls / Supervisor calls
- symbol synchronization / Clock and symbol synchronization
- synchronization
- about / Synchronization
- semaphore / Semaphore
- mutex / Mutex
- priority inversion / Priority inversion
- synchronous communication / The Cortex-M microprocessor
- System-on-Chip (SoC) / Hardware architecture
- system calls / System calls
- system configuration
- about / System configuration
- hardware design / Hardware design
- clock management / Clock management
- voltage control / Voltage control
- low-power operating modes / Low-power operating modes
- deep-sleep modes, configuration / Deep-sleep configuration
- deep-sleep configuration / Deep-sleep configuration
- stop mode / Stop mode
- standby mode / Standby mode
- wake-up intervals / Wake-up intervals
- System Control Block (SCB) / The Cortex-M microprocessor
- System Control Register (SCR) / Low-power operating modes
- System Control Register (SCR), one-bit flag
- SLEEPONEXIT (bit 1) / Low-power operating modes
- SLEEPDEEP (bit 2) / Low-power operating modes
- SEVONPEND (bit 4) / Low-power operating modes
- system region / The system region
- system resource separation
- about / System resource separation
- privilege levels / Privilege levels
- memory segmentation / Memory segmentation
- system calls / System calls
- system time
- about / System time
- flash wait states, adjusting / Adjusting the flash wait states
- clock configuration / Clock configuration
- clock distribution / Clock distribution
- SysTick, enabling / Enabling the SysTick
T
- target interactions
- about / Interacting with the target
- GDB session / The GDB session
- task block / The task block
- task management / Task management
- tasks
- creating / Creating tasks
- TCP/IP stack
- about / The Internet Protocols
- implementation / TCP/IP implementations
- network device drivers / Network device drivers
- executing / Running the TCP/IP stack
- socket communication / Socket communication
- mesh networks / Mesh networks and dynamic routing
- dynamic routing / Mesh networks and dynamic routing
- test-driven development (TDD) / Functional tests
- timeslices / Concurrency and timeslices
- Tock / Process isolation – Tock
- toolchain / Workflow overview
- Transport Layer Security / Transport Layer Security
- Transport Layer Security (TLS) / Connected systems, Middleware, Transport Layer Security
U
- UART-based asynchronous serial bus
- about / UART-based asynchronous serial bus
- protocol / Protocol description
- controller, programming / Programming the controller
- Hello world! program / Hello world!
- newlib printf function, using / Newlib printf
- data, receiving / Receiving data
- interrupt-based input/output / Interrupt-based input/output
- unicore-mx / Hardware abstraction
- Universal Asynchronous Receiver-Transmitter (UART) / Asynchronous UART-based serial communication
- Universal Serial Bus (USB) / USB
V
- validation
- about / Validation
- functional tests / Functional tests
- hardware tools / Hardware tools
- off-target, testing / Testing off-target
- emulators / Emulators
- Vector Table Offset Register (VTOR) / Bootloader
- version control system (VCS)
- about / Revision control
- master / Revision control
- trunk / Revision control
- commit / Revision control
- HEAD / Revision control
- branch / Revision control
- Virtual Memory Address (VMA) / Memory layout
- voltage control / Voltage control
W
- wait for interrupt (WFI) / Enabling the SysTick
- wake-up flag (WUF) / Deep-sleep configuration
- wake-up intervals / Wake-up intervals
- watchdog / The watchdog
- Weightless / Low-power Wide Area Networks (LPWANs)
- Wi-Fi / Wi-Fi
- wolfMQTT / Message protocols
- workflow
- overview / Workflow overview
- C compiler / C compiler
- linker / Linker
- build automation / Build automation
- debugger / Debugger
- embedded workflow / Embedded workflow