Linux DMA驱动程序
摘要:学习目的: 熟悉Linux下DMA驱动程序编写 1、DMA基本概念 DMA,全称Direct Memory Access,即直接储存器访问。 它是一种高速的数据传送操作,可用于芯片的外设和存储器或存储器和存储器或外设和外设之间数据的传输。DMA的数据传送过程不需要CPU干预,是通过DMA控制器完成的
阅读全文
posted @
2021-01-06 09:53
quinoa
阅读(4754)
推荐(1)
Linux OSS架构声卡驱动框架
摘要:学习目的: 分析Linux中OSS声卡驱动框架 1、OSS声卡驱动框架 Linux下的声卡驱动架构主要分为OSS架构和ALSA架构,OSS全称是Open Sound System,叫做开放式音频系统,ALSA全称是Advanced Linux Sound Architecture,叫做Linux高级
阅读全文
posted @
2021-01-04 19:27
quinoa
阅读(1869)
推荐(0)
Linux RTC驱动分析及应用
摘要:一、RTC简介 RTC(real-time clock)简称实时时钟,主要是用来计时,产生闹钟等。RTC一般有个备份电池,所以即使设备关机掉电,RTC也能在备份电池的供电下继续正常计时,这样在每次系统开机上电时就可以从RTC设备中读取到准确的时间。RTC时间在每次系统启动的时候会使用,在需要的时候也
阅读全文
posted @
2020-12-14 23:47
quinoa
阅读(1646)
推荐(1)
字符设备的另一种写法(register_chrdev_region)
摘要:1、另一种写法引入 前面学习编写字符设备驱动的时候都是使用register_chrdev函数注册字符设备驱动程序,该函数的原型如下: int register_chrdev(unsigned int major, const char *name, const struct file_operati
阅读全文
posted @
2020-12-11 23:54
quinoa
阅读(866)
推荐(0)
Linux I2C驱动框架
摘要:一、I2C总线概述 I2C是由Philips公司开发的一种简单的、双向同步串行总线,它只需要两条线即可在连接于总线上的器件之间传送信息,其硬件连接框图如下所示: SCL:串行时钟线,数据传输过程中用于同步的时钟信号,低电平时允许SDA线上数据改变。 SDA:串行数据线,在时钟信号作用下,数据按位在数
阅读全文
posted @
2020-12-10 22:35
quinoa
阅读(1222)
推荐(0)
移植DM900C网卡驱动
摘要:前面一节简单分析了Linux内核网卡驱动程序的框架,并编写了一个虚拟网卡驱动程序。这一节我们开始学习网卡芯片DM9000C,尝试将官方提供的DM900C网卡驱动程序移植到jz2440开发板使用的内核里。 内核版本:Linux-3.4.2 官方网卡驱动版本:2.09 1、DM900C连接方式 DM90
阅读全文
posted @
2020-11-29 19:16
quinoa
阅读(577)
推荐(0)
Linux 网卡驱动程序
摘要:学习目的: 熟悉Linux网卡驱动基本框架以及驱动程序编写步骤 实现一个虚拟网卡驱动程序 1、概述 网卡工作在OSI的最后两层,物理层和数据链路层,主要是负责收发网络的数据包,它将网络通信上层协议传递下来的数据包以特定的媒介访问控制方式进行发送,并将接收到的数据包传递给上层协议。在知道了网卡的工作内
阅读全文
posted @
2020-11-22 17:49
quinoa
阅读(5568)
推荐(1)
NOR Flash驱动程序
摘要:前面学习了Linux内核中Nand Flash驱动程序的编写,现在继续学习如何编写NOR Flash驱动程序,在编写自己的NOR Flash驱动前,我们还是先来弄清楚NOR Flash驱动程序编写的框架。 我们知道在MTD系统层次下,Flash硬件驱动通过mtd_info结构体和上层的设备层进行交互
阅读全文
posted @
2020-11-21 23:34
quinoa
阅读(1000)
推荐(0)
Nand Flash驱动程序
摘要:学习目的 掌握Nand Flash驱动程序的编写 通过前面对MTD系统层次进行分析,理清了内核中MTD系统框架。内核MTD系统已经实现了设备节点、MTD设备层、MTD原始设备层构建,并预留接口用于硬件驱动层的注册。驱动程序编写者只需完成硬件相关的操作,如提供硬件初始化和访问函数、填充mtd_info
阅读全文
posted @
2020-11-18 20:34
quinoa
阅读(654)
推荐(0)
Linux MTD系统层次分析
摘要:学习目的: 分析Linux内核中MTD系统层次,为后面编写Nand Flash、NOR Flash驱动打下基础 前面我们实现了用内存模拟磁盘的块设备驱动程序,由于操作的是内存,优化合并后的bio请求在队列请求处理函数中被取出后,可直接根据请求数据传输方向、大小使用memcpy完成数据读写。但像Nan
阅读全文
posted @
2020-11-16 00:43
quinoa
阅读(1719)
推荐(1)
块设备驱动程序—内存模拟磁盘
摘要:前面在Linux块设备驱动程序的引入一节,通过例子讲述了块设备驱动程序引入的原因,并从文件系统和设备层之间入口函数ll_rw_block开始分析,层层递进,理清了I/O调度层到块设备驱动之间的调用关系,最后根据这些关系,参考内核drivers\block\acsi.c设备驱动,总结出来注册块设备驱动
阅读全文
posted @
2020-11-08 09:20
quinoa
阅读(958)
推荐(0)
Linux块设备驱动程序的引入
摘要:1、块设备驱动引入 前面学习了字符设备驱动程序的编写,在字符设备驱动程序中,open、read等系统调用最终访问到驱动程序中注册的file_operations结构体提供的xxx_open、xxx_read成员函数,从而实现了对硬件的访问。字符设备这种访问机制在对设备发出读/写请求时,实际的硬件I/
阅读全文
posted @
2020-11-05 23:54
quinoa
阅读(613)
推荐(0)
Linux USB鼠标驱动程序编写
摘要:学习目的: 编写usb鼠标驱动程序,模拟l、s、enter按键值按下 前面对Linux中USB层次进行了简单分析,了解到内核中USB驱动分为两类:USB主机控制器驱动程序(Host Controller Driver)、USB设备驱动程序(USB device drivers)。USB主机控制器驱动
阅读全文
posted @
2020-11-03 22:20
quinoa
阅读(1190)
推荐(0)
Linux USB驱动层次分析
摘要:1、USB驱动层次简介 Linux内核中USB驱动程序分为两类:USB主机控制器驱动程序(Host Controller Driver)、USB设备驱动程序(USB device drivers),它们在内核中的USB驱动的层次关系,如下图所示: 由上图可以看出,内核中的USB驱动层次可以分为三层。
阅读全文
posted @
2020-11-02 23:26
quinoa
阅读(1303)
推荐(1)
USB基本概念介绍
摘要:1、什么是USB USB是Universal Serial Bus的缩写,翻译为中文就是通用串行总线。在USB出现之前,计算机领域已经存在很多的接口,这些接口互相都有自己的应用领域,并且之间互不兼容,用户为了使用不同的应用,需要配置不同的硬件接口。USB的出现就是为了解决这些问题,通过单个的USB接
阅读全文
posted @
2020-10-29 22:15
quinoa
阅读(4087)
推荐(1)
tslib库的移植以及"selected device is not a touchscreen I understand"问题解决
摘要:tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。前面已经编写了LCD和触摸屏的驱动程序,现在开始移植tslib库对我们编写的LCD驱动和触摸屏驱动进行测试 实验环境:内核版本:linux-3.2.4
阅读全文
posted @
2020-10-24 01:19
quinoa
阅读(1518)
推荐(0)
触摸屏驱动程序
摘要:学习目的: 使用输入子系统框架,编写触摸屏驱动程序 触摸屏被按下时,横坐标和纵坐标方向都会产生相应的电压信号,经过ADC采样可以获取电压值。将获取的电压值和屏幕物理尺寸进行转换后就能获取被按下点的坐标位置,可以看出触摸屏也属于是输入子系统的范畴。在前面已经分析过了输入子系统的框架,并使用输入子系统实
阅读全文
posted @
2020-10-22 00:13
quinoa
阅读(1498)
推荐(0)
LCD驱动程序之代码编写
摘要:学习目的: 实现LCD驱动程序编写 前面通过对linux内核中LCD的驱动框架进行了分析,弄清楚了内核中LCD的驱动框架,通过分析知道内核中已经在fbmem.c文件中注册了LCD这一类设备的字符设备驱动,向上实现了上层通用的访问接口,向下给驱动设计者预留了fb_info注册接口。现在基于我们的开发板
阅读全文
posted @
2020-10-20 22:35
quinoa
阅读(897)
推荐(0)
LCD驱动程序之框架分析
摘要:学习目的: 分析linux中LCD的驱动框架 市面上大多数消费类的电子产品都带有炫酷的图形界面,大到智能手机、电脑,小到手表、手环,图形画给人们生活带来了良好的体验。实现图像界面的前提是设备都有一块可用于显示的屏幕,LCD就是广泛运用于显示的一种屏幕,今天我们就开始学习linux内核中LCD的驱动框
阅读全文
posted @
2020-10-18 22:02
quinoa
阅读(579)
推荐(0)
linux-platform机制实现驱动程序分离
摘要:学习目的: 理解内核分层、分离设计思想 使用内核platform机制编写驱动程序,实现硬件和驱动分离 1、软件分层、分离思想引入 将软件进行分层、分离设计应该是软件工程中最基本的一个思想,前面分析的linux输入子系统的框架就是基于软件分层、分离的思想设计的,今天学习的platform,基于总线-设
阅读全文
posted @
2020-10-17 11:52
quinoa
阅读(663)
推荐(0)