首页
学习
活动
专区
圈层
工具
发布

Linux的I2C驱动框架分析

Linux总线设备框架的工作原理 如果想要弄清楚I2C驱动框架,必须深刻的理解Linux的总线设备框架。之所以会形成这样的框架,很重要的原因是为了代码的复用性。...为了提高驱动的可移植性,Linux抽象出一套管理资源的函数。设备是存在的硬件,在设备里包含自己的属性,也包含需要用到的资源。...3.Linux下I2C驱动程序的体系结构 ---- 对于Linux下的I2C驱动,其体系结构的组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法...到这里,一个I2C完整的传输流程就完成了。 5.总结 ---- 对于I2C完整的传输协议,最重要的是弄清楚总线驱动程序的框架,因为I2C也是属于总线框架。...对于I2C总线设备框架的模型,可以用下图来说明: ? 也就是device与driver同时向i2c总线上注册。

5.9K11

C语言链表应用--基于Linux C多线程软件框架实现

之前写过一篇基于C语言链表实现的工作任务注册与执行,链接如下: https://blog.csdn.net/morixinguan/article/details/77986553 后面使用它演变成为了另外一个框架...搞过RK(瑞芯微)平台的都知道,这个平台提供了一个PCBA的测试程序,它是基于Linux内核链表框架实现的,但该程序有一点不好的地方就在于框架用起来不是那么的简单,因此我针对该项目做了自己的优化,使之用起来简单...s32 Run_Priority_work(_work handler,s32 direction,const s32 work_array_size) ; #endif //__WORK_H work.c...1、初始化工作 2、工作任务注册 3、调度任务运行 测试使用:test.c #include #include "work.h" int Test1(int work_num) ; int

