【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. 源码下载

相关推荐
Ruiery1 小时前
Linux 6.6内核内存管理深度解析(一):物理内存初始化 — memblock 怎么把内存交给 buddy
linux·运维·服务器
天蓝蓝的本我2 小时前
conda日常用到的命令积累1-登录linux,安装pycharm
linux·pycharm·conda
Android系统攻城狮2 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_max调用流程与实战(五十九)
linux·运维·服务器·gstreamer音视频·音视频进阶·gstreamer音视频进阶
忆挽篱笙歌3 小时前
makefil
linux·运维·服务器
菜_小_白3 小时前
codex
linux·vscode·ai
zhangrelay4 小时前
用ROS2Lyrical实验报告册思路重做蓝桥云课ROS1实验并改进
linux·笔记·学习·ubuntu·机器人
林兴洋4 小时前
linux-mtr命令-ping和traceroute的能力合二为一
linux
OsDepK4 小时前
OSMDE_v1.9.0已加入FTP与shell功能
linux·运维·服务器
硅基手札5 小时前
【Linux内核专栏 11】驱动框架:platform / char / misc / 设备树
linux·运维·服务器
倒头就睡的小比特5 小时前
Linux基础指令初步认识
linux