linux device driver and kernel
文章平均质量分 92
sydnash
这个作者很懒,什么都没留下…
展开
-
NAPI的一些知识
NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据,(类似于底半(bottom-half)处理模式);从我们在实验中所得到的数据来看,在随着网络的接收速度的增加,NIC 触发的中断能做到不断减少,目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用,驱动层次上已经有 E1000 系列网卡,RTL8139 系列网卡,3c50X 系列等主流的网络适配器都采用了这个技术,而在网转载 2010-12-22 11:14:00 · 1020 阅读 · 0 评论 -
virtual address,logical address,physical address add linear address
<br /><br /> But coming to kernel they distinguish logical address from virtual<br />> address. What is the main difference.<br /><br />kernel logical address has linear (one-to-one) mapping of physical<br />address to virtual address range. e.g. kernel lo原创 2011-02-16 14:37:00 · 3472 阅读 · 1 评论 -
Linux I2C核心、总线与设备驱动
<br />Linux I2C核心、总线与设备驱动<br />本章导读<br />I2C总线仅仅使用SCL、SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用。因此,I2C总线被非常广泛地应用在EEPROM、实时钟、小型LCD等设备与CPU的接口中。<br />Linux定义了系统的I2C驱动体系结构,在Linux系统中,I2C驱动由3部分组成,即I2C核心、I2C总线驱动和I2C设备驱动。这3部分相互协作,形成了非常通用、可适应性很强的I2C框架。<br />本章第1转载 2011-02-16 14:14:00 · 898 阅读 · 0 评论 -
基于V4L2的驱动及应用程序开发
<br />V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。<br />1、常用的结构体在内核目录include/linux/videodev2.h中定义<br /> struct v4l2_requestbuffers //申请帧缓冲,对应命令VIDIOC_REQBUFS <br /> struct v4l2_capability // 视频设备的功能,对应命令VIDIOC_QUERYCAP <br /> struct转载 2011-01-18 14:02:00 · 945 阅读 · 0 评论 -
linux中的高端低端内存以及逻辑虚拟地址
内存在内核中以页表示,页对应的是物理内存,而不是虚拟内存。 由于体系结构的关系,内核并不能对所有页一视同仁,因此就有了不同的区。 ZONE_DMA 这个区包含的页能够用来执行DMA操作。 ZONE_NORMAL 这个区包含的都是能正常映射的页。 ZONE_HIGHMEM 这个区包含“高端内存”,其中的页不能永久地映射到内核地址空间,在申请这部分地址的时候,只能用返回page*指针的内存分配函数,同时,如果要是用它,必原创 2011-01-17 20:06:00 · 2408 阅读 · 3 评论 -
netlink编程
<br /> <br />http://blog.csdn.net/max415/archive/2008/02/01/2076814.aspx原文出处<br />在 linux学习 2.4 版以后版本的内核中,几乎全部的中断过程与用户态进程的通信都是使用 netlink 套接字实现的,同时还使用 netlink 实现了 ip queue 工具,但 ip queue 的使用有其局限性,不能自由地用于各种中断过程。内核的帮助文档和其他一些 linux学习 相关文章都没有对 netlink 套接字在转载 2011-01-17 15:08:00 · 1937 阅读 · 0 评论 -
]Linux 用户态与内核态的交互 ——netlink 篇
<br />size=4]Linux 用户态与内核态的交互 <br /> ——netlink 篇[/size] <br /><br /> 作者:Kendo <br /> 2006-9-3 <br /><br /> 这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载: <br /> http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.转载 2011-01-17 15:06:00 · 1023 阅读 · 0 评论 -
linux内核I2C体系结构(注意结构体原型)
<br /><br />http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916234.html<br />一、概述<br />谈到在linux 系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。<br />第一种方法的好处(对应第二种方法的劣势)有:<br /> ● 思路比较直接,不需要花时间去了解linux内核转载 2011-01-18 08:33:00 · 1099 阅读 · 0 评论 -
usb_buffer_alloc函数
<br /> <br /> void *usb_buffer_alloc (struct usb_device *dev, size_t size, gfp_t mem_flags, dma_addr_t *dma);<br />这个函数是usbcore提供的.从名字上就能知道它是用来申请内存的,内核中给出了一些介绍。<br />* usb_buffer_alloc - allocate dma-consistent buffer for URB_NO_xxx_DMA_MAP<br /> * @dev原创 2010-12-30 09:37:00 · 5678 阅读 · 0 评论 -
linux字符设备 cdev
<br /> 看了有那么长时间的linux device driver了,看起来感觉不过如此,总想写点东西实践一下,可惜一直不知道如何下手,今天终于下定决心了,不说废话 先把程序贴上分析下。<br /> <br /> <br /> #include <linux/moduleparam.h> <br />内核允许对驱动程序在加载的时候传递参数,在编写内核程序的时候。要在代码中用宏module_param来指定接受的参数名,而这个宏在<linux/moduleparam.h>中的定义如下<br原创 2010-12-26 20:46:00 · 1403 阅读 · 1 评论 -
USB和video for linux驱动
最近准备深入研究一下USB驱动和video驱动,有相同兴趣的朋友可以给我对提提意见。 欢迎高手指点一些linux下USB和video驱动方面的书籍,谢谢。 先看看zc301的驱动 准备。原创 2010-12-23 23:05:00 · 1033 阅读 · 0 评论 -
内核定时器的使用
内核定时器的使用LINUX内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 和 kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是处于非进程的上下文中,所以调度函数必须遵守以下规则:1) 没有 current 指针、不允许访问用户空间。因为没有进程上下文,相关代码和被中断的进程没有任何联系。2) 不能执行休眠(或可能引起休眠的函数)和调度。3) 任何被访问的数据结构都应该针对并发访问进行保护,以防止竞争条转载 2010-12-22 10:34:00 · 748 阅读 · 0 评论 -
Cortex-a8 arm11 arm9 xscale powerpc 嵌入式处理器实测性能
Cortex-a8 arm11 arm9 xscale powerpc 嵌入式处理器实测性能<br /><br /><br /><br />嵌入式处理器层出不穷,系列和种类繁多。经常在嵌入式产业界见到的处理器,仅指令集家族就有x86,arm,powerpc,mips,sh等。每 种指令集往往又有很多系列,下面还有不同版本,甚至同一版本有不同芯片厂家实现产品。这还不够,再加上不同的主频、总线结构、存储器cache配置,即使 在行业里打拼多年的专业人士也难免眼花缭乱。<br />所以,经常有人会问:200M转载 2011-04-21 10:44:00 · 2233 阅读 · 0 评论