Windows PCI Device Driver Development Guide: How to Use DMA in User Mode

Windows PCI Device Driver Development Guide: How to Use DMA in User Mode

In this article (Implementing a PCIe Device in Qemu: Adding DMA Functionality), we added a vector addition feature to the PCIe device simulated with Qemu. This PCIe device uses DMA read operations to transfer the contents of two operand vectors provided by the driver into an internal buffer of the PCIe device, computes the sum … Read more

STM32CUBEMX Tutorial 5 — DMA Configuration & Combining DMA with UART for Data Transfer

STM32CUBEMX Tutorial 5 — DMA Configuration & Combining DMA with UART for Data Transfer

Follow and star the public account “Embedded Development Notes”,so you won’t miss any exciting content! Previous articles recommended:STM32CUBEMX Tutorial 4 — UART (USART) Configuration and Redirecting printf OutputSTM32CUBEMX Tutorial 3 — Using External Interrupts (EXTI)STM32CUBEMX Tutorial 2 — Using GPIO, Input/OutputSTM32CUBEMX Tutorial 1 — Environment Setup and New Project CreationDetailed Installation Guide for STM32CUBEMX1. Introduction … Read more

Windows PCI Device Driver Development Guide: Installing Drivers on QEMU Simulated PCIe Devices

Windows PCI Device Driver Development Guide: Installing Drivers on QEMU Simulated PCIe Devices

To add more functionality to the PCI device driver we wrote, we simulated a test PCIe device on QEMU, allowing us to implement features we wanted, such as DMA and interrupts. For the specific implementation of this PCIe test device, please refer to How to Implement a PCIe Device in QEMU. The Vendor ID and … Read more

Detailed Explanation of CPU I/O Capabilities and Peripheral Control Techniques in Assembly Language

Detailed Explanation of CPU I/O Capabilities and Peripheral Control Techniques in Assembly Language

1. Overview of CPU I/O Capabilities The CPU not only has computational capabilities but also needs to exchange data with external devices, a capability known as I/O (Input/Output) capability. Typical I/O operations in a computer system include: Keyboard input Display output Disk read/write Network communication, etc. 2. Two Core Issues in Peripheral Interaction 1. Peripheral … Read more

UART and DMA Data Transmission

UART and DMA Data Transmission

Concept of DMA DMA (Direct Memory Access) allows data transfer without direct control from the CPU. It creates a direct pathway for data transfer between RAM and I/O devices, significantly improving CPU efficiency. There are several methods for UART data reception: the interrupt mode of UART isthe most commonly used data transmission method in microcontrollers, … Read more

STM32 SPI Interface Tutorial: Achieving Efficient and Stable Data Transmission

STM32 SPI Interface Tutorial: Achieving Efficient and Stable Data Transmission

The SPI (Serial Peripheral Interface) is one of the most widely used synchronous serial communication protocols in embedded systems, playing a crucial role in STM32 development. Compared to I2C and UART, SPI is particularly suitable for high-speed data acquisition, memory expansion, and display driving due to its full-duplex communication, high transmission rates, and hardware slave … Read more

ZYNQ: From Abandonment to Entry (Part 8) – Interaction Between PS and PL

ZYNQ: From Abandonment to Entry (Part 8) - Interaction Between PS and PL

Previous articles mainly focused on the Processing System (PS) of the Zynq SoC, including: Using MIO and EMIO The interrupt structure of Zynq SoC Zynq private timers and watchdogs The triple timer counter (TTC) of Zynq SoC However, from a design perspective, the truly exciting aspect of the Zynq SoC is creating applications that utilize … Read more

The Volatile Keyword You Might Overlook in MCUs

The Volatile Keyword You Might Overlook in MCUs

Click 👆👆👆 the blue text Follow “Passion Embedded” In embedded development, especially in the development of microcontrollers like STM32, the <span>volatile</span> keyword is a very important concept. 1. Concept of the volatile Keyword <span>volatile</span> is a type modifier in C/C++ that tells the compiler: The variable may be modified unexpectedly (e.g., by hardware, interrupts, or … Read more

The Volatile Keyword You Might Overlook in MCUs

The Volatile Keyword You Might Overlook in MCUs

Click 👆👆👆 the blue text Follow “Passion Embedded” In embedded development, especially in the development of microcontrollers like STM32, the <span>volatile</span> keyword is a very important concept. 1. Concept of the volatile Keyword <span>volatile</span> is a type modifier in C/C++ that tells the compiler: The variable may be modified unexpectedly (e.g., by hardware, interrupts, or … Read more

Analysis of Embedded Driver Design Techniques

Analysis of Embedded Driver Design Techniques

In embedded system development, driver design is a key factor affecting system performance, energy efficiency, and maintainability. Below is an in-depth analysis of three mainstream driver design techniques along with practical recommendations: 1. Polling Driver Technical Features: Blocking Design: The main program cannot perform other tasks while waiting for peripheral responses. Simple Implementation: Only requires … Read more