- 博客(37)
- 收藏
- 关注
转载 Linux网络性能优化方法简析
对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能的优化则可基于这 3 条路径来考虑。由于数据包的转发一般是具备路由功能的设备所关注,在本文中没有叙述,读者如果有兴趣,可以自行学习(在 Linux 内核中,分别使用了基于哈希的路由查找和基于动态 Trie 的路由查找算法)。本文集中于发送路径和接收路径上的优化方法分析,其中的 NAPI 本质上是接
2012-01-04 14:30:21
731
转载 NAPI 技术在 Linux 网络驱动上的应用和完善
简介: NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以 POLL 的方法来轮询数据,类似于底半方式(bottom-half 的处理模式);但是目前在 Linux 的 NAPI 工作效率比较差,本文在分析 NAPI 的同时,提供了一种高效的改善方式供大家参考。 前言:NAPI 是 Linux 上采用的一种提高网络处理效
2012-01-04 14:27:35
830
转载 网卡发送与接收数据包
网卡如何发送数据包:IP报文可以看作一个包。linux网卡驱动程序,将IP包添加14字节的MAC包头,构成MAC包。MAC包中含有发送端和接收端的MAC地址信息。既然是驱动程序创建的MAC包头信息,当然可以随便输入地址信息的。主机伪装就是这么实现的。驱动程序将MAC包拷贝到网卡芯片内部的缓冲区,就算完事了。有网卡芯片接手处理。网卡芯片对MAC包,再次封装成物理帧,添加头部同步信
2012-01-04 14:07:42
2538
转载 linux网卡驱动对网卡类型的依赖性
前面我们对网卡的各种类型进行了描述,不同的网卡如何开发相应的linux驱动呢?有没有一个捷径,或者统一的标准,让我们一学就会,快速上手呢? 很遗憾,这么多的分类使用的技术各不相同,无法用一个统一的开发模版!因此,开发网卡驱动需要有侧重点的实现。 同时需要补充的一点,前面列举的网卡都是eth(以太网)卡,对于令牌网卡等不做介绍。读者可以自行领悟。1。开发网卡驱动的首要因
2012-01-04 14:03:14
1249
转载 网卡的分类
有线网卡的分类1. 按总线接口类型分 按网卡的总线接口类型来分我们一般可分为早期的ISA接口网卡、PCI接口网卡。目前在服务器上PCI-X总线接口类型的网卡也开始得到应用,笔记本电脑所使用的网卡是PCMCIA接口类型的。(1)ISA总线网卡 这是早期的一种的接口类型网卡,在上世纪80年代末,90 年代初期几乎所有内置板板卡都是采用ISA总线接口类型,一直到上世纪90
2012-01-04 14:00:08
7801
转载 分析skb和网卡驱动的关系
网卡驱动所能看到的仅仅是MAC帧,MAC帧独立于任何上层协议,仅仅属于数据链路层。以太网为例,DM9000作为设备。1.发送的skb是什么样?(内核决定)发送的MAC帧格式: PR| SD | DA |SA |TYPE | IP packet | FCS红色的内容,是驱动程序需要提供的MAC帧内容,黑色的部分由DM9000网卡自动填充进去。DM9000的发送函数
2012-01-04 13:54:18
900
转载 Linux网络驱动程序编写
一.Linux系统设备驱动程序概述 1.1 Linux设备驱动程序分类 1.2 编写驱动程序的一些基本概念 二.Linux系统网络设备驱动程序 2.1 网络驱动程序的结构 2.2 网络驱动程序的基本方法 2.3 网络驱动程序中用到的数据结构 2.4 常用的系统支持 三.编写Linux网络驱动程序中可能遇到的问题 3.1 中断共享 3.2 硬件发送忙时的处理
2012-01-04 13:52:37
731
转载 DM9000驱动解析
/* * dm9000.c: Version 1.2 03/18/2003 * * A Davicom DM9000 ISA NIC fast Ethernet driver for Linux. * Copyright (C) 1997 Sten Wang * * This program is free software; you can re
2012-01-04 13:50:01
979
转载 dummy网卡驱动解析
dummy是linux下虚拟网卡驱动,注意这里是泛指网卡而不是以太网卡!!为什么强调这一点呢?对于以太网卡,内核有更高级的接口可用。linux-2.6.22/drivers/net/dummy.c dummy网卡描述: dummy网卡是内核虚拟出来的网卡,没有任何实际用途,仅仅作为开发网卡驱动的参考。本驱动只提供一个网卡接口,可以修改numdummies的值增加网卡
2012-01-04 13:47:37
6558
转载 struct net_device结构体解析
/* * The DEVICE structure. * Actually, this whole structure is a big mistake. It mixes I/O * data with strictly "high-level" data, and it has to know about * almost every data structure used
2012-01-04 13:45:53
1247
转载 以太网MAC和PHY
问:如何实现单片以太网微控制器?答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件。这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积。单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下。问:以太网MAC是什么?答:MAC就是媒体接入控制器。以太网MAC由IEEE-802.3以太网标准
2012-01-04 11:44:00
607
转载 认识网卡
一、什么是网卡? 网卡现在已经上成为了目前电脑里的标准配置之一。小小的网卡,究竟蕴涵着多少秘密呢?让我们一起来看。 我们最常用的网络设备当属网卡了。网卡本身是LAN(局域网)的设备,通过网关、路由器等设备就可以把这个局域网挂接到Internet上。而Internet本身就是无数个这样的局域网组成的。 网卡有许多种,按照数据链路层控制来分有以太网卡,令牌环网卡,ATM网
2012-01-04 11:40:43
749
转载 Linux设备驱动子系统第二弹 - SD卡
1. 总论2. 主控制器3. 协议层4. 块设备1. 总论 1.1 概念MMC - MultiMedia Card SD - Secure Digital Card 1.2 分类按存储大小,普通SD卡(2GB,按体积大小,普通SD卡,mini-SD卡,micro-SD卡(TF卡) 1.3 速度默认模式: 12.5MB/s 高速模式: 2
2012-01-03 17:35:00
1484
2
转载 Linux设备驱动子系统第一弹 - I2C
1. Overview2. Data Structure3. Adapter4. I2C-core5. Slave Device 1. Overview 1.1 Definition I2C Inter-Integrated Circuit SMBUS System Management Bus, the I2C subse
2012-01-03 17:31:54
977
1
转载 Android Sensor传感器系统架构初探
1. 体系结构2. 数据结构3. 四大函数本文以重力感应器装置G-sensor为例探索Android的各层次结构。1. 体系结构 Android的体系结构可分为4个层次。第一层次 底层驱动层,包括标准Linux,Android核心驱动,Android相关设备驱动,G-sensor的设备驱动程序即存在于此 第二层次 Android标准C/C++库,包括硬件
2012-01-03 17:26:40
1029
1
转载 [转]浅析linux内核中的idr机制
这里idr是否是ID RADIX缩写,就是说将ID组织到了一棵RADIX树中. idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制。这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁。现在,在内核的很多地方都可以找到idr的身影。idr机制适用在那些需要把某个整数和特定指针关联在一起的
2012-01-03 17:20:18
508
转载 Linux查看网络流量的脚本
通过本脚本,发现bash确实在算术运算方面比老的shell要强大,不过bash中的for语句功能和c中差异比较大.程序是写给用户用的,而你不懂脚本,不会shell,perl,python,php,tcl中一个,OK,那你肯定是windows骨灰级加发烧友了.我不鄙视你,你自己羞愧去吧,放心你撞墙or跳楼我都不会拉的.OK,just for fan!!!# cat s
2012-01-03 17:17:24
1118
转载 分析Android 根文件系统启动过程(init守护进程分析)
今天开始分析Android 根文件系统启动过程。在Android系统启动时,内核引导参数上一般都会设置“init=/init”,这样的话,如果内核成功挂载了这个文件系统之后,首先运行的就是这个根目录下的init程序。这个程序所了什么呢? 我们只有RFSC(Readthe Fucking Source code)!!init程序源码在Android官方源码的system/core/ini
2012-01-03 17:07:51
625
转载 Android如何生成设备节点
在Android中,由于没有mdev和udev,所以它没有办法动态的生成设备节点,那么它是如何做的呢?我们可以在system/core/init/下的init.c和devices.c中找到答案:init.c中int main(int argc, char **argv) { ... /* Get the basic filesystem setup we ne
2012-01-03 17:06:17
1061
转载 Android设备节点的动态管理
Android设备节点的动态管理在Android中,没有独立的类似于udev或者mdev的用户程序,这个功能集成到了init中做了。代码见:system/core/init/init.c文件,如下:if (ufds[0].revents == POLLIN)handle_device_fd(device_fd);其中handle_device_fd(device_fd)函数在sys
2012-01-03 17:01:03
1352
转载 Android 拍照时开启(调用)闪光灯
//mCamera为Camera对象,下面的是拍照方法。 mCamera.takePicture(null, null, null, jpegCallback); //拍照时,开启闪光灯 Camera.Parameters parameters = mCamera.getParameters(
2012-01-03 16:54:50
2799
1
转载 android camera
public classCameraextends Object 本类主要用于和 camera service 建立及断开连接、设置拍照功能 、开启及关闭 预览 、拍照、检索 frames编码成 video 。本类没有默认的构造函数,你可以通过 open() 函数获得一个 Camera 对象。 首先要使用硬件 camera ,必须要在 manifest 文件中声明
2012-01-03 16:53:43
2426
1
转载 Android获取摄像头详细信息
核心提示: 如何获取Android设备上的详细的摄像头信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置摄像头,获取Android摄像头的详细信息,Android获取摄像头详细信息,在Android 2.3 SDK中得到了增强:在android.hardware.Camera类中,API Level 9的S如何获取Android设备上的详细的摄像头信息呢? 目前Sams
2012-01-03 16:52:04
2627
转载 Android Camera模块分析
Android应用程序编程语言是JAVA,而linux的很多服务程序,包括一些libraries都是用c 或者c++写的,应用程序使用什么样的机制去调用这些系统函数的呢?Java的虚拟机可以通过 System.loadLibrary 来加载本地库,也可以通过JNI函数 RegisterNatives来注册与类相关联的本地方法。在Android中对于一些底层平台相关的native函数大多采用注册关联
2012-01-03 16:51:02
1027
转载 Android Camera的接口与架构介绍
第一部分 Camera概述 Android的Camera包含取景器(viewfinder)和拍摄照片的功能。目前Android发布版的Camera程序虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在Android的进程间通讯Binder的结构上。 以开源的Android为例,Camera的代码主要在以下的目录中: Camera的JAVA程序的路径: pack
2012-01-03 16:50:10
1189
转载 Android Camera 架构简析
Android Camera 结构简析1. 前言最近整体看了一下Android Camera 部分代码,从Framework 的Camera 应用框架到 Hardware的Camera HAL 再到 Kernel 的 Camera Driver 。把对Camera 部分的学习整理成笔记,方便理解。2. 概述 要了解Android Camera 架构,还是得先从Andro
2012-01-03 16:47:04
1276
转载 Android平台上使用属性系统(property system)
一、Property系统简介属性系统是android的一个重要特性。它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。每个属性是一个键值对(key/value pair),其类型都是字符串。从功能上看,属性与windows系统的注册表非常相似。许多android应用程序和库直接或者间接地依赖此特性,以决定它们的运行时行为。例如,adbd进程查询属性服务已确认当前是否运行在
2012-01-03 16:38:19
527
转载 Android Property System | Android属性系统
属性系统是android的一个重要特性。它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。每个属性是一个键值对(key/value pair),其类型都是字符串。 从功能上看,属性与windows系统的注册表非常相似。许多android应用程序和库直接或者间接地依赖此特性,以决定它们的运行时行为。例如,adbd进程查询属性服务已确认当前是否运行在模拟器环境中。
2012-01-03 16:36:07
430
转载 EABI还是GNU/Linux:如何正确选择合适的交叉工具链
我们自己可以编译制作一个交叉编译工具链(Cross-compile Toolchain)来用,但为了方便、稳定起见,我们大多数时候会去选择成熟的第三方工具链。codesourcery的交叉工具链是很常见的一种,以ARM为例,我们可以从http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite处下载到最
2012-01-03 16:26:28
482
转载 基于I2C的嵌入式多点触摸屏幕驱动设计
基于I2C的嵌入式多点触摸屏幕驱动设计 摘要:采用了三星公司的S3C6410X处理器,通过嵌入式Linux的驱动管理系统实现了对Cypress 7958、Snaptics TM1444等基于I2C总线协议的多点触摸屏幕的驱动设计。实践证明,在基于Linux核心的Qtopia平台以及Andriod嵌入式操作系统上运行流畅,识别度与准确度很高。 引言 随着嵌
2011-11-21 16:55:38
794
转载 Android多点触摸的实现
第一章 摘要 在Linux内核支持的基础上,Android 在其 2.0 源码中加入多点触摸功能。由此触摸屏在 Android的 frameworks被完全分为 2 种实现途径:单点触摸屏的单点方式,多点触摸屏的单点和多点方式。 第二章 软件位 在Linux的input.h中,多点触摸功能依赖于以下几个主要的软件位:……
2011-11-21 16:42:49
2200
转载 Android 多点触摸接口
简介 为了使用功能强大的多点触控设备,就需要一种方案去上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。使用说明 单点触摸信息是以ABS承载并按一定顺序发送,如BTN_TOUCH、ABS_X、ABS_Y、SYNC。而多点触摸信息则是以ABS_MT承载并按一定顺序发送,如ABS_MT_POSITION_X、ABS_MT
2011-11-21 16:18:28
689
转载 中断中处理延时及一些函数的调用规则(中断调i2c驱动有感)
1,中断处理程序中不能使用有睡眠功能的函数,如ioremap,kmalloc,msleep等,理由是中断程序并不是进程,没有进程的概念,因此就没有休眠的概念;2,中断处理程序中的延时可以用忙等待函数来代替,如ndelay,udelay,mdelay等,这些函数在实现上本质是根据CPU频率进行一定次数的循环;最好不要使用mdelay,因为毫秒延时对内核来说已经是非常大了。但是在中断处理程序中使用
2011-11-21 16:10:01
2517
1
转载 dd命令详解
一、dd命令的解释。dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2参数:1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。2. of=文
2011-08-12 11:24:44
740
转载 Linux内核通知链notifier
Linux内核通知链notifier 1.内核通知链表简介(引用网络资料) 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够
2011-07-28 16:13:29
2145
转载 linux开机logo 和 android开机logo 的修改
一.设置LINUX内核启动LOGO 1、让内核支持启动LOGO 在内核目录中 make menuconfig Device Drivers ----> Graphics support ----> 选中 Bootup
2011-07-16 17:01:02
7309
2
转载 linux i2c
1 Linux I2C驱动架构Linux下I2C驱动的架构图如下: 图1.1 Linux下I2C驱动架构 如上图所示,每条I2C总线会对应一个adapter,而每条I2C总线上则可以有多个 client,在linux kernel中,通过I2C core层将I2C client与I2C adapter关联起来,Linux 中I2C驱动代码位于drivers/i2c目录。 Linux中
2011-07-01 16:30:00
4203
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人