嵌入式爱好者

编译驱动方法汇总

2023-3-27 14:52| 发布者: PaperLove| 查看: 318| 评论: 0

类目: 知识库  >  RK3568系列产品     文档编号: 953

编译驱动到内核:

内核驱动源码创建hello文件夹,添加hello.cMakefile文件,修改父目录/kernel/drivers/Makefile文件,执行全编译操作。

修改如下:

/hello/Makefile内容如下:obj-y += hello.o

/kernel/drivers/Makefile添加如下代码:obj-y += hello


编译驱动成模块:

方法1

内核源码/drivers创建hello文件夹,添加hello.cMakefile文件,修改父目录/kernel/drivers/Makefile文件,执行全编译操作。

修改如下:

/drivers/hello/Makefile内容如下:obj-m += hello.o

/kernel/drivers/Makefile添加如下代码:obj-y += hello

再执行./build.sh kernel脚本编译内核,即可在/drivers/hello目录下生成ko模块。

客户想要编译自己的驱动,但是又不想执行全编译操作,耗费太多时间,于是总结出了方法23

方法2

内核驱动源码中创建hello文件夹,添加hello.cMakefile文件,修改父目录/kernel/drivers/Makefile文件,修改/kernel/Makefile文件添加架构和交叉编译器,执行make modules命令。

修改如下:

/hello/Makefile内容如下:obj-m += hello.o

/kernel/drivers/Makefile添加如下代码:obj-y += hello

优点:执行make ARCH=arm64 modules命令,只会编译模块,编译时间缩短。

缺点:需要将驱动源码添加到内核当中,不便于查找修改;另外make modules命令会判断源码被配置成模块都会被编译。

方法3

新建任意路径hello文件夹,添加hello.cMakefile文件,/hello/Makefile文件添加架构和交叉编译器,在hello.c文件目录下执行make命令。

/hello/Makefile编写如下代码。

优点:执行make ARCH=arm64命令即可,只会单独编译hello.c驱动文件。

 

附录:

hello.c

#include <linux/init.h>

#include <linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)

{

printk(KERN_ALERT "Hello World enter\n");

return 0;

}

static void hello_exit(void)

{

printk(KERN_ALERT "Hello World exit\n");

}

module_init(hello_init);

module_exit(hello_exit);

MODULE_DESCRIPTION("A Sample Hello World Module");

MODULE_ALIAS("A Sample module");


Makefile

KERNELDIR := /home/forlinx/OK3568-linux-source/kernel/

CURRENT_PATH := $(shell pwd)

 

obj-m := hello.o

 

build: kernel_modules

kernel_modules:

$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules \

ARCH=arm64 \

CROSS_COMPILE=/home/forlinx/OK3568-linux-source/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

clean:

$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean

 


已解决

未解决

只是看看

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-16 17:56

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部