ARM端 xdma 的驱动编译,交叉编译器的配置,编译内核
编译xdma说明
一、安装交叉编译器(官方用的6.3的)
// An highlighted block
1、 mkdir -p /opt/FriendlyARM/toolchain/ #新建一个目录
2 、cp gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar /opt/FriendlyARM/toolchain/
3、tar xvf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar # 将编译器解压到当前目录
4、 mv gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu gcc-linaro-7.4.1 #把名字变短一点
5 、source setEnv.sh #设置临时环境变量 只在当前终端有效 、每次编译前source一下
验证 aarch64-linux-gnu-gcc -v
2、Makefile 修改 kernel 路径 自己的 编译器自己指定
// An highlighted block
obj-m += xdma.o
xdma-objs := xdma-core.o xdma-sgm.o xdma-ioctl.o xdma-bit.o
KERNELDIR ?=/home/ycd/project/rk3399/kernel/kernel-rockchip-nanopi4-linux-v4.4.y
PWD := $(shell pwd)
ROOT := $(dir $(M))
XILINXINCLUDE := -I$(ROOT)../include -I$(ROOT)/include
GCC49 :=aarch64-linux-gnu-
all:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
install: all
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
depmod -a
install -m 644 10-xcldma.rules /etc/udev/rules.d
clean:
rm -rf *.o *.o.d *~ core .depend .*.cmd *.ko *.ko.unsigned *.mod.c .tmp_versions *.symvers .#* *.save *.bak Modules.* modules.order Module.markers *.bin
CFLAGS_xdma-core.o := -Wall -DDEBUG $(XILINXINCLUDE)
ifeq ($(GCC49),1)
CFLAGS_xdma-core.o += -Wno-error=date-time
endif
CFLAGS_xdma-sgm.o := $(XILINXINCLUDE)
CFLAGS_xdma-bit.o := $(XILINXINCLUDE)
CFLAGS_xdma-ioctl.o := $(XILINXINCLUDE)
编译出xdma.ko 导入到开发板内就可以插入内核了。
set_Env.sh在另一篇上传送门