首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux的I2C驱动框架分析

驱动 简单的说驱动代表着操作设备的方式和流程。 Linux总线设备框架的工作原理 如果想要弄清楚I2C驱动框架,必须深刻的理解Linux的总线设备框架。...之所以会形成这样的框架,很重要的原因是为了代码的复用性。因为驱动和设备的关系是一对多的,对于相同类型的不同的设备,可共用同一套驱动程序接口。为了提高驱动的可移植性,Linux抽象出一套管理资源的函数。...3.Linux下I2C驱动程序的体系结构 ---- 对于Linux下的I2C驱动,其体系结构的组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法...根据前面的总线设备驱动的框架,有driver那么肯定会有device。...5.总结 ---- 对于I2C完整的传输协议,最重要的是弄清楚总线驱动程序的框架,因为I2C也是属于总线框架。对于I2C总线设备框架的模型,可以用下图来说明: ?

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

    《rt-thread驱动框架分析》-touch驱动

    简介 rt-smart相关文章 《rt-smart的第一个应用程序,imx6ull用户态点灯》 《rt-smart用户态通过IPC通信玩转传感器数据》 rt-thread驱动相关文章 《rt-thread...驱动框架分析》-pin驱动 《rt-thread驱动框架分析》-i2c驱动 有了LCD之后,那必然要有触摸,没触摸的屏幕感觉少了灵魂。...Touch IC驱动 对于Touch,RT-Thread有专门的设备驱动框架,官网文档有对相关API使用的说明,可以查看下面链接。这篇文章主要描述底层的touch驱动对接。应用相关的直接看文档中心。...而作者比较懒,如果一个一个寄存器去配置,会花很长时间,其实我用的就是100ask_imx6ull,在韦老师的提供的linux代码中就有相对应的驱动,而且而且这些控制寄存器的相关配置是在设备树中,所以直接把设备树的这些寄存器拷贝过来就完事了...其实这一块的操作可以直接根据其他的软件,我编写的这个驱动就是参考gt9147软件包的。

    56910

    《rt-thread驱动框架分析》-pin驱动

    简要 接下来做一个专辑《rt-thread驱动框架分析》,我会按照自己的理解来描述每一个驱动。有不对的欢迎随时来怼我。 rt-thread的版本分为两大类,一个是完整版本,一个是nano版本。...而驱动框架是相对于完整版本的。所以要了解驱动框架,只能在完整版上了解。 rt-thread提供了很多驱动框架,比如常见的外设驱动:I2C, SPI等。还有网络相关的WLAN驱动等。...驱动框架分析,主要以STM32来分析。 驱动分析 API简要说明 rt-thread的pin驱动为上层应用提供两套不同的API,一套是对接设备驱动框架。一套是封装好的API,用户层可以直接使用。...但是直接学Linux,如果你不去了解内核驱动代码,会少很多乐趣。但是Linux的驱动框架更加复杂,分析更加痛苦。所以作者认为,如果你学了RTT,再去学习Linux,分析驱动框架会更加简单方便。...作为RTT的爱好者,我将对RTT驱动框架分析作为一个系列。

    1.4K30

    linux字符设备驱动基本框架

    对于Linux的驱动程序,需要遵循一定的框架结构。嵌入式Linux的学习其实并不难,只要深入理解Linux的框架,写起来也可以得心应手。...2.驱动程序的框架 在理解设备框架之前,首先要知道驱动程序主要做了以下几件事 1.将此内核驱动模块加载到内核中 2.从内核中将驱动模块卸载 3.声明遵循的开源协议 2.1 Linux下的设备 Linux...2.2 驱动程序框架的一个例子 对于一个驱动程序,如果想让内核知道,就准守一定的框架,下面来看一下一个最简单的驱动程序的框架 #include linux/init.h> #include linux...3.字符设备驱动程序解析 字符设备在Linux驱动中起到十分关键的作用。包括我们要实现的LCD驱动以及CAM驱动都属于字符设备驱动。所以现在主要分析一下字符设备驱动程序的框架。...3.2 创建流程 第一步:写出驱动程序的框架 前面在创建驱动程序的框架时,只是测试了安装与卸载驱动,并且找到驱动程序的入口与出口。并没有一个字符设备操作的接口。

    6K53

    Linux系统驱动之Framebuffer驱动程序框架

    资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 Framebuffer驱动程序框架 1....怎么编写字符设备驱动程序 驱动主设备号 构造file_operations结构体,填充open/read/write等成员函数 注册驱动:register_chrdev(major, name, &fops...Framebuffer驱动程序框架 分为上下两层: fbmem.c:承上启下 实现、注册file_operations结构体 把APP的调用向下转发到具体的硬件驱动程序 xxx_fb.c:硬件相关的驱动程序...怎么编写Framebuffer驱动程序 核心: 分配fb_info framebuffer_alloc 设置fb_info var fbops 硬件相关操作 注册fb_info register_framebuffer

    3.3K30

    Linux内核书籍

    《Linux设备驱动》   --  也就是我们所说的LDD3了; 适合一定基础的人阅读,深入学习Linux不可或缺的知识; 《UNIX环境高级编程》 这本书并不是面对linux内核的书,但是我是从最基础看这本书逐步入门的...; 《Linux内核完全剖析》 本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux...虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。...《Linux那些事》 由复旦一群大神所写,团队为fudan_adc,主要写了我是xxx系列,本人比较喜欢对USB 部分的描述,不得不说大神就是大神。...《Linux设备驱动开发详解》 由华清远见出身的大神所写,宋宝华大神所写,华清远见出来的技术杠杠的。 《深入理解计算机操作系统》 当然啦,不得不说大学学过的操作系统啊!!!!

    3.9K60

    Linux 驱动挂载顺序分析

    手把手教你分析 Linux 启动流程 从上文可以得出,start_kernel 函数最后调用的是 rest_init 函数,其实 rest_init 函数不光产生了最重要的 kernel_init (...linux4.14/init/main.c 驱动的优先级:Linux 把系统中需要挂载的各种东西,都分为14个等级,分别为 1--1s--2--2s--3--3s--4--4s--5--5s--6-...-6s--7--7s,数字越小优先级越高,定义在: linux4.14/include/linux/init.h 一般我们自己写的驱动模块,文件最后会声明一个 module_init 和 module_exit...(静态编译) 3、动态加载驱动模块:等 Linux 系统起来以后,手动执行 insmod 和 rmmod 即可挂载和卸载驱动,顺序自己决定。测试成功后,再搞到内核中静态编译。...有两种方式: 1、找到编译后的 Linux 内核源码,根目录下面有个 System.map 文件,这里记载了 Linux 内核所做的所有的事情,是按顺序记载的(也有可能在其他输出目录)。

    2.6K30

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

    Linux下驱动框架介绍 1.1 驱动框架分类 Linux下驱动框架分为3大类型: 字符设备 --------- 块设备 存储设备 SD 硬盘 网络设备 网卡 无线 有线 字符设备和块设备都会生成设备节点在...可以使用ifconfig查看 字符设备标准框架详细区分: RTC设备驱动 LCD屏设备驱动—帧缓冲设备框架 声卡设备驱动—音频设备 标准输入设备驱动—输入子系统框架 …等等...、蜂鸣器 驱动都是使用字符设备框架编写 1.2 驱动框架代码模板 示例代码: #include linux/kernel.h> #include linux/module.h> static...杂项设备框架 2.1 框架结构介绍 杂项字符设备的主设备号固定: 10 主设备号: 0 ~ 255 次设备号范围: 0 ~ 255 Linux内核寻找驱动节点是依靠设备号寻找的。...文件操作集合的模型图: 2.2 蜂鸣器驱动示例代码 这是蜂鸣器的驱动层示例代码,使用杂项设备框架编写: #include linux/init.h> #include linux/module.h

    3.2K30

    22.Linux-块设备驱动之框架详细分析(详解)

    本节目的:     通过分析块设备驱动的框架,知道如何来写驱动 1.之前我们学的都是字符设备驱动,先来回忆一下 字符设备驱动: 当我们的应用层读写(read()/write())字符设备驱动时,是按字节...是Linux内存管理机制中一个内存页或者内存页的一部分。 块  (Blocks):   由Linux制定对内核或文件系统等数据处理的基本单位。通常由1个或多个扇区组成。...(对Linux操作系统而言) 扇区(Sectors):块设备的基本单位。...) 5.接下来开始分析块设备框架 当我们对一个*.txt写入数据时,文件系统会转换为对块设备上扇区的访问,也就是调用ll_rw_block()函数,从这个函数开始就进入了设备层. 5.1先来分析ll_rw_block...return; q->request_fn(q); } 最终执行q的成员request_fn()函数, 执行申请队列的处理函数 6.本节框架分析总结

    2.2K62

    《rt-thread驱动框架分析》-i2c驱动

    简要 上一篇分析了RTT的PIN驱动,得到了很多网友的认可,很开心。很多人跟我反映写一些usb,wlan等框架,这个一步一步来,从浅到深。...这一篇文章我们来分析rt-thread的I2C设备驱动框架,I2C也是我们经常使用到总线。 I2C驱动框架我准备基于我的开源硬件《GND studio 开发板》来做实验。...《rt-thread驱动框架分析》专辑回顾: 《rt-thread驱动框架分析》-pin驱动 驱动分析 I2C设备驱动框架图: 我们先RT-Thread的I2C框架图(这是我自己理解的框架图,如果不对的地方...,请指出): 上图是我分析的RTT的I2C框架图。...主要分为三层,驱动层-核心层-设备层。如果你分析过Linux的I2C框架,它的层次也是这样子。所以你了解了RTT的I2C之后再去看Linux的I2C框架,其实问题不大。

    1.7K31

    Linux内核的LED设备驱动框架【转】

    驱动框架的概念 内核中驱动部分维护者针对每个种类的驱动设计一套成熟的、标准的、典型的驱动实现,并把不同厂家的同类硬件驱动中相同的部分抽出来自己实现好,再把不同部分留出接口给具体的驱动开发工程师来实现,这就叫驱动框架...即标准化的驱动实现,统一管理系统资源,维护系统稳定。 2. LED设备驱动框架概述 (1)LED设备的共性: 1)LED的亮与灭; 2)具有相应的设备节点(设备文件)。...因此,Linux中LED的驱动框架把所有LED设备的共性给实现了,把不同的地方留给驱动工程师去做。...LED设备驱动框架分析 3.1 创建leds类 subsys_initcall是一个宏,它的功能是将其声明的函数放到一个特定的段:.initcall4.init。...return sprintf(buf, "%u\n", led_cdev->max_brightness);//将最大亮度值保存至buf中 } 3.6 LED设备的unregister接口 LED设备驱动框架为驱动开发者

    2.6K10

    Linux网络编程书籍

    可作入门,但即使是高手,也应看看,学习作者分析问题的方法和思想。其实是无数次印刷了,经典不能错过。...本书是世面上极少见的讲述内部网关路由技术的经典书籍,内容极为丰富。对于想清楚的了解内部网关协议的工作原理以及想探究网络通信事物的本质的人来说是一本不可或缺的好书。...网络体系结构:linux内核中网络协议的设计与实现》 ?...Protocols in the Linux Kernel 书名: Linux网络体系结构 说明:翻译的很不好,建议看原版,可以下电子版。...一本在kernel实现网络功能的基础书籍,最好还是看英文版的,翻译的实在太烂了。有条件的还是看原版吧,没办法啊,中国的此类书籍基本上落后老美3-4年。结合linux源代码分析一书收获更多。

    3.5K30

    嵌入式Linux驱动开发——字符设备驱动框架入门

    1 提到了关于Linux的设备驱动,那么在Linux中I/O设备可以分为两类:块设备和字符设备。...那么最简单的字符设备驱动程序的框架是如何呢?...在这里毕竟不是为了分析框架的具体实现原理,以后有机会慢慢展开,在此主要为了讨论,如何快速使用这些框架来写出字符设备的驱动程序。...其实编写字符驱动的步骤并不复杂,我们首先将框架建立起来,建立框架的大致我认为可以分为以下两部(其中的细节问题后续展开): 编写驱动的入口和出口函数,此函数会在驱动模块加载和卸载时调用 编写具体的read...(非必须) 我们先看看一个简单的驱动程序的框架: #include linux/init.h> //定义了module_init #include linux/module.h> //最基本的头文件

    3.2K20

    Linux系统驱动之LCD驱动程序框架_使用设备树

    资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 编程_LCD驱动程序框架_使用设备树 参考资料,GIT仓库里: 基于这个程序修改: IMX6ULL\source\03_LCD\03_lcd_drv_qemu_ok STM32MP157...\source\A7\03_LCD\03_lcd_drv_qemu_ok 参考:内核自带的示例驱动程序 Linux驱动源码:drivers/video/fbdev/simplefb.c 设备树:...说明 Linux驱动程序 = 驱动程序框架 + 硬件编程。 在前面已经基于QEMU编写了LCD驱动程序,对LCD驱动程序的框架已经分析清楚。...核心就是: 分配fb_info 设置fb_info 注册fb_info 硬件相关的设置 本节课程我们基于设备树来编写驱动程序。 2. 入口函数注册platform_driver 3.

    2.5K30
    领券