linux驱动与编译

0:系统不可用1:必须立即采取行动2:关键条件3:错误条件4:警告条件5:正常但重要的条件6:信息性7:调试级别消息。
摘要由CSDN通过智能技术生成

linux驱动

1、目录介绍

linux驱动1

2、最简单的Linux驱动结构

(1)头文件

必须包含#include <linux/module.h>、#include <linux/init.h>

(2)驱动加载函数

static int helloworld_init(void){
   
    printk("helloworld!\n");
    return 0;
}

module_init(helloworld_init);

(3)驱动卸载函数

static int helloworld_exit(void){
   
    printk("helloworld bye!\n");
}

module_exit(helloworld_exit);

(4)许可证声明

MODULE_LICENSE("DPL");
MODULE_AUTHOR("lzr");
MODULE_VERSION("V1.0");

3、编译驱动文件(放哪都行)

obj-m+=helloworld.o
KDIR:=/home/disk/liziru/rk3399/kernel/linux_mydriver
PWD?=$(shell pwd)
all:
	make -C $(KDIR) M=$(PWD) modules
clean:
	rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order

obj-m+=helloworld.o
表示把目标文件helloworld.o作为模块进行编译。obj就是object的缩写,-m表示编译成模块
KDIR:=/home/disk/liziru/rk3399/kernel/linux_mydriver
使用绝对路径的方式指定内核源码的路径(即rk3399/kernel)
PWD?=$(shell pwd)
获取Makefile文件所在的路径
all:
	make -C $(KDIR) M=$(PWD) modules
	进到KDIR目录,使用PWD路径下源码和Makefile文件编译驱动模块
clean:
	rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
	清除编译文件

4、添加临时编译变量(每次开终端都要加)

//设置交叉编译链以及编译架构
export CROSS_COMPILE=/home/disk/liziru/rk3399/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
export ARCH=arm64

5、如果不想添加临时变量,可将变量写死

rk3399/kernel/Makefile

ARCH            ?= $(SUBARCH)
ifeq ($(ARCH),arm64)
ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu),)
CROSS_COMPILE   ?= $(srctree)/../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
endif
ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9),)
CROSS_COMPILE   ?= $(srctree)/../prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值