RK3399 Boot Modes and Partition Design in Embedded Linux Drivers

RK3399 Boot Modes and Partition Design in Embedded Linux Drivers

1. Analysis of RK3399 Boot Modes The boot process of RK3399 is divided into hardware initialization and software boot stages, with the core logic consisting of BootROM, SPL/U-Boot, and the kernel. 1. BootROM Stage (Hardware Initialization) Firmware: The unmodifiable code stored in the chip’s internal ROM, responsible for: Initializing the CPU core clock and DDR … Read more

Firmware System Architecture Based on ARMv8

Firmware System Architecture Based on ARMv8

The firmware system based on the ARMv8 architecture The firmware system based on the ARMv8 architecture consists of multiple layers and modules designed to provide secure, flexible, and efficient booting and management for ARMv8-based servers and embedded devices. Its design structure typically includes the following main components and stages: 1. Overview of Firmware Architecture The … Read more

Introduction to the Platform Device Driver Model

Introduction to the Platform Device Driver Model

In the Linux kernel, the <span>platform</span> device driver model is used to manage devices that are not directly mounted on physical buses (such as PCI or USB), for example, hardware modules (such as GPIO controllers, timers, etc.) within a System on Chip (SoC). This model associates devices (<span>platform_device</span>) and drivers (<span>platform_driver</span>) through a virtual <span>platform_bus_type</span> … Read more

Mastering Zephyr: A Step-by-Step Guide to Building Your Embedded Project (Part 1)

Mastering Zephyr: A Step-by-Step Guide to Building Your Embedded Project (Part 1)

Zephyr Basics Series: Starting from Scratch with Embedded Development Hello everyone, welcome to Lixin Embedded. Today, we are embarking on a brand new journey – the “Zephyr Basics Series”. The goal of this series is to guide you step by step into the powerful embedded real-time operating system, Zephyr, and to understand its core functionalities. … Read more

Getting Started with Embedded Linux Systems Using Buildroot – Part 4

Getting Started with Embedded Linux Systems Using Buildroot - Part 4

Introduction to Microchip’s Official Flattened Image Tree (FIT) Introduction to Microchip’s Official Device Tree Overlay (DT Overlay) This series of articles will create my first runnable embedded Linux system based on the Buildroot repository provided by Microchip. Basic Knowledge of FIT Why Introduce FIT in Linux Systems FIT (Flattened Image Tree) is an image format … Read more

CLion Tutorial – Device Tree Files

CLion Tutorial - Device Tree Files

Device tree is a hierarchical data structure primarily used to describe hardware. CLion recognizes .dts/.dtsi files and provides code assistance and code analysis features. Configure Development Board (Zephyr) If you are using Zephyr, make sure to select the development board you are using in the settings: Go to Settings | Languages & Frameworks | Device … Read more

Driver Development Under Linux Device Tree

Driver Development Under Linux Device Tree

Overview This article introduces the development process and methods of device drivers under the platform framework, mainly including the development of device trees, drivers, and applications. Taking the random number driver as an example, it implements the process of the application calling the library function, entering the kernel through a system call, and finally executing … Read more

Understanding Zephyr System Timer Implementation

Understanding Zephyr System Timer Implementation

The kernel time of Zephyr is driven by sys_clock_announce. Regardless of the SOC type, the system timer is driven by interfacing with this API. For details, refer to the Zephyr Tick Clock Introduction. All system timer drivers for Zephyr are located under zephyr/drivers/timer. How Zephyr Chooses Which Driver to Use All system timer drivers supported … Read more

Key Considerations for Zephyr Driver Initialization

Key Considerations for Zephyr Driver Initialization

1. Basic Mechanism of Driver Initialization Zephyr’s driver initialization is implemented through the following mechanisms: Device Tree : Hardware resources are defined through the device tree, and the driver relies on this information for initialization. Initialization Macros (DEVICE_DT_DEFINE and DEVICE_DEFINE) : The driver registers to Zephyr’s device model using these macros. Initialization Priority : The … Read more

Unlock Multiple Configurations for Beaglebone Black Cape

Unlock Multiple Configurations for Beaglebone Black Cape

1. Introduction If you bought the BBB for hardware-related projects, you will likely need to create a cape. The term cape is the official name from BBB, referring to the software and hardware peripherals of the BBB. By learning about the device tree, we understand that BBB uses capemgr and device tree to control the … Read more