v851s驱动外部编译的Makefile
# 设置交叉编译器
# 若没有将交叉编译器添加到环境变量中需要将补全路径,xx/xx/xx/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/arm-openwrt-linux-
# xx/xx/xx/:表示自己的路径
# 例如:/home/linux/tina-v853-open/tina-v853-open/prebuilt/rootfsbuilt/arm/toolchain-sunxi-musl-gcc-830/toolchain/bin/arm-openwrt-linux-
CROSS_COMPILE:=arm-openwrt-linux-
# 设置内核源码路径
# 一样是xx/xx/xx/kernel/linux-4.9
KERNELDIR:=/home/linux/tina-v853-open/tina-v853-open/kernel/linux-4.9
# 设置模块名
# 模块名要和自己的.c文件名一致
MODULE_NAME := hello_drv
# 模块需要的源文件列表
obj-m := $(MODULE_NAME).o
all:
make ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR) M=$(PWD) modules
# make -C $(KERNELDIR)
# 切换路径到$(KERNELDIR)目录下,然后读取这个目录下的Makefile文件
#在内核顶层的目录下执行 make M=$(PWD) modules
# make M=./ modules 表示要编译模块,内核目录下的模块。(M是Makefile中的一个变量,代表的是编译的路径)
# make M=$(PWD) modules 编译PWD变量指定的路径下的模块
# ARCH\CROSS_COMPILE 是环境变量
# 清理编译结果
clean:
make -C $(KERNELDIR) M=$(PWD) clean
有了这个Makefile就可以将驱动文件放在任意文件夹下,然后通过执行make将驱动模块话编译,将生成的.ko文件拷贝到开发板中,通过insmod命令将安装驱动,rmmod命令卸载驱动。