xdma 驱动编译(给arm用)

# 驱动

修改 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)

# 上面的注释掉,使用下面的

$(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)

# 最后一行还有一个 endif 也注释掉

编译

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复制到该目录下

你可能感兴趣的:(fpga,linux,运维,服务器,fpga,pcie)