# 驱动
修改 dma_ip_drivers-master/XDMA/linux-kernel/xdma/Makefile
# ifneq ($(KERNELRELEASE),)
# $(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
# else
# BUILDSYSTEM_DIR:=/lib/modules/$(shell uname -r)/build
# PWD:=$(shell pwd)
找到上面的并注释掉(最后一行还有一个 endif 也注释掉),紧挨着就添加下面的:
$(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
BUILDSYSTEM_DIR:=/home/debian/Desktop/xiaguangbo/project/rk3588/project/kernel # linux 源码目录
PWD:=$(shell pwd)
编译
export ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
make
# 工具
修改 dma_ip_drivers-master/XDMA/linux-kernel/tools/Makefile
# CC ?= gcc
CC = aarch64-linux-gnu-gcc
编译
make
编译之后用file xxx查看文件是否是属于aarch64架构的,如果不是查看Makefile对不对
将得到的 xdma.ko 放到 rootfs 里的 /lib/modules/xxx (linux内核版本号,uname -r 可得到)里就可以开机自动加载
一般制作的 rootfs 没有此目录,需要先运行一次depmod,会提示找不到/lib/modules/xxx,然后mkdir -p /lib/modules/xxx,再执行一次depmod,会生成一些.alies、.dep文件,然后将 xdma.ko 复制到该目录下,执行一遍 depmod 然后重启。如果不行就使用 insmod ./xxx/xdma.ko 来手动挂载一次,然后再重启,并使用 dmesg | grep xdma 来看驱动日志,或者 dmesg | grep pci 看 pci 的日志
fpga 工程与 rk3588 测试:<xdma axi-stream 回环测试_xdma stream read-CSDN博客>