希望将虚拟机上编译好的驱动文件能够在ARM开发板上使用,值得注意的地方有两点,一点是需要有编译好的并且与ARM开发板对应Linux内核源码,另一点是要在虚拟机上安装好交叉编译工具链。在学习过程中要把两者分开,两者都是工具,不要将两者混淆起来。
在虚拟机上安装交叉工具链
sudo apt install gcc-arm-linux-gnueabi
简单驱动程序 hello.c
#include <linux/init.h>
#include <linux/module.h>
static int hello_init(void)
{
printk("hello init\n");
return 0;
}
static void hello_exit(void)
{
printk("hello exit\n");
return;
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
Makefile
ifneq ($(KERNELRELEASE),)
obj-m:=hello.o
else
CROSS_COMPILE:= arm-linux-gnueabi-
CC:= $(CROSS_COMPILE)gcc
LD:= $(CROSS_COMPILE)ld
KDIR := /home/ubuntu/T113/T113-i_v1.0/out/kernel/build
PWD := $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
clean:
make -C $(KDIR) M=$(PWD) clean
endif
本文章的Linux内核源码路径:/home/ubuntu/T113/T113-i_v1.0/out/kernel/build
主要需要找到Linux内核源码具体位置在哪里。本文章是基于创龙的LinuxSDK进行开发的,所以我将源码放在 /home/ubuntu/T113 下,而LinuxSDK的脚本将源码编译在 T113-i_v1.0/out 文件下。
交叉编译路径设置:CROSS_COMPILE:= arm-linux-gnueabi-
最终效果
在虚拟机上成功编译成ARM版本。
实现在ARM开发板上的驱动安装与卸载