# 驱动
修改 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复制到该目录下