Linux驱动
文章平均质量分 90
陈伙子
生命应有所坚持,生存当随遇而安
展开
-
输入子系统匹配过程之list_for_each_entry()函数分析
输入子系统匹配过程之list_for_each_entry()函数分析本文主要结合input_subsystem详细分析了list_for_each_entry()函数。其中包含offsetof (type,member)函数,container_of(ptr, type, member)函数,list_entry(ptr, type, member)函数,及这些函数的参数之间的关系。原创 2017-10-08 15:07:48 · 4767 阅读 · 1 评论 -
虚拟网卡实验笔记
网络协议方面的东东,我现在一点也不懂,本文只涉及网络驱动最底层网络设备结构体net_device的一些简单操作而已,甚至网卡的硬件操作也不非常清楚,学点大概,能移植芯片厂家的驱动就好。 协议层与网卡设备驱动层的通信,是通过net_device类型结构的hard_start_xmit()成员函数和协议层提供的netif_rx()函数来进行,如分配的一个net_devic原创 2018-01-01 11:10:33 · 2087 阅读 · 0 评论 -
内核LCD驱动结构分析及实例分析
内核中,LCD是作为帧缓冲设备来使用的,帧缓冲设备是标准的字符设备,主设备号为29。内核LCD驱动的结构包含了字符设备的结构和paltform设备的结构,以smdk2410为例,其主要涉及4个文件: linux-2.6.22.6\arch\arm\mach-s3c2410\mach-smdk2410.c linux-2.6.2...原创 2017-10-20 18:08:24 · 2660 阅读 · 0 评论 -
2.6内核中用register_chrdev_region注册字符设备
之前我们用register_chrdev()注册字符设备驱动,如:major = register_chrdev(0, "hello", &hello_fops); 这样注册的驱动使主设备号major下所有次设备号0-255都对应一个fops,即:(major, 0), (major, 1), ..., (major, 255)都对应hello_fops,这样可能浪费了很多次设备号,在2原创 2018-01-02 10:51:47 · 1440 阅读 · 0 评论 -
3线接口与wm8976声卡驱动
JZ2440使用WM9876声卡,其硬件原理图: 其控制接口有2线和3线模式,有MODE管脚决定,高电平为3线模式,低电平为2线模式,我们这里MODE接高电平,使用3线接口模式。 3线接口不是L3接口,但与L3接口相似,s3c2410-uda1341.c已经有了L3接口的操作,但没有3线接口的操作,我们把L3接口的操作修改一下支持3线接口,用3线接口接到的那三个GPIO来...原创 2018-01-08 22:58:09 · 3941 阅读 · 0 评论 -
L3接口介绍及UDA1341声卡测试
mini2440内部集成了IIS控制单元(源码中配置了几个寄存器,使5个脚用于IIS).对外引出了五个引脚:CDCLK : 为编解码芯片提供系统同步时钟(芯片工作时钟)I2SSCLK: IIS控制器提供的串行时钟信号I2SLRCK: 声道控制信号,当为低电平时是左声道,为高电平是右声道I2SDI : 数据输入信号I2SDO : 数据输出信号mini2440 UDA134原创 2018-01-08 18:06:15 · 1554 阅读 · 0 评论 -
s3c2440 IIC控制器裸板程序
I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。要点:1、总线空闲:I2C总线空闲的时候,两条线SDA和SCL都是高电平。2、开始信号 S 信号:SCL 为高电平时,SDA由高电平向低电平跳变,开始传送数据。3、结束信号 P 信号:SCL 为高电平时,SDA由低电平向高电平跳变,结束传送数据。4、响应信号 ACK:接收器在接收到8位数据后,在第9个时钟周期,...原创 2018-06-13 00:25:17 · 639 阅读 · 1 评论 -
2.6内核下写I2C设备驱动
I2C核心是内核自带的,一般不需要修改,它提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。 adapter驱动是硬件相关的,不同的soc有不同的adapter驱动,它操作IIC控制器,adapter的i2c_algorithm成员实现了一套通信方法,adapter利用i2c_algor...原创 2018-06-19 19:16:29 · 864 阅读 · 0 评论 -
Linux输入子系统过程分析笔记
这篇笔记的目的不是把input子系统应用起来,而是解答我自己在学习使用input子系统的时候心里的一些疑惑。供有相同疑惑的朋友参考。其中可能有错误或理解不正确之处,欢迎批评指正。 输入子系统核心层 driver/input/input.c 文件里做了如下工作: 入口函数 input_init()里面调用register_chardev(INPUT_MAJOR,"inpu...原创 2017-10-03 00:02:11 · 2523 阅读 · 0 评论 -
分离分层结构与平台设备驱动
本文根据自己的理解分析了分离分层结构和机制,后面也结合点灯例子分析了平台设备驱动,水平有限,错误之处欢迎批评指正。同时也希望能对大家有点帮助。概念: 分层: 核心层和设备相关层分开,如输入子系统分核心层input.c 和设备相关层 evdev.c ,button.c 分层思想的优点就是能把很多文件共用的代码抽离集中起来成为一个或者多个核心...原创 2017-10-13 23:06:42 · 2473 阅读 · 0 评论 -
电阻触摸屏驱动实例分析
s3c2440的CMOS模数转换器(ADC)有8路模拟输入AIN[0-7],8路输入共用一个A/D转换器,电阻触摸屏的输入相当于分压电阻的电压,触摸屏的x,y位置值由分压电阻电压值转换而来。S3c2440向外提供了与触摸屏直接相连的4个模拟输入引脚AIN[4-7],YP,YM,XP,XM。在触摸屏的不同位置按下触摸屏将产生不同的模拟输入电压值,驱动据此来辨别坐标。编写触摸屏的驱动涉及两个中断,一个...原创 2017-11-18 21:12:34 · 5285 阅读 · 0 评论 -
块设备驱动学习
块设备的读写,与字符设备的不同之处是它把读写构造为读写请求结构体,并没有立即读写,到了一定的时候把一系列的读写请求统一优化处理后,再统一读写。本文并没有分析块设备内核的东西,只是分析了如何利用系统提供的东西来处理请求和请求队列,进而写块设备驱动。原创 2017-11-19 17:21:52 · 2351 阅读 · 0 评论 -
GPIO模拟SPI驱动OLED
这个裸板驱动的流程:1、配置与OLED连接的引脚为输入或输出引脚,并设置有关引脚的默认或初始状态。2、根据spi时序,实现主机SPISendByte()函数,以便配置OLED或向其发送数据时调用。3、实现OLED 操作集,包括选择芯片,设置数据/命令模式,地址模式等函数。4、实现OLED的初始化函数 OLEDInit()和功能函数 OLEDPutChar(int page, int col...原创 2018-08-03 23:04:51 · 6318 阅读 · 0 评论