Getting Started with CMake: From Basic C Code to Embedded Project Management

Getting Started with CMake: From Basic C Code to Embedded Project Management

Hello everyone, welcome to <span>LiXin Embedded</span>. Today we will talk about CMake, a powerful tool that makes cross-platform builds easy and helps you manage your projects efficiently. Why Do We Need CMake? If you are just starting to learn C++, you might be used to using an IDE like Visual Studio, VS Code, or CLion. … Read more

Compiling GCC 11.5 x64 to AArch64 Cross Toolchain on CentOS 6.10

Compiling GCC 11.5 x64 to AArch64 Cross Toolchain on CentOS 6.10

Prerequisites Prepare the following source packages binutils-2.29 gcc-11.5.0 glibc-2.17 linux-3.10.99 First, build a GCC 5.2, x64 is sufficient. C++11 is required, the default GCC in the repository is 4.4.7 The ARM64 version of glibc 2.17 is required linux-3.10.99 provides header files for glibc 2.17 Set up environment variables export PKG=/soft/pkg export SRC=/dd/gcc-srcexport BUILD=/dd/gcc-buildexport TARGET=aarch64-linux-gnuexport PREFIX=/dd/aarch64-linux-gnu-gcc-11.5.0export … Read more

Compilation Tools: GCC, GNU, MinGW, MSVC, Make, CMake, Ninja

Compilation Tools: GCC, GNU, MinGW, MSVC, Make, CMake, Ninja

1. Starting with Hello World: How Does a Program Become an Executable File? Let’s start with the simplest C program: On Linux, to run this code, we need to use GCC to turn it into a program that the machine can execute. This process consists of 4 steps: Preprocessing (<span>hello.c</span> → <span>hello.i</span>): Handling preprocessing directives … Read more

Analysis of Job Prospects for BSP Engineers in Embedded Software Development in 2026

Analysis of Job Prospects for BSP Engineers in Embedded Software Development in 2026

1.What is aBSPEngineer? BSP, short for Board Support Package, refers to the software that provides support for a specific hardware platform. A BSP engineer is a technical professional responsible for the development, debugging, and maintenance of the board support package, which is a subfield of embedded software engineering.So, what is a board support package? It … Read more

Linux – Block Device Drivers

Linux - Block Device Drivers

1.What is a Block Device Driver A block device driver is used to operate storage devices such as hard disks. 1.1 Concept of Block Device DriversDevices that can randomly access fixed-size data chunks (1 block = 512 bytes) are called block devices. Block device files are generally used in a way that mounts a file … Read more

Windows PCI Device Driver Development Guide: PnP Callback

Windows PCI Device Driver Development Guide: PnP Callback

In the previous article, we introduced the driver code generated by the VS KMDF template, providing a preliminary understanding of the driver code. It should be evident that this driver is quite simple, essentially lacking any real functionality. After installing the driver we wrote, this PCIe device remains in the D0 state (if you are … Read more

Windows PCI Device Driver Development Guide: Building Your First Device Driver from Scratch

Windows PCI Device Driver Development Guide: Building Your First Device Driver from Scratch

The Windows WDF (Windows Driver Framework) is a driver development architecture introduced by Microsoft, designed to simplify the kernel driver development process and enhance system stability. WDF drivers are divided into KMDF (Kernel-Mode Driver Framework) and UMDF (User-Mode Driver Framework). KMDF provides an object-oriented interface for kernel-mode drivers, such as Device Objects, Queue Objects, Request … Read more

Windows PCI Device Driver Development Guide: Introduction to Driver Template Code

Windows PCI Device Driver Development Guide: Introduction to Driver Template Code

In the previous article, we introduced how to “write” a Windows PCI device driver from scratch. The term “write” is in quotes because we didn’t actually write any code; the driver code was generated using the KMDF template in Visual Studio. In this article, we will introduce the generated driver code. The first function to … Read more

Detailed Explanation of Labeling Techniques for Unit Length in Assembly Language

Detailed Explanation of Labeling Techniques for Unit Length in Assembly Language

1. Basic Concept of Labels In assembly language, a label is a symbolic name used to mark memory addresses. In 8086 assembly, there are two types of labels: Regular Labels: Represents only the address of a memory unit Labels with Unit Length: Represents not only the address but also implicitly includes the length information of … Read more