Linux驱动
时行居正
拙则勤,行则易
展开
-
通用块设备驱动程序框架分析
1 引言 驱动程序可发分为三大类型:字符设备驱动程序、块设备驱动程序和网络设备驱动程序。块设备和字符设备驱动在IO操作方面的区别还包括:(1)块设备驱动程序特点是通常以块(Sector)为单位的IO操作如Flash、磁盘等存储介质,而字符设备则大多数以字节为单位。(2)字符设备只能被顺序读定,而块设备可以随机访问。(3)块设备相对于IO请求有对应的缓冲区,而且缓冲区的数据到具体设备上并非原创 2016-02-14 20:56:53 · 1949 阅读 · 0 评论 -
ARM9时钟体系结构
本文主要介绍AT91RM9200以及S3C2440处理器的时钟体系结构。0 概要 处理器的时钟源都是外部晶振振荡器产生的,有12MHz也有18MHz的(当然通常情况下外部还会挂接一个数百KHz的晶振,它是RTC所需),但无论是何种都不可能满足ARM核的数百兆赫兹的工作频率(关于各种ARM核的工作频率见附0)。因此需要通过芯片内部的锁相环电路产生更高的工作频率,产生的工作频率再经原创 2016-11-01 16:00:14 · 4195 阅读 · 0 评论 -
[转] ioctl的命令cmd构造详解
转自:http://blog.csdn.net/helloanthea/article/details/25330809。0 前言之前对ioctl的cmd认知是:只要保证应用程序传入的与驱动程序定义的cmd一致即可。但是最近在开发某驱动程序过程中发现不是如此。当试图传入的命令字是0x0000_0002时,出现了Bad Address的错误,而且根本没有进入驱动程序定义的ioctl方法(转载 2016-10-08 15:11:32 · 2852 阅读 · 0 评论 -
[转]如何打开pr_debug调试信息
转自:http://blog.csdn.net/helloanthea/article/details/25330809。 如何打开pr_debug调试信息,先不要着急,我们先静下心来分析一下这个函数的源代码。以DMA的调试为例,先来看看一个pr_debug函数调用。pr_debug("%s: %s (%s)\n", __func__,转载 2016-10-08 11:25:49 · 6194 阅读 · 0 评论 -
基于AM335X的EDMA 驱动程序开发
0 简介 EDMA即TI自定义的加强版DMA数据传输模式,经过简单的了解,本质上它设计一种非常高效的可以合并多次DMA传输的模式。1 协议简介 协议的简单介绍可以参考http://blog.chinaunix.net/uid-28818752-id-3749701.html和http://blog.chinaunix.net/uid-24567872-id-31原创 2016-10-08 10:53:51 · 4186 阅读 · 0 评论 -
网卡驱动之02驱动源码分析
0 环境内核:经过xilinx基于zynq平台定制的4.4.0系内核;硬件:zynq芯片,其中mac contorller是使用Cadence的IP核,phy芯片使用提marvell的1116R芯片;设备树:如下表所示,定义了phy芯片与mac controller;ethernet@e000b000 { compatible = "cdns,zynq-g原创 2016-11-09 12:24:34 · 6504 阅读 · 2 评论 -
网卡驱动之01硬件及协议介绍
在此之前,本人对网卡的理解局限于平台上的PHY芯片或者MAC芯片,甚至认为是相同的东西以至于在在开发驱动程序追踪内核代码时,总是傻傻分不清。本文旨在通过介绍硬件常识以达到更好的理解驱动代码。0 PHY 与 MACTCP/IP协议栈分为五层,其中自顶向下的前三层(应用层、传输层和网络层)都是软件实现的概念(集成在操作系统软件中)。而后两层,则有相应的硬件控制器实现,通常链路层的芯片集成在处理转载 2016-11-08 13:08:35 · 3111 阅读 · 0 评论 -
Linux链表操作
在研究linux内核自带的dmatest.c驱动程序过程中发现有部分的链接操作,非常迷惑,故在此记录下来一些查阅资料后的心得体会。0 内核链表的特点 普通的链表操作,通常包含数据域和指针域2个内容 如下所示。typedefstruct node{ ElemType data; //数据域 struct node原创 2016-08-23 23:08:54 · 3164 阅读 · 0 评论 -
译:DMA-API-HOWTO.txt(待完善)
Dynamic DMA mapping Guide ========================= David S. Miller Richard Henderson Jakub Jelinek This is a guide to device driver writers onhow to翻译 2016-08-15 17:58:24 · 1691 阅读 · 0 评论 -
Linux内核同步机制之(四):spin lock[转]
内容转自蜗窝科技-http://www.wowotech.net/kernel_synchronization/spinlock.html,并进行适当地排版。0 前言在linux kernel的实现中,经常会遇到这样的场景:共享数据被中断上下文和进程上下文访问,该如何保护呢?如果只有进程上下文的访问,那么可以考虑使用semaphore或者mutex的锁机制,但是现在中断上下文也参和进来,那转载 2016-03-08 22:39:56 · 1000 阅读 · 0 评论 -
Paltform总线与其它总线框架的关系探究
在学习驱动的过程中,学习过Platform、I2C、SPI、USB等总线架构,对于Platform总线的理解是在书藉(宋宝华的《Linux设备驱动详解》)上所述的“一个现实的Linux设备和驱动通常需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的设备而言,这自然不是问题。但是在嵌入式系统里面,在SOC系统中集成的独立控制器、挂接在SOC内存空间的外设等却不依附于此类总线。基于原创 2016-02-06 18:42:40 · 1647 阅读 · 0 评论 -
关于SpinLock的更深入理解
0 前言 之前转载过一篇阐述spin_lock的博文,但始终理解不深入,记忆不深刻。今天,花了半天阅读完LDD3的相关章节,有种顿悟的感觉,遂简要记下自己的理解。Btw,LDD3真心是字字珠玑,没有半句废话,而且从这边书可以看出外国人写书非常注重前后的呼应,而国内大多数书都是就事论事,没有体系的感觉,也难以启发人深入思考。(一不小心又吐嘈了一遍,罪过罪过……)另外,关于LDD3原创 2016-12-06 23:24:59 · 7823 阅读 · 4 评论