# xiaowenxia/embedded-notes

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/xiaowenxia-embedded-notes).**

3,998 stars · 579 forks · MIT

## Links

- GitHub: https://github.com/xiaowenxia/embedded-notes
- awesome-repositories: https://awesome-repositories.com/repository/xiaowenxia-embedded-notes.md

## Topics

`arm` `c` `driver` `embedded` `freertos` `iot` `linux` `linux-app` `linux-drivers` `mcu`

## Description

embedded-notes is a collection of technical study guides and development notes focused on embedded Linux, Linux kernel internals, and C programming. It serves as a reference for embedded systems development and a preparation resource for technical interviews in the field.

The project provides detailed documentation on writing device drivers, managing virtual memory, and understanding kernel internals. It also includes guides on IoT network protocols, such as MQTT and TCP/IP, and outlines the architectural details of chip architectures and hardware peripherals.

The material covers a broad surface of systems programming, including manual memory management, process lifecycle management, and the implementation of real-time operating system concepts. It also includes references for low-level tooling, such as cross-compilation for ARM, binary analysis, and shell scripting for build automation.

## Tags

### Part of an Awesome List

- [Study Guides](https://awesome-repositories.com/f/awesome-lists/devops/linux-kernel-development/study-guides.md) — Offers a collection of technical study guides for kernel drivers, bootloaders, and embedded software development.
- [Linux Kernel Development](https://awesome-repositories.com/f/awesome-lists/devops/linux-kernel-development.md) — Provides comprehensive study materials for Linux kernel module development, drivers, and embedded systems.
- [IoT Networking Protocols](https://awesome-repositories.com/f/awesome-lists/devops/iot-networking-protocols.md) — Documents various IoT communication and management protocols including TCP, UDP, and MQTT.
- [ARM Instruction References](https://awesome-repositories.com/f/awesome-lists/devtools/assembly-and-low-level/arm-instruction-references.md) — Catalogs specialized ARM assembly instructions for synchronization, breakpoint management, and state switching. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/cortex.md))
- [Low Level Tools](https://awesome-repositories.com/f/awesome-lists/devtools/low-level-tools.md) — Provides a guide to low-level tools for memory management and system-level interaction. ([source](https://xiaowenxia.github.io/embedded-notes/))
- [Shell Scripts](https://awesome-repositories.com/f/awesome-lists/devtools/shell-scripts.md) — Provides practical notes on writing shell scripts using loops and conditionals to automate development tasks. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/shell.md))

### Business & Productivity Software

- [Curated Review Notes](https://awesome-repositories.com/f/business-productivity-software/note-taking-applications/study-notes/curated-review-notes.md) — Provides a curated collection of organized review notes on C programming, chip architectures, and systems development. ([source](https://github.com/xiaowenxia/embedded-notes#readme))

### Operating Systems & Systems Programming

- [Embedded Linux Study Guides](https://awesome-repositories.com/f/operating-systems-systems-programming/embedded-linux-study-guides.md) — Provides comprehensive technical notes on kernel drivers, bootloaders, and software development for embedded Linux. ([source](https://xiaowenxia.github.io/embedded-notes/))
- [C Memory Management](https://awesome-repositories.com/f/operating-systems-systems-programming/c-memory-management.md) — Provides detailed notes on low-level memory allocation and cleanup of buffers within the C language.
- [Inter-Process Communication](https://awesome-repositories.com/f/operating-systems-systems-programming/inter-process-communication.md) — Implements data exchange between tasks using managed queues and other OS kernel IPC primitives. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/freertos-inside.md))
- [Kernel Architecture References](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-architecture-references.md) — Offers detailed technical documentation on kernel design, subsystem interaction, and driver development. ([source](https://github.com/xiaowenxia/embedded-notes#readme))
- [Kernel Configurations](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-configurations.md) — Explains how to define configuration menus and dependency rules to manage kernel features during build. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/driver.md))
- [Interrupt Handling](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/interrupt-handling.md) — Explains the management of hardware exceptions, interrupt vector tables, and priority levels. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/cortex.md))
- [Device Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/kernel-development/kernel-driver-implementation/device-drivers.md) — Provides technical guides on implementing kernel-mode device drivers for memory, logging, and process communication. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/gpu.md))
- [Linux Kernel Internals](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/operating-system-kernels/linux-kernel-internals.md) — Explains Linux kernel internals including system calls, virtual memory mapping, and device driver implementation.
- [Process Lifecycle Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/process-lifecycle-orchestrators/process-lifecycle-managers.md) — Details the creation, termination, and synchronization of processes within the operating system. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Interrupt Vector Handlers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-programming-primitives/system-programming/hardware-interfaces/pci-bus-management/interrupt-controllers/interrupt-vector-handlers.md) — Explains how to implement functions assigned to hardware interrupt vectors for immediate event response in embedded systems.
- [Kernel Module Compilation](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-module-compilation.md) — Provides instructions for building loadable kernel module objects and installing them for dynamic loading. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/driver.md))
- [Kernel-User Space Interfacing](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-user-space-interfacing.md) — Documents the mechanisms and boundaries used to transition execution between kernel mode and user mode.
- [Linked List Implementations](https://awesome-repositories.com/f/operating-systems-systems-programming/linked-list-implementations.md) — Implements low-level singly and doubly linked lists for sequential data storage in C. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/c%E5%9F%BA%E7%A1%80.md))
- [Memory-Mapped I/O](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-mapped-i-o.md) — Covers hardware interfacing by reading and writing to specific numeric memory addresses to control peripherals.
- [Peripheral Hardware Drivers](https://awesome-repositories.com/f/operating-systems-systems-programming/peripheral-hardware-drivers.md) — Documents the implementation and operation of hardware peripheral drivers for I2C, SPI, and UART. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/README.md))
- [ARM Linux Cross-Compilation](https://awesome-repositories.com/f/operating-systems-systems-programming/platform-development-integration/linux-installation-packages/arm-linux-cross-compilation.md) — Provides a comprehensive guide to cross-compiling software for 32-bit ARM Linux targets. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Real-Time Operating Systems](https://awesome-repositories.com/f/operating-systems-systems-programming/real-time-operating-systems.md) — Details the architecture and implementation of real-time operating systems for resource-constrained hardware. ([source](https://xiaowenxia.github.io/embedded-notes/))
- [System Signal Handling](https://awesome-repositories.com/f/operating-systems-systems-programming/system-signal-handling.md) — Guides the definition of custom routines to handle operating system signals and manage asynchronous events. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Virtual Memory Management](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-memory-management.md) — Documents the management of virtual memory pages, protection, and locking within the Linux kernel. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Virtual Memory Mapping](https://awesome-repositories.com/f/operating-systems-systems-programming/virtual-memory-mapping.md) — Documents the process of inserting page table entries to map physical RAM into virtual address spaces.
- [Binary Disassemblers](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-disassemblers.md) — Covers the process of converting binary machine code back into assembly for reverse engineering. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Binary Image Conversions](https://awesome-repositories.com/f/operating-systems-systems-programming/binary-image-conversions.md) — Explains how to transform executable files into raw binary images suitable for embedded flash memory. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Bootloader Architectural Patterns](https://awesome-repositories.com/f/operating-systems-systems-programming/driver-runtime-integrations/bootloader-architectural-patterns.md) — Maps bootloader source directories to their respective roles in drivers, file systems, and board configurations. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/uboot.md))
- [Boot Sequence Analysis](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management/bootable-image-executors/bootloader-configurators/boot-sequence-analysis.md) — Traces hardware initialization, RAM loading, and kernel execution to explain the system boot process. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/uboot.md))
- [File System I/O](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-programming-primitives/system-primitives/file-system-i-o.md) — Details low-level file read and write operations using system calls for synchronous and random access. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Hardware-Based Memory Protection](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-protection-managers/memory-protection-engineering/hardware-based-memory-protection.md) — Explains the use of Memory Protection Units (MPU) to isolate task data and restrict access permissions. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/cortex.md))
- [System Control Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/power-management/system-control-interfaces.md) — Adjusts kernel modules, clock settings, and resource limits via system control interfaces. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Boot Sequence Tracing](https://awesome-repositories.com/f/operating-systems-systems-programming/systems-programming/bare-metal-development/entry-points/boot-sequence-tracing.md) — Details the execution flow from system reset and the reset handler to the application entry point. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/cortex.md))
- [Task Priority Management](https://awesome-repositories.com/f/operating-systems-systems-programming/task-priority-management.md) — Covers the creation, deletion, and priority assignment of execution threads for CPU time allocation. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/freertos-inside.md))
- [Priority Inversion Resolution](https://awesome-repositories.com/f/operating-systems-systems-programming/task-priority-management/priority-inversion-resolution.md) — Details techniques for resolving priority inversion to ensure real-time system stability. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/freertos-inside.md))
- [Timed Execution Delays](https://awesome-repositories.com/f/operating-systems-systems-programming/timed-execution-delays.md) — Explains the implementation of precise timed execution delays using timers and semaphores. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/freertos-inside.md))
- [Physical Register Mapping](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/virtual-device-drivers/virtual-hardware-mappings/physical-register-mapping.md) — Provides memory addresses and functional descriptions for system control and interrupt registers. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/cortex.md))

### Education & Learning Resources

- [Operating System Internals](https://awesome-repositories.com/f/education-learning-resources/computer-science-fundamentals/operating-system-internals.md) — Provides educational resources on kernel operations, process management, and memory allocation. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/README.md))
- [TCP/IP Socket Programming Guides](https://awesome-repositories.com/f/education-learning-resources/tcp-ip-socket-programming-guides.md) — Provides a comprehensive educational reference for the layered structure of TCP, UDP, IP, and Ethernet. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/README.md))
- [Instruction Set Architecture References](https://awesome-repositories.com/f/education-learning-resources/instructional-reference-materials/instruction-set-architecture-references.md) — Documents the architectural differences, register sets, and hardware capabilities of ARM Cortex-M cores. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/cortex.md))
- [Technical Interview Preparation](https://awesome-repositories.com/f/education-learning-resources/professional-development-career/career-development/career-advancement-resources/technical-interview-preparation.md) — Offers curated study materials on protocols and architectures specifically for technical interview preparation. ([source](https://xiaowenxia.github.io/embedded-notes/))
- [Embedded Systems Preparation](https://awesome-repositories.com/f/education-learning-resources/technical-interview-prep/embedded-systems-preparation.md) — Provides focused study materials for professional evaluations in embedded systems and chip architectures.

### Hardware & IoT

- [Peripheral Interfacing Guides](https://awesome-repositories.com/f/hardware-iot/peripheral-interfacing-guides.md) — Explains the operation and configuration of common peripherals such as UART, I2C, and SPI. ([source](https://github.com/xiaowenxia/embedded-notes#readme))
- [Embedded Graphics Libraries](https://awesome-repositories.com/f/hardware-iot/embedded-graphics-libraries.md) — Documents the use of industry-standard rendering libraries for hardware-accelerated visuals on resource-constrained embedded screens. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/gpu.md))

### Networking & Communication

- [Socket Networking](https://awesome-repositories.com/f/networking-communication/socket-networking.md) — Implements standard socket-based communication for establishing secure endpoints and transferring data between hosts. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [MQTT Messaging Integrations](https://awesome-repositories.com/f/networking-communication/api-integration-frameworks/communication-apis/mqtt-messaging-integrations.md) — Details how to integrate MQTT messaging for exchanging device status and control commands via a broker. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/tcpip%E5%8D%8F%E8%AE%AE%E6%A0%88.md))
- [Layered Network Stacks](https://awesome-repositories.com/f/networking-communication/layered-network-stacks.md) — Provides a detailed review of the layered structure and operation of TCP, UDP, IP, and Ethernet.
- [Address Resolution Protocols](https://awesome-repositories.com/f/networking-communication/network-addressing/ip-addressing-fundamentals/address-resolution-protocols.md) — Explains the process of mapping IP addresses to MAC addresses via network requests and responses. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/tcpip%E5%8D%8F%E8%AE%AE%E6%A0%88.md))
- [Network Layering Models](https://awesome-repositories.com/f/networking-communication/network-layering-models.md) — Analyzes the relationship between networking models, protocols, and hardware across different stack layers. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/tcpip%E5%8D%8F%E8%AE%AE%E6%A0%88.md))
- [Network Protocol References](https://awesome-repositories.com/f/networking-communication/network-protocol-references.md) — Provides structured references to networking protocol specifications for IoT and network programming. ([source](https://github.com/xiaowenxia/embedded-notes#readme))
- [Connection and Session Management](https://awesome-repositories.com/f/networking-communication/network-reliability-diagnostics/connection-session-management.md) — Manages the establishment and termination of reliable communication sessions using handshaking mechanisms. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/tcpip%E5%8D%8F%E8%AE%AE%E6%A0%88.md))
- [Congestion Controllers](https://awesome-repositories.com/f/networking-communication/packet-engines/congestion-controllers.md) — Implements flow control and congestion avoidance algorithms to manage TCP network traffic. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/tcpip%E5%8D%8F%E8%AE%AE%E6%A0%88.md))
- [Reliable Transmission Mechanisms](https://awesome-repositories.com/f/networking-communication/reliable-transmission-mechanisms.md) — Details the use of sequence numbering and acknowledgments to guarantee ordered and complete data transmission. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/tcpip%E5%8D%8F%E8%AE%AE%E6%A0%88.md))
- [Topic-Based Messaging](https://awesome-repositories.com/f/networking-communication/topic-based-messaging.md) — Explains how to use topic-based messaging for filtered content delivery between IoT devices.

### Programming Languages & Runtimes

- [C Programming Resources](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/language-learning-resources/c-programming-resources.md) — Provides comprehensive guides and reference materials for software development using the C programming language.
- [Source Code Compilers](https://awesome-repositories.com/f/programming-languages-runtimes/source-code-compilers.md) — Details the full compilation pipeline from C source code to executable machine binaries. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Const Correctness](https://awesome-repositories.com/f/programming-languages-runtimes/variable-assignments/immutable-variable-enforcement/const-correctness.md) — Demonstrates how to restrict the modification of variables or objects using constant qualifiers in C. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/c%E5%9F%BA%E7%A1%80.md))

### Software Engineering & Architecture

- [Pointer Memory Management](https://awesome-repositories.com/f/software-engineering-architecture/block-based-data-models/data-block-memory-management/contiguous-memory-buffers/manual-pointer-management/pointer-memory-management.md) — Provides detailed guidance on manual memory addressing and pointer management for low-level data structures. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/c%E5%9F%BA%E7%A1%80.md))
- [Volatile Register Access](https://awesome-repositories.com/f/software-engineering-architecture/shared-memory-management/memory-access-profilers/volatile-register-access.md) — Explains how to use the volatile keyword to ensure accurate hardware register interaction by bypassing compiler optimizations. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/c%E5%9F%BA%E7%A1%80.md))
- [Software Engineering Study Guides](https://awesome-repositories.com/f/software-engineering-architecture/software-engineering-study-guides.md) — Provides structured study guides covering architectural and systems-level engineering concepts. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/README.md))

### System Administration & Monitoring

- [Inter-Process Communication](https://awesome-repositories.com/f/system-administration-monitoring/inter-process-communication.md) — Provides implementation details for exchanging data between processes using pipes, signals, and message queues. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [System Health Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/observability-instrumentation/system-health-monitoring.md) — Details methods for detecting stack overflows and memory allocation failures to monitor system stability. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/freertos-inside.md))
- [Open File Descriptor Monitors](https://awesome-repositories.com/f/system-administration-monitoring/open-file-descriptor-monitors.md) — Lists open file descriptors, sockets, and pipes currently used by running system processes. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))
- [Process Memory Monitors](https://awesome-repositories.com/f/system-administration-monitoring/system-memory-monitors/process-memory-monitors.md) — Provides techniques for analyzing process memory maps and environment variables via the proc pseudo-filesystem. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))

### Data & Databases

- [Binary File Inspectors](https://awesome-repositories.com/f/data-databases/file-header-identifiers/binary-header-analyzers/binary-file-inspectors.md) — Includes guides on inspecting symbol tables, sections, and dependencies of compiled binaries. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/linux.md))

### Development Tools & Productivity

- [Cross-Compilation Toolchains](https://awesome-repositories.com/f/development-tools-productivity/cross-compilation-toolchains.md) — Includes guides on setting up build environments to generate ARM executable binaries from a host machine.
- [Kernel Image Creation](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-build-systems/kernel-build-systems/standalone-kernel-binary-builds/kernel-image-creation.md) — Details the compilation of source code into compressed binaries and bootable kernel images. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/driver.md))

### Graphics & Multimedia

- [GPU Hardware Acceleration](https://awesome-repositories.com/f/graphics-multimedia/gpu-hardware-acceleration.md) — Details how to modify the kernel and system framework to offload rendering tasks to the GPU. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/gpu.md))
- [Framebuffer Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-rendering-engines/framebuffer-renderers.md) — Explains how to map memory and use character device interfaces to drive low-level framebuffer output. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/gpu.md))

### Security & Cryptography

- [Secure Network Communication](https://awesome-repositories.com/f/security-cryptography/secure-network-communication.md) — Applies encryption and hash algorithms to ensure privacy and authenticity in network communications. ([source](https://github.com/xiaowenxia/embedded-notes/blob/master/tcpip%E5%8D%8F%E8%AE%AE%E6%A0%88.md))
