Linux Driver
国境之南Fantasy
Coder
展开
-
request_irq()、free_irq()
request_irq()、free_irq()request_irq()、free_irq() 这是驱动程序申请中断和释放中断的调用。在include/linux/sched.h里声明。 request_irq()调用的定义: int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, st转载 2012-04-27 15:23:42 · 1514 阅读 · 0 评论 -
linux下DMA驱动测试代码
DMA传输可以是内存到内存、内存到外设和外设到内存。这里的代码通过dma驱动实现了内存到内存的数据传输。/*Function description:When we call dmatest_read(),it will transmit src memory datato dst memory,then print dst memory data by dma_callback_转载 2015-12-09 15:42:54 · 4936 阅读 · 2 评论 -
DMA驱动框架流程编写
本文主要是针对Xilinx DMA驱动流程框架编写DMA驱动一致性和流式的基本认识一致性DMA与流式DMA主要是内存的申请方式和访问控制权限不一样一致性DMA内存申请:void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp);流式DMA内存申请:d转载 2015-12-09 15:24:50 · 2777 阅读 · 1 评论 -
linux总线驱动之DMA传输
最早接触DMA的时候是大三的微机原理,当时不是很理解,什么DMA模式啊,只知道是传输速度快,不经过CPU,但是到底是怎么样的不经过CPU呢?还是不理解。这次I2C控制器里面带了DMA的模式,所以有机会去接触下了。 而具体的DMA的意思是什么http://baike.baidu.com/view/32471.htm,百度百科里还是不错的。 DMA的工作过程:转载 2015-12-09 15:15:53 · 2725 阅读 · 0 评论 -
I2C驱动
一:I2C 概述I2C是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。因此,I2C总线被非常广泛地应用在EEPROM,实时钟,小型LCD等设备与CPU的接口中。二:在linux下的驱动思路谈到在linux系统下编写I2C驱动,目前主要有两种方法,一种是把I2转载 2011-11-18 09:46:08 · 743 阅读 · 0 评论 -
linux内核分析笔记----块I/O层
如果您记性好的话,应该记得我在linux设备驱动实例帖中说的最多的就是字符设备驱动程序,那么今天的块I/O层是一个和字符设备驱动相对应的设备。两者最根本的区别就是看它们能否被随机访问,换句话说就是看它们能否在访问设备时从一个位置随意地调到另外一个位置,如果可以就是块设备,否则就字符设备。 块设备中最小的可寻址单元是扇区。扇区的大小一般是2的整数倍,最常见的大小是512个字节。扇区转载 2011-12-20 11:57:57 · 711 阅读 · 0 评论 -
http://bbs.21ic.com/icview-102333-1-1.html
设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式,可以把CPU分成两大类。一类CPU(如M68K,Power PC等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以,这种CPU没有专门用于设备I/O的指令转载 2012-06-04 19:54:22 · 1476 阅读 · 0 评论 -
ioremap()
offset: 物理空间(I/O设备上的一块物理内存)的起始地址size: 物理空间的大小给一段物理地址(起始地址offset)建立页表(地址映射)--------------------------------------------------static inline void __iomem * ioremap(unsigned long offset, unsig转载 2012-06-04 19:48:19 · 920 阅读 · 0 评论 -
ioremap函数原理
void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) 入口: phys_addr:要映射的起始的IO地址; size:要映射的空间的大小; flags:要映射的IO空间的和权限有关的标志; 功能: 将一个IO地址空间映射到内核的虚拟地址空间上去,便于访问;转载 2012-06-04 19:51:44 · 958 阅读 · 0 评论 -
ethtool 在 Linux 中的实现框架和应用
Linux 的一个显著特点就是其强大的网络功能,Linux 几乎支持所有的网络协议,并在这些协议基础上提供了丰富的应用。对 Linux 网络管理的重要性不言而喻,这些管理依赖于网络工具,比如最常用的 ifconfig,route,ip,ethtool 等,其中 ethtool 提供了强大的网卡及网卡驱动管理能力,其具体的实现框架和网络驱动程序及网络硬件关系紧密,容易修改和扩展,能够为 Linux转载 2015-12-02 10:21:01 · 1117 阅读 · 0 评论