5.设备驱动Makefile编写及编写测试驱动

  1. 市面上的关于设备驱动的书大部分是三星的开发板(都是啥210,2440啥的旧芯片),全志和瑞芯微的好像没看到有,还有有关TI芯片的中文书籍关于驱动方面讲的也很浅,不适于入门。
  2. 博文是在关于三桑的开发板上的基础上开始编写的,因笔者(我)水平问题,错漏在所难免

参考资料改的Makefile

mkdir /root/myPC2

cd /root/myPC2

vim Makefile
KERNEL_DIR ?= /root/Oriangepi/OrangePiH5/kernel
PWD := $(shell pwd)
CROSS_COMPILE = aarch64-linux-gnu-

obj-m = hello.o

#多文件
#obj-m = module.o
#module-objs := file1.o file2.o

all: modules

modules clean:
	$(MAKE) -C $(KERNEL_DIR) ARCH=arm64 CROSS_COMPILE=$(CROSS_COMPILE) \
		SUBDIRS=$(PWD) $@

测试方法

touch hello.c

#编译

make

清理

make clean

以下为带内容的hello.c测试,入口函数和出口函数编写标准是“有进无出”(有无返回值)

$vim hello.c
#include <linux/init.h>
#include <linux/module.h>

//入口函数,可自定义函数名,带返回值
static int hello_init(void)
{
        printk(KERN_ALERT "hello,Pi ka qiu!\n");
        return 0;
}

//出口函数,可自定义函数名,无返回值
static void hello_exit(void)
{
        printk(KERN_ALERT "Goodbye,Pi ka qiu!\n");
}

module_init(hello_init);//入口
module_exit(hello_exit);//出口
MODULE_LICENSE("GPL");//协议标准

 

$ make
make -C /root/Oriangepi/OrangePiH5/kernel ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
	SUBDIRS=/root/myPC2 modules
make[1]: 进入目录“/root/Oriangepi/OrangePiH5/kernel”
  CC [M]  /root/myPC2/hello.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/myPC2/hello.mod.o
  LD [M]  /root/myPC2/hello.ko
make[1]: 离开目录“/root/Oriangepi/OrangePiH5/kernel”
#此时不会在提示空文件,虽然空文件也可以编译
$ ls

hello.c   hello.mod.c  hello.o   modules.order
hello.ko  hello.mod.o  Makefile  Module.symvers

将驱动文件拷贝到nfs目录,开发板挂载nfs目录(也可以在nfs目录编写驱动文件)
 

#装载驱动,带后缀

$ insmod hello.ko

#卸载驱动,设置驱动文件名,不带后缀

$ rmmod hello

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值