PCIe XDMA 实践
驱动编译
Makefile 配置主要涉及调试开关、BAR 号映射及交叉编译工具链设置。注意内核源码路径需根据实际 SDK 环境调整。
SHELL = /bin/bash
# optional makefile parameters:
# - DEBUG=<0|1>, enable verbose debug print-out in the driver
# - config_bar_num=, xdma pci config bar number
# - xvc_bar_num=, xvc pci bar
# - xvc_bar_offset=, xvc register base offset
DEBUG=0
config_bar_num=1
xvc_bar_num=1
ifeq ($(xvc_bar_num),)
XVC_FLAGS += -D__XVC_BAR_NUM__=$(xvc_bar_num)
endif
ifeq ($(xvc_bar_offset),)
XVC_FLAGS += -D__XVC_BAR_OFFSET__=$(xvc_bar_offset)
endif
topdir := $(shell cd $(src)/.. && pwd)
TARGET_MODULE:=xdma
EXTRA_CFLAGS := -I$(topdir)/include $(XVC_FLAGS)
ifeq ($(DEBUG),1)
EXTRA_CFLAGS += -D__LIBXDMA_DEBUG__
endif
ifeq ($(config_bar_num),)
EXTRA_CFLAGS += -DXDMA_CONFIG_BAR_NUM=$(config_bar_num)
endif
KERNELRELEASE:=/3588/kernel
$(TARGET_MODULE)-objs := libxdma.o xdma_cdev.o cdev_ctrl.o cdev_events.o cdev_sgdma.o cdev_xvc.o cdev_bypass.o xdma_mod.o xdma_thread.o
obj-m := $(TARGET_MODULE).o
linux 源码目录
BUILDSYSTEM_DIR:=/sdk/06_rk3588_241027/61_moEr_d2k_3588/kernel
PWD:=$(shell pwd)
CROSS_COMPILE_3588:=/3588/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
all : $(MAKE) -C $(BUILDSYSTEM_DIR) M=$(PWD) modules ARCH=arm64 CROSS_COMPILE=
@ -C M= clean
@/bin/rm -f *.ko modules.order *.mod.c *.o *.o.ur-safe .*.o.cmd
@rm -f /lib/modules/5.15.0-67-generic/extra/xdma.ko
@echo
@mkdir -p -m 755 /lib/modules//xdma
@install -v -m 644 *.ko /lib/modules//xdma
@depmod -a || true
@echo
@/bin/rm -rf /lib/modules//xdma
@depmod -a