2.9K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux系统驱动之I2C_Adapter驱动框架讲解与编写

    视频观看 百问网驱动大全 I2C_Adapter驱动框架讲解与编写 参考资料: Linux内核文档: Linux-4.9.88\Documentation\devicetree\bindings...I2C Linux-4.9.88\drivers\i2c\busses\i2c-gpio.c Linux-5.4\drivers\i2c\busses\i2c-gpio.c Linux内核真正的I2C...I2C_Adapter驱动框架 2.1 核心的结构体 1. i2c_adapter 2. i2c_algorithm master_xfer:这是最重要的函数,它实现了一般的I2C传输,用来传输一个或多个...I2C Adapter,换句话说就是让这个I2C Adapter模拟该i2c_client unreg_slave:反注册 2.2 驱动程序框架 分配、设置、注册一个i2c_adpater结构体:...编写一个框架程序 3.1 设备树 在设备树里构造I2C Bus节点: i2c-bus-virtual { compatible = "100ask,i2c-bus-virtual"; }; 3.2

    2.1K30

    Linux 内核裁剪框架初探

    事实上,Linux 4.14 中30%左右 的 C 预处理器是语句级选项。 随着内核代码和功能特性的快速增长,内核中的配置选项数量也在迅速增加,以 Linux内核3.0以上版本都有1万多个配置选项。...利用虚拟机监控程序的可见性来实现端到端的观察,可以跟踪内核引导阶段和应用程序工作负载,可以尝试在QEMU 的基础上建造Linux内核的裁剪框架。 可组合性。...通过在线系统,配置组合器使用基线配置和应用配置来生成目标内核配置,然后,内核构建器生成裁剪后的Linux内核. 5.3 内核裁剪框架的实现可行性 配置跟踪 内核裁剪框架的配置跟踪器在目标应用程序驱动的内核执行期间跟踪配置选项...对于基于 C 预处理器的模式 ,分析 C 源文件以提取预处理器指令,然后检查这些指令中的语句是否被执行。对于基于 Makefile 的模式 ,确定是否应该在对象文件的粒度上选择配置选项。...了解了现有技术的局限性,尝试提出一个Linux内核裁剪框架,或许可以解决这些问题。

    2.9K30

    Linux驱动框架与杂项字符设备框架介绍

    Linux下驱动框架介绍 1.1 驱动框架分类 Linux下驱动框架分为3大类型: 字符设备 --------- 块设备 存储设备 SD 硬盘 网络设备 网卡 无线 有线 字符设备和块设备都会生成设备节点在...、蜂鸣器 驱动都是使用字符设备框架编写 1.2 驱动框架代码模板 示例代码: #include linux/kernel.h> #include linux/module.h> static...-3.5/linux-3.5 all: make -C $(KER_DRI) M=`pwd` modules clean: make -C $(KER_DRI) M=`pwd` modules...杂项设备框架 2.1 框架结构介绍 杂项字符设备的主设备号固定: 10 主设备号: 0 ~ 255 次设备号范围: 0 ~ 255 Linux内核寻找驱动节点是依靠设备号寻找的。...文件操作集合的模型图: 2.2 蜂鸣器驱动示例代码 这是蜂鸣器的驱动层示例代码,使用杂项设备框架编写: #include linux/init.h> #include linux/module.h

    3.8K30

    Linux之字符设备驱动框架

    内核编程的注意事项1.不能使用C标准库和C标准头文件2.使用GNU C3.没有内存保护机制4.不能处理浮点运算5.注意并发互斥和可移植性问题 1.内核模块Linux 驱动有两种运行方式,第一种是将驱动编译进...Linux 内核中,当 Linux 内核启动的时就会自动运行驱动程序。...void iounmap (volatile void __iomem *addr)AI写代码cpp/* 寄存器物理地址 */#define CCM_CCGR1_BASE(0X020C406C) /*...以上就是一个最简单的字符设备驱动框架。三、字符设备驱动(二)前面的字符设备驱动框架比较简单,不灵活。不仅需要设定主设备号,在测试时还需要手动创建设备文件。新字符设备驱动框架刚好能解决这两个大问题。...cdevAI写代码cpp4.自动创建设备节点上面的驱动框架,当使用 modprobe 加载驱动程序以后还需要使用命令mknod手动创建设备节点。

    49310

    【C++】基础:C++相关库和框架

    框架 C++通用框架和库 Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的集合 ASL :Adobe源代码库提供了同行的评审和可移植的C++源代码库...widows, Mac OS X,Linux和其他平台创建应用程序 图形 bgfx:跨平台的渲染库 Cairo:支持多种输出设备的2D图形库 Horde3D 一个小型的3D渲染和动画引擎 magnum...libcurl :多协议文件传输库 Mongoose:非常轻量级的网络服务器 Muduo :用于Linux多线程服务器的C++非阻塞网络库 net_skeleton :C/C++的TCP 客户端/...Crow :一个C++微型web框架(灵感来自于Python Flask) Kore :使用C语言开发的用于web应用程序的超快速和灵活的web服务器/框架。...:Linux上在线编译和执行C++程序 Ideone :一个在线编译器和调试工具,允许你在线编译源代码并执行,支持60多种编程语言。

    78910

    Linux DRM 框架与实例分析

    1、DRM 框架 Linux 图像子系统涉及 GUI、3D application、DRM/KMS、hardware 等: 在 Linux display 驱动开发时,通常关注 FBDEV(Framebuffer...我们可以从用户空间、内核空间的两个角度去了解 DRM 框架: 用户空间 (libdrm driver): Libdrm(DRM 框架在用户空间的 Lib) 内核空间 (DRM driver): KMS(...这两个基本功能可以说是显示驱动必须基本的能力,在 DRM 框架下,为了将这两部分适配得符合现代显示设备逻辑,又分出了几部分子模块配合框架。...bind 回调函数,最后通过 drm_dev_register() 函数注册到 DRM core 平台驱动源码如下 drivers/gpu/drm/rockchip/rockchip_drm_drv.c...所以在 DRM 框架下,有部分代码用于实现在 DRM 框架下,去模拟 FB 设备。

    3.6K10

    linux字符设备驱动基本框架

    对于Linux的驱动程序,需要遵循一定的框架结构。嵌入式Linux的学习其实并不难,只要深入理解Linux的框架,写起来也可以得心应手。...2.驱动程序的框架 在理解设备框架之前,首先要知道驱动程序主要做了以下几件事 1.将此内核驱动模块加载到内核中 2.从内核中将驱动模块卸载 3.声明遵循的开源协议 2.1 Linux下的设备 Linux...2.2 驱动程序框架的一个例子 对于一个驱动程序,如果想让内核知道,就准守一定的框架,下面来看一下一个最简单的驱动程序的框架 #include linux/init.h> #include linux...*Module.markers 其中需要解释一下的是 $(MAKE) -C $(KDIR) M=$(PWD) modules 该命令是make modules命令的扩展,-C选项的作用是指将当前的工作目录转移到指定目录...3.字符设备驱动程序解析 字符设备在Linux驱动中起到十分关键的作用。包括我们要实现的LCD驱动以及CAM驱动都属于字符设备驱动。所以现在主要分析一下字符设备驱动程序的框架。

    6.7K53

    Linux高性能网络编程十谈|9个C++的开源的网络框架

    周末程序猿 鹅厂程序猿,专注后台开发和人工智能领域~~ 100篇原创内容 公众号 继续上一篇《Linux高性能网络编程十谈|C++11实现22种高并发模型》,大家对于 C++ 实现各种 Server 比较感兴趣...,于是我把工作这些年接触的高性能开源的网络框架整理了一遍,基于9个C++网络框架实现 Echo Server 样例。...框架 类型 C++ 标准 特点 代表的开源项目 libevent 事件驱动 C++11 跨平台、轻量级、广泛使用 Memcached, Tor, Chromium, tmux libev 事件驱动 C...++11 高性能、Linux 优化 Node.js (早期版本), PowerDNS, Varnish libuv 事件驱动 C++11 Node.js 底层、跨平台 Node.js, Julia, Luvit... Web 服务器 性能对比 框架简介 1. libevent - 事件驱动架构 特点: 跨平台兼容性: 支持 Linux (epoll)、macOS (kqueue)、Windows (IOCP) 等多种平台

    96812
    领券