【linux】【测试demo】device-driver 框架实例

文章目录

  • [0. env](#0. env)
  • [10. 源码](#10. 源码)
    • [1. driver](#1. driver)
    • [2. device](#2. device)
    • [3. usr](#3. usr)
    • [4. Makefile](#4. Makefile)
  • 90.附件
    • [1. 源码下载](#1. 源码下载)

0. env

bash 复制代码
ubuntu 1804
gcc 7.5

10. 源码

1. driver

i2c-dri-2991.c

c 复制代码
#include <linux/init.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/of_device.h>

static int ltc_i2c_probe(struct platform_device *pev)
{
    return 0;
}

static int ltc_i2c_remove(struct platform_device *pdev)
{
    return 0;
}

static const struct of_device_id ltc_i2c_of_match[] = {
    {   .compatible = "ltc,ltc2991-i2c"    },
    {},
};
MODULE_DEVICE_TABLE(of, ltc_i2c_of_match);


static struct platform_driver ltc_i2c_driver = {
    .probe      = ltc_i2c_probe,
    .remove     = ltc_i2c_remove,
    .driver     = {
        .name = "i2c-ltc2991",
        .of_match_table = ltc_i2c_of_match,
    },
};
module_platform_driver(ltc_i2c_driver);

MODULE_LICENSE("GPL v2");

2. device

i2c-dev-2991.c

c 复制代码
#include <linux/init.h>
#include <linux/module.h>

static int __init my_mod_init(void)
{
    printk("mod init.\n");
    return 0;
}

static void __exit my_mod_exit(void)
{
    printk("mod exit.\n");
}

module_init(my_mod_init);
module_exit(my_mod_exit);

MODULE_LICENSE("GPL v2");

3. usr

4. Makefile

bash 复制代码
ifneq ($(KERNELRELEASE),)
obj-m += i2c-dri-2991.o
obj-m += i2c-dev-2991.o
#ARCH := x86_64
else

KERN_DIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
#module:
    $(MAKE) CROSS_COMPILE= -C $(KERN_DIR) M=$(PWD) modules
#clean:
#   $(MAKE) -C $(KERN_DIR) M=$(PWD) modules clean
#modules_install:
#   $(MAKE) -C $(KERN_DIR) M=$(PWD) modules_install
endif

90.附件

1. 源码下载

相关推荐
cominglately2 小时前
centos单机部署seata
linux·运维·centos
魏 无羡2 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse2 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
木子Linux3 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
mit6.8243 小时前
Ubuntu 系统下性能剖析工具: perf
linux·运维·ubuntu
鹏大师运维3 小时前
聊聊开源的虚拟化平台--PVE
linux·开源·虚拟化·虚拟机·pve·存储·nfs
watermelonoops4 小时前
Windows安装Ubuntu,Deepin三系统启动问题(XXX has invalid signature 您需要先加载内核)
linux·运维·ubuntu·deepin
滴水之功4 小时前
VMware OpenWrt怎么桥接模式联网
linux·openwrt
ldinvicible5 小时前
How to run Flutter on an Embedded Device
linux
YRr YRr5 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu